@@ -24,7 +24,6 @@ import (
2424 "cosmossdk.io/log"
2525 storetypes "cosmossdk.io/store/types"
2626 evidencetypes "cosmossdk.io/x/evidence/types"
27- "cosmossdk.io/x/feegrant"
2827 upgradetypes "cosmossdk.io/x/upgrade/types"
2928 "github.com/CosmWasm/wasmd/x/wasm"
3029 wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper"
@@ -47,33 +46,21 @@ import (
4746 "github.com/cosmos/cosmos-sdk/x/auth/ante"
4847 authtx "github.com/cosmos/cosmos-sdk/x/auth/tx"
4948 authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
50- vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
51- "github.com/cosmos/cosmos-sdk/x/authz"
52- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
53- consensusparamtypes "github.com/cosmos/cosmos-sdk/x/consensus/types"
5449 distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
55- genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
5650 govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
57- minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
5851 paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
5952 slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
6053 stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
6154 transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types"
6255 ibchost "github.com/cosmos/ibc-go/v10/modules/core/exported"
63- ibctm "github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint"
64-
6556 cflags "pkg.akt.dev/go/cli/flags"
66- audittypes "pkg.akt.dev/go/node/audit/v1"
67- certtypes "pkg.akt.dev/go/node/cert/v1"
68- deploymenttypes "pkg.akt.dev/go/node/deployment/v1"
69- emodule "pkg.akt.dev/go/node/escrow/module"
70- markettypes "pkg.akt.dev/go/node/market/v1"
71- providertypes "pkg.akt.dev/go/node/provider/v1beta4"
72- taketypes "pkg.akt.dev/go/node/take/v1"
7357 "pkg.akt.dev/go/sdkutil"
7458
7559 apptypes "pkg.akt.dev/node/v2/app/types"
7660 utypes "pkg.akt.dev/node/v2/upgrades/types"
61+ "pkg.akt.dev/node/v2/util/partialord"
62+ "pkg.akt.dev/node/v2/x/bme"
63+ "pkg.akt.dev/node/v2/x/escrow"
7764 "pkg.akt.dev/node/v2/x/oracle"
7865 awasm "pkg.akt.dev/node/v2/x/wasm"
7966 // unnamed import of statik for swagger UI support
@@ -226,7 +213,8 @@ func NewApp(
226213
227214 // Tell the app's module manager how to set the order of BeginBlockers, which are run at the beginning of every block.
228215 app .MM .SetOrderBeginBlockers (orderBeginBlockers (app .MM .ModuleNames ())... )
229- app .MM .SetOrderInitGenesis (OrderInitGenesis (app .MM .ModuleNames ())... )
216+ app .MM .SetOrderEndBlockers (orderEndBlockers (app .MM .ModuleNames ())... )
217+ app .MM .SetOrderInitGenesis (orderInitGenesis (app .MM .ModuleNames ())... )
230218
231219 app .Configurator = module .NewConfigurator (app .AppCodec (), app .MsgServiceRouter (), app .GRPCQueryRouter ())
232220 err = app .MM .RegisterServices (app .Configurator )
@@ -294,75 +282,110 @@ func NewApp(
294282}
295283
296284// orderBeginBlockers returns the order of BeginBlockers, by module name.
297- func orderBeginBlockers (_ []string ) []string {
298- return []string {
299- upgradetypes .ModuleName ,
300- banktypes .ModuleName ,
301- paramstypes .ModuleName ,
302- deploymenttypes .ModuleName ,
303- govtypes .ModuleName ,
304- providertypes .ModuleName ,
305- certtypes .ModuleName ,
306- markettypes .ModuleName ,
307- audittypes .ModuleName ,
308- genutiltypes .ModuleName ,
309- vestingtypes .ModuleName ,
310- authtypes .ModuleName ,
311- authz .ModuleName ,
312- taketypes .ModuleName ,
313- emodule .ModuleName ,
314- minttypes .ModuleName ,
315- distrtypes .ModuleName ,
316- slashingtypes .ModuleName ,
317- evidencetypes .ModuleName ,
318- stakingtypes .ModuleName ,
319- transfertypes .ModuleName ,
320- consensusparamtypes .ModuleName ,
321- ibctm .ModuleName ,
322- ibchost .ModuleName ,
323- feegrant .ModuleName ,
324- epochstypes .ModuleName ,
325- oracle .ModuleName ,
326- // akash wasm module must be prior wasm
327- awasm .ModuleName ,
328- // wasm after ibc transfer
329- wasmtypes .ModuleName ,
330- }
285+ // the original order for reference
286+ //
287+ // upgradetypes.ModuleName,
288+ // banktypes.ModuleName,
289+ // paramstypes.ModuleName,
290+ // deploymenttypes.ModuleName,
291+ // govtypes.ModuleName,
292+ // providertypes.ModuleName,
293+ // certtypes.ModuleName,
294+ // markettypes.ModuleName,
295+ // audittypes.ModuleName,
296+ // genutiltypes.ModuleName,
297+ // vestingtypes.ModuleName,
298+ // authtypes.ModuleName,
299+ // authz.ModuleName,
300+ // taketypes.ModuleName,
301+ // emodule.ModuleName,
302+ // minttypes.ModuleName,
303+ // distrtypes.ModuleName,
304+ // slashingtypes.ModuleName,
305+ // evidencetypes.ModuleName,
306+ // stakingtypes.ModuleName,
307+ // transfertypes.ModuleName,
308+ // consensusparamtypes.ModuleName,
309+ // ibctm.ModuleName,
310+ // ibchost.ModuleName,
311+ // feegrant.ModuleName,
312+ // epochstypes.ModuleName,
313+ // oracle.ModuleName,
314+ // bme.ModuleName,
315+ // // akash wasm module must be prior wasm
316+ // awasm.ModuleName,
317+ // // wasm after ibc transfer
318+ // wasmtypes.ModuleName,
319+ func orderBeginBlockers (modules []string ) []string {
320+ ord := partialord .NewPartialOrdering (modules )
321+ ord .FirstElements (epochstypes .ModuleName )
322+
323+ // Staking ordering
324+ // TODO: Perhaps this can be relaxed, left to future work to analyze.
325+ ord .Sequence (distrtypes .ModuleName , slashingtypes .ModuleName , evidencetypes .ModuleName , stakingtypes .ModuleName )
326+ // TODO: This can almost certainly be un-constrained, but we keep the constraint to match prior functionality.
327+ // IBChost came after staking, before superfluid.
328+ // TODO: Come back and delete this line after testing the base change.
329+ ord .Sequence (stakingtypes .ModuleName , ibchost .ModuleName )
330+
331+ // oracle must come up prior bme
332+ ord .Before (oracle .ModuleName , bme .ModuleName )
333+
334+ // escrow must come up after bme
335+ ord .Before (bme .ModuleName , escrow .ModuleName )
336+
337+ // akash wasm module must be prior wasm
338+ ord .Before (awasm .ModuleName , wasmtypes .ModuleName )
339+ // wasm after ibc transfer
340+ ord .Before (transfertypes .ModuleName , wasmtypes .ModuleName )
341+
342+ // We leave downtime-detector un-constrained.
343+ // every remaining module's begin block is a no-op.
344+
345+ return ord .TotalOrdering ()
331346}
332347
333- // OrderEndBlockers returns EndBlockers (crisis, govtypes, staking) with no relative order.
334- func OrderEndBlockers (_ []string ) []string {
335- return []string {
336- govtypes .ModuleName ,
337- stakingtypes .ModuleName ,
338- upgradetypes .ModuleName ,
339- banktypes .ModuleName ,
340- paramstypes .ModuleName ,
341- deploymenttypes .ModuleName ,
342- providertypes .ModuleName ,
343- certtypes .ModuleName ,
344- markettypes .ModuleName ,
345- audittypes .ModuleName ,
346- genutiltypes .ModuleName ,
347- vestingtypes .ModuleName ,
348- authtypes .ModuleName ,
349- authz .ModuleName ,
350- taketypes .ModuleName ,
351- emodule .ModuleName ,
352- minttypes .ModuleName ,
353- distrtypes .ModuleName ,
354- slashingtypes .ModuleName ,
355- evidencetypes .ModuleName ,
356- transfertypes .ModuleName ,
357- ibchost .ModuleName ,
358- feegrant .ModuleName ,
359- // akash wasm module must be prior wasm
360- awasm .ModuleName ,
361- // wasm after ibc transfer
362- wasmtypes .ModuleName ,
363- oracle .ModuleName ,
364- epochstypes .ModuleName ,
365- }
348+ // orderEndBlockers returns EndBlockers (crisis, govtypes, staking) with no relative order.
349+ // original ordering for reference
350+ //
351+ // govtypes.ModuleName,
352+ // stakingtypes.ModuleName,
353+ // upgradetypes.ModuleName,
354+ // banktypes.ModuleName,
355+ // paramstypes.ModuleName,
356+ // deploymenttypes.ModuleName,
357+ // providertypes.ModuleName,
358+ // certtypes.ModuleName,
359+ // markettypes.ModuleName,
360+ // audittypes.ModuleName,
361+ // genutiltypes.ModuleName,
362+ // vestingtypes.ModuleName,
363+ // authtypes.ModuleName,
364+ // authz.ModuleName,
365+ // taketypes.ModuleName,
366+ // emodule.ModuleName,
367+ // minttypes.ModuleName,
368+ // distrtypes.ModuleName,
369+ // slashingtypes.ModuleName,
370+ // evidencetypes.ModuleName,
371+ // transfertypes.ModuleName,
372+ // ibchost.ModuleName,
373+ // feegrant.ModuleName,
374+ // // akash wasm module must be prior wasm
375+ // awasm.ModuleName,
376+ // // wasm after ibc transfer
377+ // wasmtypes.ModuleName,
378+ // oracle.ModuleName,
379+ // bme.ModuleName,
380+ // epochstypes.ModuleName,
381+ func orderEndBlockers (modules []string ) []string {
382+ ord := partialord .NewPartialOrdering (modules )
383+
384+ // Staking must be after gov.
385+ ord .FirstElements (govtypes .ModuleName , stakingtypes .ModuleName )
386+ //ord.Before(govtypes.ModuleName, )
387+
388+ return ord .TotalOrdering ()
366389}
367390
368391func getGenesisTime (appOpts servertypes.AppOptions , homePath string ) time.Time { // nolint: unused
0 commit comments