Skip to content

Commit

Permalink
refactor: rollback
Browse files Browse the repository at this point in the history
  • Loading branch information
hoank101 committed Mar 4, 2024
1 parent 4f02037 commit 836ce9f
Show file tree
Hide file tree
Showing 7 changed files with 169 additions and 1 deletion.
48 changes: 48 additions & 0 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,8 @@ import (
wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
appparams "github.com/White-Whale-Defi-Platform/migaloo-chain/v4/app/params"

v4 "github.com/White-Whale-Defi-Platform/migaloo-chain/v4/app/upgrades/v4_1_0"

// unnamed import of statik for swagger UI support
_ "github.com/cosmos/cosmos-sdk/client/docs/statik"
)
Expand Down Expand Up @@ -1117,6 +1119,52 @@ func RegisterSwaggerAPI(rtr *mux.Router) {

// Setup Upgrade Handler
func (app *MigalooApp) setupUpgradeHandlers() {
// !! ATTENTION !!
// v4 upgrade handler
// !! WHEN UPGRADING TO SDK v0.47 MAKE SURE TO INCLUDE THIS
// source: https://github.com/cosmos/cosmos-sdk/blob/release/v0.47.x/UPGRADING.md#xconsensus
app.UpgradeKeeper.SetUpgradeHandler(
v4.UpgradeName,
v4.CreateUpgradeHandler(
app.mm,
app.configurator,
app.IBCKeeper.ClientKeeper,
app.ParamsKeeper,
app.ConsensusParamsKeeper,
app.ICAControllerKeeper,
),
)

// When a planned update height is reached, the old binary will panic
// writing on disk the height and name of the update that triggered it
// This will read that value, and execute the preparations for the upgrade.
upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk()
if err != nil {
panic(fmt.Errorf("failed to read upgrade info from disk: %w", err))
}

if app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
return
}

if upgradeInfo.Name == v4.UpgradeName {
// !! ATTENTION !!
// !! WHEN UPGRADING TO SDK v0.47 MAKE SURE TO INCLUDE THIS
// source: https://github.com/cosmos/cosmos-sdk/blob/release/v0.47.x/UPGRADING.md
storeUpgrades := &storetypes.StoreUpgrades{
Added: []string{
consensusparamtypes.StoreKey,
crisistypes.StoreKey,
icqtypes.StoreKey,
feeburnmoduletypes.StoreKey,
},
Deleted: []string{
"intertx",
},
}
// configure store loader that checks if version == upgradeHeight and applies store upgrades
app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, storeUpgrades))
}
}

// GetMaccPerms returns a copy of the module account permissions
Expand Down
5 changes: 5 additions & 0 deletions app/upgrades/v4_1_0/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package v4

// UpgradeName defines the on-chain upgrade name for the Migaloo v3.0.2 upgrade.
// this upgrade includes the fix for pfm
const UpgradeName = "v4.1.0"
42 changes: 42 additions & 0 deletions app/upgrades/v4_1_0/upgrades.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package v4

import (
"github.com/cosmos/cosmos-sdk/baseapp"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
consensuskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper"
paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper"
paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
icacontrollerkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/keeper"
icacontrollertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types"
clientkeeper "github.com/cosmos/ibc-go/v7/modules/core/02-client/keeper"
ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported"
)

// CreateUpgradeHandler small security fix, can be a no-op, running mm.RunMigarions just to be sure
func CreateUpgradeHandler(
mm *module.Manager,
configurator module.Configurator,
clientKeeper clientkeeper.Keeper,
paramsKeeper paramskeeper.Keeper,
consensusParamsKeeper consensuskeeper.Keeper,
icacontrollerKeeper icacontrollerkeeper.Keeper,
) upgradetypes.UpgradeHandler {
return func(ctx sdk.Context, _plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {

Check warning on line 26 in app/upgrades/v4_1_0/upgrades.go

View workflow job for this annotation

GitHub Actions / lint

unused-parameter: parameter '_plan' seems to be unused, consider removing or renaming it as _ (revive)
// READ: https://github.com/cosmos/cosmos-sdk/blob/v0.47.4/UPGRADING.md#xconsensus
baseAppLegacySS := paramsKeeper.Subspace(baseapp.Paramspace).
WithKeyTable(paramstypes.ConsensusParamsKeyTable())
baseapp.MigrateParams(ctx, baseAppLegacySS, &consensusParamsKeeper)

// READ: https://github.com/cosmos/ibc-go/blob/v7.2.0/docs/migrations/v7-to-v7_1.md#chains
params := clientKeeper.GetParams(ctx)
params.AllowedClients = append(params.AllowedClients, ibcexported.Localhost)
clientKeeper.SetParams(ctx, params)

// READ: https://github.com/terra-money/core/issues/166
icacontrollerKeeper.SetParams(ctx, icacontrollertypes.DefaultParams())

return mm.RunMigrations(ctx, configurator, fromVM)
}
}
45 changes: 45 additions & 0 deletions app/upgrades/v4_1_0/upgrades_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package v4_test

import (
"testing"

apptesting "github.com/White-Whale-Defi-Platform/migaloo-chain/v4/app"
abci "github.com/cometbft/cometbft/abci/types"
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
"github.com/stretchr/testify/suite"
)

const (
v4UpgradeHeight = int64(10)
)

type UpgradeTestSuite struct {
apptesting.KeeperTestHelper
}

func TestUpgradeTestSuite(t *testing.T) {
suite.Run(t, new(UpgradeTestSuite))
}

func (suite *UpgradeTestSuite) TestUpgrade() {
suite.Setup(suite.T(), apptesting.SimAppChainID)
dummyUpgrade(suite)
feeBurnParam := suite.App.FeeBurnKeeper.GetParams(suite.Ctx)
suite.Require().Equal("0", feeBurnParam.GetTxFeeBurnPercent())
}

func dummyUpgrade(s *UpgradeTestSuite) {
s.Ctx = s.Ctx.WithBlockHeight(v4UpgradeHeight - 1)
plan := upgradetypes.Plan{Name: "v4.1.0", Height: v4UpgradeHeight}
err := s.App.UpgradeKeeper.ScheduleUpgrade(s.Ctx, plan)
s.Require().NoError(err)
_, exists := s.App.UpgradeKeeper.GetUpgradePlan(s.Ctx)
s.Require().True(exists)

s.Ctx = s.Ctx.WithBlockHeight(v4UpgradeHeight)

s.Require().NotPanics(func() {
beginBlockRequest := abci.RequestBeginBlock{}
s.App.BeginBlocker(s.Ctx, beginBlockRequest)
})
}
5 changes: 5 additions & 0 deletions app/upgrades/v4_1_1/constants.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package v4

const (
UpgradeHeight = 226753
)
22 changes: 22 additions & 0 deletions app/upgrades/v4_1_1/upgrades.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package v4

import (
feeburnkeeper "github.com/White-Whale-Defi-Platform/migaloo-chain/v4/x/feeburn/keeper"
sdk "github.com/cosmos/cosmos-sdk/types"
authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
)

func UpdateAccountPermissionAndFeeBurnPercent(ctx sdk.Context, fk feeburnkeeper.Keeper, ak authkeeper.AccountKeeper) {
// Burning module permissions
moduleAccI := ak.GetModuleAccount(ctx, authtypes.FeeCollectorName)
moduleAcc := moduleAccI.(*authtypes.ModuleAccount)
moduleAcc.Permissions = []string{authtypes.Burner}
ak.SetModuleAccount(ctx, moduleAcc)

// set default fee_burn_percent to 10
feeBurnParams := fk.GetParams(ctx)
feeBurnParams.TxFeeBurnPercent = "10"

_ = fk.SetParams(ctx, feeBurnParams)
}
3 changes: 2 additions & 1 deletion app/upgrades/v4_1_2/forks.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package v4

import (
"time"

sdk "github.com/cosmos/cosmos-sdk/types"
alliancekeeper "github.com/terra-money/alliance/x/alliance/keeper"
"time"
)

func UpdateAlliance(ctx sdk.Context, alk alliancekeeper.Keeper) {
Expand Down

0 comments on commit 836ce9f

Please sign in to comment.