Skip to content

Commit 74cb33e

Browse files
refactor(upgrades): simplify upgrade hanlder code to use less abstractions and combine micro-packages (#2413)
* fix(evm-rpc): remove unsafe debug API methods. * refactor: make code organization suggestion from Gemini input * refactor(upgrades): simplify upgrade hanlder code to use less abstractions and combine micro-packages * fix tests and add feedback * refactor: last bit of changes from self-review
1 parent e2a1ee8 commit 74cb33e

File tree

28 files changed

+311
-461
lines changed

28 files changed

+311
-461
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ address when Wasm contract addresses are queried because 32-byte address space
6666
(wasm contract length) is not uniquely identified in 20-byte space (EOA length).
6767
- [#2412](https://github.com/NibiruChain/nibiru/pull/2412) - fix(evm-rpc): remove
6868
unsafe debug API methods.
69+
- [#2413](https://github.com/NibiruChain/nibiru/pull/2413) - refactor(upgrades): simplify upgrade handler code to use less abstractions and combine micro-packages
6970

7071
### Dependencies
7172
- Bump `cipher-base` from 1.0.4 to 1.0.6 ([#2390](https://github.com/NibiruChain/nibiru/pull/2390))

app/ante/handler_opts.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@ import (
1515
evmstate "github.com/NibiruChain/nibiru/v2/x/evm/evmstate"
1616
)
1717

18-
// TODO: Refactor to add compile-time safety for the following interface.
19-
// var _ evmante.AnteOptionsEVM = (*AnteHandlerOptions)(nil)
20-
2118
type AnteHandlerOptions struct {
2219
sdkante.HandlerOptions
2320
IBCKeeper *ibckeeper.Keeper

app/upgrades.go

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -15,44 +15,9 @@ import (
1515
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
1616

1717
"github.com/NibiruChain/nibiru/v2/app/upgrades"
18-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v1_0_1"
19-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v1_0_2"
20-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v1_0_3"
21-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v1_1_0"
22-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v1_2_0"
23-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v1_3_0"
24-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v1_4_0"
25-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v1_5_0"
26-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v2_0_0"
27-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v2_1_0"
28-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v2_2_0"
29-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v2_3_0"
30-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v2_4_0"
31-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v2_5_0"
32-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v2_6_0"
33-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v2_7_0"
34-
"github.com/NibiruChain/nibiru/v2/app/upgrades/v2_8_0"
3518
)
3619

37-
var Upgrades = []upgrades.Upgrade{
38-
v1_0_1.Upgrade,
39-
v1_0_2.Upgrade,
40-
v1_0_3.Upgrade,
41-
v1_1_0.Upgrade,
42-
v1_2_0.Upgrade,
43-
v1_3_0.Upgrade,
44-
v1_4_0.Upgrade,
45-
v1_5_0.Upgrade,
46-
v2_0_0.Upgrade,
47-
v2_1_0.Upgrade,
48-
v2_2_0.Upgrade,
49-
v2_3_0.Upgrade,
50-
v2_4_0.Upgrade,
51-
v2_5_0.Upgrade,
52-
v2_6_0.Upgrade,
53-
v2_7_0.Upgrade,
54-
v2_8_0.Upgrade,
55-
}
20+
var Upgrades = upgrades.AllUpgrades
5621

5722
func (app *NibiruApp) setupUpgrades() {
5823
// see https://github.com/cosmos/cosmos-sdk/blob/666c345ad23ddda9523cc5cd1b71187d91c26f34/simapp/upgrades.go#L35-L57
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,31 @@ type Upgrade struct {
2020
ibcKeeperClientKeeper clientkeeper.Keeper,
2121
) upgradetypes.UpgradeHandler
2222

23+
// StoreUpgrades defines a series of transformations to apply the multistore db
24+
// upon load
2325
StoreUpgrades store.StoreUpgrades
2426
}
2527

28+
var AllUpgrades = []Upgrade{
29+
Upgrade1_0_1,
30+
Upgrade1_0_2,
31+
Upgrade1_0_3,
32+
Upgrade1_1_0,
33+
Upgrade1_2_0,
34+
Upgrade1_3_0,
35+
Upgrade1_4_0,
36+
Upgrade1_5_0,
37+
Upgrade2_0_0,
38+
Upgrade2_1_0,
39+
Upgrade2_2_0,
40+
Upgrade2_3_0,
41+
Upgrade2_4_0,
42+
Upgrade2_5_0,
43+
Upgrade2_6_0,
44+
Upgrade2_7_0,
45+
Upgrade2_8_0,
46+
}
47+
2648
// DefaultUpgradeHandler runs module manager migrations without running any other
2749
// logic that uses the Nibiru keepers. This is the most common value for
2850
// the "CreateUpgradeHandler" field of an [Upgrade].

app/upgrades/v1.go

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package upgrades
2+
3+
import (
4+
store "github.com/cosmos/cosmos-sdk/store/types"
5+
sdk "github.com/cosmos/cosmos-sdk/types"
6+
"github.com/cosmos/cosmos-sdk/types/module"
7+
"github.com/cosmos/cosmos-sdk/x/authz"
8+
banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
9+
distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
10+
stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
11+
upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
12+
ica "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts"
13+
icacontrollertypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/controller/types"
14+
icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types"
15+
icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types"
16+
ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types"
17+
clientkeeper "github.com/cosmos/ibc-go/v7/modules/core/02-client/keeper"
18+
19+
"github.com/NibiruChain/nibiru/v2/app/keepers"
20+
inflationtypes "github.com/NibiruChain/nibiru/v2/x/inflation/types"
21+
)
22+
23+
var (
24+
// Tests the upgrade process and move to newer version of rocksdb
25+
Upgrade1_0_1 = Upgrade{
26+
UpgradeName: "v1.0.1",
27+
CreateUpgradeHandler: DefaultUpgradeHandler,
28+
StoreUpgrades: store.StoreUpgrades{},
29+
}
30+
31+
// Newer version of the Cosmos-SDK
32+
Upgrade1_0_2 = Upgrade{
33+
UpgradeName: "v1.0.2",
34+
CreateUpgradeHandler: DefaultUpgradeHandler,
35+
StoreUpgrades: store.StoreUpgrades{},
36+
}
37+
38+
// Newer version of the Cosmos-SDK
39+
Upgrade1_0_3 = Upgrade{
40+
UpgradeName: "v1.0.3",
41+
CreateUpgradeHandler: DefaultUpgradeHandler,
42+
StoreUpgrades: store.StoreUpgrades{},
43+
}
44+
45+
Upgrade1_1_0 = Upgrade{
46+
UpgradeName: "v1.1.0",
47+
CreateUpgradeHandler: DefaultUpgradeHandler,
48+
StoreUpgrades: store.StoreUpgrades{
49+
Added: []string{inflationtypes.ModuleName},
50+
},
51+
}
52+
53+
Upgrade1_2_0 = Upgrade{
54+
UpgradeName: "v1.2.0",
55+
CreateUpgradeHandler: DefaultUpgradeHandler,
56+
StoreUpgrades: store.StoreUpgrades{},
57+
}
58+
59+
Upgrade1_3_0 = Upgrade{
60+
UpgradeName: "v1.3.0",
61+
CreateUpgradeHandler: func(
62+
mm *module.Manager,
63+
cfg module.Configurator,
64+
nibiru *keepers.PublicKeepers,
65+
clientKeeper clientkeeper.Keeper,
66+
) upgradetypes.UpgradeHandler {
67+
return func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {
68+
// set the ICS27 consensus version so InitGenesis is not run
69+
fromVM[icatypes.ModuleName] = mm.GetVersionMap()[icatypes.ModuleName]
70+
71+
// create ICS27 Controller submodule params, controller module not enabled.
72+
controllerParams := icacontrollertypes.Params{
73+
ControllerEnabled: true,
74+
}
75+
76+
// create ICS27 Host submodule params
77+
hostParams := icahosttypes.Params{
78+
HostEnabled: true,
79+
AllowMessages: []string{
80+
sdk.MsgTypeURL(&banktypes.MsgSend{}),
81+
sdk.MsgTypeURL(&stakingtypes.MsgDelegate{}),
82+
sdk.MsgTypeURL(&stakingtypes.MsgUndelegate{}),
83+
sdk.MsgTypeURL(&stakingtypes.MsgBeginRedelegate{}),
84+
sdk.MsgTypeURL(&distrtypes.MsgWithdrawDelegatorReward{}),
85+
sdk.MsgTypeURL(&distrtypes.MsgSetWithdrawAddress{}),
86+
sdk.MsgTypeURL(&distrtypes.MsgFundCommunityPool{}),
87+
sdk.MsgTypeURL(&authz.MsgExec{}),
88+
sdk.MsgTypeURL(&authz.MsgGrant{}),
89+
sdk.MsgTypeURL(&authz.MsgRevoke{}),
90+
sdk.MsgTypeURL(&ibctransfertypes.MsgTransfer{}),
91+
},
92+
}
93+
94+
// initialize ICS27 module
95+
icamodule, correctTypecast := mm.Modules[icatypes.ModuleName].(ica.AppModule)
96+
if !correctTypecast {
97+
panic("mm.Modules[icatypes.ModuleName] is not of type ica.AppModule")
98+
}
99+
icamodule.InitModule(ctx, controllerParams, hostParams)
100+
101+
return mm.RunMigrations(ctx, cfg, fromVM)
102+
}
103+
},
104+
StoreUpgrades: store.StoreUpgrades{
105+
Added: []string{icacontrollertypes.StoreKey, icahosttypes.StoreKey},
106+
},
107+
}
108+
109+
Upgrade1_4_0 = Upgrade{
110+
UpgradeName: "v1.4.0",
111+
CreateUpgradeHandler: DefaultUpgradeHandler,
112+
StoreUpgrades: store.StoreUpgrades{},
113+
}
114+
115+
Upgrade1_5_0 = Upgrade{
116+
UpgradeName: "v1.5.0",
117+
CreateUpgradeHandler: DefaultUpgradeHandler,
118+
StoreUpgrades: store.StoreUpgrades{},
119+
}
120+
)

app/upgrades/v1_0_1/constants.go

Lines changed: 0 additions & 16 deletions
This file was deleted.

app/upgrades/v1_0_2/constants.go

Lines changed: 0 additions & 16 deletions
This file was deleted.

app/upgrades/v1_0_3/constants.go

Lines changed: 0 additions & 16 deletions
This file was deleted.

app/upgrades/v1_1_0/constants.go

Lines changed: 0 additions & 18 deletions
This file was deleted.

app/upgrades/v1_2_0/constants.go

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)