@agoric/cosmos 0.34.2-dev-3c8aafe.0 → 0.34.2-dev-74fbe43.0.74fbe43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/Makefile +6 -2
  2. package/ante/ante.go +2 -2
  3. package/ante/inbound.go +1 -2
  4. package/ante/inbound_test.go +3 -1
  5. package/ante/vm_admission.go +1 -2
  6. package/app/app.go +256 -174
  7. package/app/encoding.go +6 -3
  8. package/app/export.go +50 -21
  9. package/app/genesis.go +7 -5
  10. package/app/params/encoding.go +1 -1
  11. package/app/params/proto.go +6 -4
  12. package/app/sim_test.go +11 -13
  13. package/app/txconfig/tx_config.go +169 -0
  14. package/app/upgrade.go +40 -90
  15. package/cmd/agd/agvm.go +1 -1
  16. package/cmd/agd/main.go +1 -1
  17. package/cmd/libdaemon/main.go +2 -2
  18. package/daemon/cmd/root.go +99 -30
  19. package/daemon/cmd/root_test.go +12 -27
  20. package/daemon/main.go +2 -9
  21. package/git-revision.txt +1 -1
  22. package/go.mod +130 -109
  23. package/go.sum +228 -469
  24. package/package.json +2 -2
  25. package/proto/agoric/swingset/msgs.proto +72 -9
  26. package/proto/agoric/swingset/swingset.proto +7 -2
  27. package/proto/agoric/vbank/vbank.proto +1 -1
  28. package/proto/agoric/vibc/msgs.proto +4 -0
  29. package/scripts/mockgen.sh +4 -0
  30. package/tests/e2e/vbank/vbank_test.go +172 -0
  31. package/tests/integrations/types/aminojson_test.go +214 -0
  32. package/tests/integrations/vbank/vbank_test.go +349 -0
  33. package/third_party/proto/amino/amino.proto +6 -1
  34. package/third_party/proto/cosmos/base/v1beta1/coin.proto +18 -5
  35. package/third_party/proto/cosmos/upgrade/v1beta1/upgrade.proto +4 -8
  36. package/third_party/proto/ibc/core/channel/v1/channel.proto +42 -17
  37. package/third_party/proto/ibc/core/client/v1/client.proto +48 -40
  38. package/types/address_hooks.go +2 -2
  39. package/types/address_hooks_test.go +3 -3
  40. package/types/ibc_packet.go +3 -3
  41. package/types/ibc_packet_test.go +3 -3
  42. package/types/kv_entry_helpers.go +3 -27
  43. package/types/kv_entry_helpers_test.go +2 -2
  44. package/types/legacy_address_encoder.go +58 -0
  45. package/vm/proto_json_test.go +1 -1
  46. package/vm/server.go +2 -1
  47. package/x/swingset/abci.go +2 -2
  48. package/x/swingset/client/cli/tx.go +16 -14
  49. package/x/swingset/config.go +1 -1
  50. package/x/swingset/genesis.go +2 -1
  51. package/x/swingset/handler.go +2 -1
  52. package/x/swingset/keeper/extension_snapshotter.go +14 -5
  53. package/x/swingset/keeper/extension_snapshotter_test.go +1 -1
  54. package/x/swingset/keeper/keeper.go +28 -23
  55. package/x/swingset/keeper/keeper_test.go +10 -7
  56. package/x/swingset/keeper/msg_server.go +52 -5
  57. package/x/swingset/keeper/msg_server_test.go +121 -0
  58. package/x/swingset/keeper/proposal.go +4 -0
  59. package/x/swingset/keeper/querier.go +1 -1
  60. package/x/swingset/keeper/swing_store_exports_handler.go +1 -1
  61. package/x/swingset/keeper/swing_store_exports_handler_test.go +1 -1
  62. package/x/swingset/keeper/test_utils.go +2 -2
  63. package/x/swingset/module.go +20 -22
  64. package/x/swingset/testing/queue.go +5 -2
  65. package/x/swingset/testutil/mocks.go +379 -0
  66. package/x/swingset/types/codec.go +10 -5
  67. package/x/swingset/types/default-params.go +13 -12
  68. package/x/swingset/types/expected_keepers.go +29 -4
  69. package/x/swingset/types/msgs.go +51 -36
  70. package/x/swingset/types/msgs.pb.go +561 -51
  71. package/x/swingset/types/params_test.go +21 -20
  72. package/x/swingset/types/swingset.pb.go +67 -61
  73. package/x/vbank/genesis.go +13 -9
  74. package/x/vbank/handler.go +2 -1
  75. package/x/vbank/keeper/grpc_query.go +4 -1
  76. package/x/vbank/keeper/keeper.go +108 -23
  77. package/x/vbank/keeper/querier.go +4 -1
  78. package/x/vbank/keeper/rewards.go +10 -5
  79. package/x/vbank/module.go +47 -75
  80. package/x/vbank/types/expected_keepers.go +15 -10
  81. package/x/vbank/types/key.go +3 -0
  82. package/x/vbank/types/params.go +4 -3
  83. package/x/vbank/types/vbank.pb.go +41 -40
  84. package/x/vbank/vbank.go +29 -11
  85. package/x/vbank/vbank_test.go +213 -154
  86. package/x/vibc/handler.go +2 -1
  87. package/x/vibc/keeper/keeper.go +10 -10
  88. package/x/vibc/keeper/migrations.go +1 -1
  89. package/x/vibc/keeper/triggers.go +1 -1
  90. package/x/vibc/module.go +5 -22
  91. package/x/vibc/types/codec.go +2 -1
  92. package/x/vibc/types/expected_keepers.go +7 -5
  93. package/x/vibc/types/ibc_module.go +5 -5
  94. package/x/vibc/types/msgs.go +30 -7
  95. package/x/vibc/types/msgs.pb.go +29 -25
  96. package/x/vibc/types/receiver.go +2 -2
  97. package/x/vlocalchain/handler.go +2 -1
  98. package/x/vlocalchain/keeper/keeper.go +17 -5
  99. package/x/vlocalchain/keeper/keeper_test.go +3 -2
  100. package/x/vlocalchain/types/expected_keepers.go +7 -4
  101. package/x/vlocalchain/vlocalchain_test.go +38 -26
  102. package/x/vstorage/genesis.go +10 -10
  103. package/x/vstorage/handler.go +2 -1
  104. package/x/vstorage/keeper/grpc_query.go +1 -1
  105. package/x/vstorage/keeper/keeper.go +72 -50
  106. package/x/vstorage/keeper/keeper_test.go +74 -54
  107. package/x/vstorage/keeper/querier.go +1 -1
  108. package/x/vstorage/module.go +27 -13
  109. package/x/vstorage/testing/queue.go +5 -3
  110. package/x/vstorage/vstorage.go +10 -9
  111. package/x/vstorage/vstorage_test.go +24 -18
  112. package/x/vtransfer/genesis.go +1 -3
  113. package/x/vtransfer/handler.go +3 -2
  114. package/x/vtransfer/ibc_middleware.go +5 -5
  115. package/x/vtransfer/ibc_middleware_test.go +43 -29
  116. package/x/vtransfer/keeper/keeper.go +35 -33
  117. package/x/vtransfer/module.go +8 -11
  118. package/x/vtransfer/types/expected_keepers.go +3 -3
  119. package/x/vtransfer/utils_test.go +26 -11
  120. package/daemon/cmd/testnet.go +0 -539
package/app/app.go CHANGED
@@ -14,13 +14,27 @@ import (
14
14
 
15
15
  autocliv1 "cosmossdk.io/api/cosmos/autocli/v1"
16
16
  reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1"
17
+ "cosmossdk.io/client/v2/autocli"
18
+ "cosmossdk.io/core/appmodule"
17
19
  sdkioerrors "cosmossdk.io/errors"
20
+ storetypes "cosmossdk.io/store/types"
21
+ "cosmossdk.io/x/evidence"
22
+ evidencekeeper "cosmossdk.io/x/evidence/keeper"
23
+ evidencetypes "cosmossdk.io/x/evidence/types"
24
+ "cosmossdk.io/x/feegrant"
25
+ feegrantkeeper "cosmossdk.io/x/feegrant/keeper"
26
+ feegrantmodule "cosmossdk.io/x/feegrant/module"
27
+ "cosmossdk.io/x/tx/signing"
28
+ "cosmossdk.io/x/upgrade"
29
+ upgradekeeper "cosmossdk.io/x/upgrade/keeper"
30
+ upgradetypes "cosmossdk.io/x/upgrade/types"
18
31
  "github.com/cosmos/cosmos-sdk/baseapp"
19
32
  "github.com/cosmos/cosmos-sdk/client"
20
33
  "github.com/cosmos/cosmos-sdk/client/flags"
34
+ cmtservice "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice"
21
35
  nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node"
22
- "github.com/cosmos/cosmos-sdk/client/grpc/tmservice"
23
36
  "github.com/cosmos/cosmos-sdk/codec"
37
+ "github.com/cosmos/cosmos-sdk/codec/address"
24
38
  "github.com/cosmos/cosmos-sdk/codec/types"
25
39
  "github.com/cosmos/cosmos-sdk/runtime"
26
40
  runtimeservices "github.com/cosmos/cosmos-sdk/runtime/services"
@@ -28,12 +42,13 @@ import (
28
42
  "github.com/cosmos/cosmos-sdk/server/api"
29
43
  "github.com/cosmos/cosmos-sdk/server/config"
30
44
  servertypes "github.com/cosmos/cosmos-sdk/server/types"
31
- storetypes "github.com/cosmos/cosmos-sdk/store/types"
45
+ "github.com/cosmos/cosmos-sdk/std"
32
46
  sdk "github.com/cosmos/cosmos-sdk/types"
33
47
  "github.com/cosmos/cosmos-sdk/types/module"
34
48
  "github.com/cosmos/cosmos-sdk/version"
35
49
  "github.com/cosmos/cosmos-sdk/x/auth"
36
50
  "github.com/cosmos/cosmos-sdk/x/auth/ante"
51
+ authcodec "github.com/cosmos/cosmos-sdk/x/auth/codec"
37
52
  authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper"
38
53
  authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation"
39
54
  authtx "github.com/cosmos/cosmos-sdk/x/auth/tx"
@@ -46,27 +61,17 @@ import (
46
61
  "github.com/cosmos/cosmos-sdk/x/bank"
47
62
  bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper"
48
63
  banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
49
- "github.com/cosmos/cosmos-sdk/x/capability"
50
- capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper"
51
- capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types"
52
64
  consensusparamskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper"
53
65
  consensusparamstypes "github.com/cosmos/cosmos-sdk/x/consensus/types"
54
66
  distr "github.com/cosmos/cosmos-sdk/x/distribution"
55
67
  distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper"
56
68
  distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
57
- "github.com/cosmos/cosmos-sdk/x/evidence"
58
- evidencekeeper "github.com/cosmos/cosmos-sdk/x/evidence/keeper"
59
- evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types"
60
- "github.com/cosmos/cosmos-sdk/x/feegrant"
61
- feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper"
62
- feegrantmodule "github.com/cosmos/cosmos-sdk/x/feegrant/module"
63
69
  "github.com/cosmos/cosmos-sdk/x/genutil"
64
70
  genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
65
71
  "github.com/cosmos/cosmos-sdk/x/gov"
66
72
  govclient "github.com/cosmos/cosmos-sdk/x/gov/client"
67
73
  govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper"
68
74
  govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
69
- govtypesv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
70
75
  govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
71
76
  "github.com/cosmos/cosmos-sdk/x/mint"
72
77
  mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper"
@@ -82,39 +87,39 @@ import (
82
87
  "github.com/cosmos/cosmos-sdk/x/staking"
83
88
  stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper"
84
89
  stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
85
- "github.com/cosmos/cosmos-sdk/x/upgrade"
86
- upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client"
87
- upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper"
88
- upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
89
- ica "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts"
90
+ "github.com/cosmos/gogoproto/proto"
91
+ "github.com/cosmos/ibc-go/modules/capability"
92
+ capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper"
93
+ capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
94
+ ica "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts"
90
95
 
91
- dbm "github.com/cometbft/cometbft-db"
96
+ "cosmossdk.io/log"
92
97
  abci "github.com/cometbft/cometbft/abci/types"
93
98
  tmjson "github.com/cometbft/cometbft/libs/json"
94
- "github.com/cometbft/cometbft/libs/log"
95
99
  tmos "github.com/cometbft/cometbft/libs/os"
96
100
  tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
97
- icahost "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host"
98
- icahostkeeper "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/keeper"
99
- icahosttypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/host/types"
100
- icatypes "github.com/cosmos/ibc-go/v7/modules/apps/27-interchain-accounts/types"
101
- ibctransfer "github.com/cosmos/ibc-go/v7/modules/apps/transfer"
102
- ibctransferkeeper "github.com/cosmos/ibc-go/v7/modules/apps/transfer/keeper"
103
- ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types"
104
- ibc "github.com/cosmos/ibc-go/v7/modules/core"
105
- ibcclient "github.com/cosmos/ibc-go/v7/modules/core/02-client"
106
- ibcclientclient "github.com/cosmos/ibc-go/v7/modules/core/02-client/client"
107
- ibcclienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types"
108
- ibcporttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types"
109
- ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported"
110
- ibckeeper "github.com/cosmos/ibc-go/v7/modules/core/keeper"
111
- ibcsolomachine "github.com/cosmos/ibc-go/v7/modules/light-clients/06-solomachine"
112
- ibctm "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint"
101
+ dbm "github.com/cosmos/cosmos-db"
102
+ icahost "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host"
103
+ icahostkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/keeper"
104
+ icahosttypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/types"
105
+ icatypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/types"
106
+ ibctransfer "github.com/cosmos/ibc-go/v8/modules/apps/transfer"
107
+ ibctransferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper"
108
+ ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types"
109
+ ibc "github.com/cosmos/ibc-go/v8/modules/core"
110
+ ibcclient "github.com/cosmos/ibc-go/v8/modules/core/02-client"
111
+ ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types"
112
+ ibcporttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types"
113
+ ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported"
114
+ ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper"
115
+ ibcsolo "github.com/cosmos/ibc-go/v8/modules/light-clients/06-solomachine"
116
+ ibctm "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint"
113
117
  "github.com/gorilla/mux"
114
118
  "github.com/rakyll/statik/fs"
115
119
  "github.com/spf13/cast"
116
120
 
117
121
  appante "github.com/Agoric/agoric-sdk/golang/cosmos/ante"
122
+ "github.com/Agoric/agoric-sdk/golang/cosmos/app/txconfig"
118
123
  agorictypes "github.com/Agoric/agoric-sdk/golang/cosmos/types"
119
124
 
120
125
  // conv "github.com/Agoric/agoric-sdk/golang/cosmos/types/conv"
@@ -126,19 +131,20 @@ import (
126
131
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/vbank"
127
132
  vbanktypes "github.com/Agoric/agoric-sdk/golang/cosmos/x/vbank/types"
128
133
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/vibc"
134
+ vibctypes "github.com/Agoric/agoric-sdk/golang/cosmos/x/vibc/types"
129
135
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/vlocalchain"
130
136
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/vstorage"
131
137
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/vtransfer"
132
138
  vtransferkeeper "github.com/Agoric/agoric-sdk/golang/cosmos/x/vtransfer/keeper"
133
- testtypes "github.com/cosmos/ibc-go/v7/testing/types"
139
+ testtypes "github.com/cosmos/ibc-go/v8/testing/types"
134
140
 
135
141
  // Import the packet forward middleware
136
- packetforward "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward"
137
- packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/keeper"
138
- packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types"
139
-
142
+ packetforward "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward"
143
+ packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/keeper"
144
+ packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types"
140
145
  // unnamed import of statik for swagger UI support
141
- _ "github.com/cosmos/cosmos-sdk/client/docs/statik"
146
+ // XXX figure out how to build the docs
147
+ // _ "github.com/cosmos/cosmos-sdk/client/docs/statik"
142
148
  )
143
149
 
144
150
  const appName = "agoric"
@@ -164,45 +170,6 @@ var (
164
170
  // DefaultNodeHome default home directories for the application daemon
165
171
  DefaultNodeHome string
166
172
 
167
- // ModuleBasics defines the module BasicManager is in charge of setting up basic,
168
- // non-dependant module elements, such as codec registration
169
- // and genesis verification.
170
- ModuleBasics = module.NewBasicManager(
171
- auth.AppModuleBasic{},
172
- genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator),
173
- bank.AppModuleBasic{},
174
- capability.AppModuleBasic{},
175
- staking.AppModuleBasic{},
176
- mint.AppModuleBasic{},
177
- distr.AppModuleBasic{},
178
- gov.NewAppModuleBasic([]govclient.ProposalHandler{
179
- paramsclient.ProposalHandler,
180
- upgradeclient.LegacyProposalHandler,
181
- upgradeclient.LegacyCancelProposalHandler,
182
- ibcclientclient.UpdateClientProposalHandler,
183
- ibcclientclient.UpgradeProposalHandler,
184
- swingsetclient.CoreEvalProposalHandler,
185
- }),
186
- params.AppModuleBasic{},
187
- slashing.AppModuleBasic{},
188
- feegrantmodule.AppModuleBasic{},
189
- authzmodule.AppModuleBasic{},
190
- ibc.AppModuleBasic{},
191
- ibctm.AppModuleBasic{},
192
- ibcsolomachine.AppModuleBasic{},
193
- upgrade.AppModuleBasic{},
194
- evidence.AppModuleBasic{},
195
- ibctransfer.AppModuleBasic{},
196
- vesting.AppModuleBasic{},
197
- ica.AppModuleBasic{},
198
- packetforward.AppModuleBasic{},
199
- swingset.AppModuleBasic{},
200
- vstorage.AppModuleBasic{},
201
- vibc.AppModuleBasic{},
202
- vbank.AppModuleBasic{},
203
- vtransfer.AppModuleBasic{},
204
- )
205
-
206
173
  // module account permissions
207
174
  maccPerms = map[string][]string{
208
175
  authtypes.FeeCollectorName: nil,
@@ -221,16 +188,13 @@ var (
221
188
  )
222
189
 
223
190
  var (
224
- // _ simapp.App = (*GaiaApp)(nil)
225
- // _ servertypes.Application = (*GaiaApp)(nil)
226
-
227
191
  _ runtime.AppI = (*GaiaApp)(nil)
228
192
  _ servertypes.Application = (*GaiaApp)(nil)
229
193
  // _ ibctesting.TestingApp = (*GaiaApp)(nil)
230
194
  )
231
195
 
232
196
  // GaiaApp extends an ABCI application, but with most of its parameters exported.
233
- // They are exported for convenience in creating helper functions, as object
197
+ // They are exported for convenience in cr1eating helper functions, as object
234
198
  // capabilities aren't needed for testing.
235
199
  type GaiaApp struct { // nolint: golint
236
200
  *baseapp.BaseApp
@@ -238,6 +202,7 @@ type GaiaApp struct { // nolint: golint
238
202
  legacyAmino *codec.LegacyAmino
239
203
  appCodec codec.Codec
240
204
  interfaceRegistry types.InterfaceRegistry
205
+ txConfig client.TxConfig
241
206
 
242
207
  controllerInited bool
243
208
  bootstrapNeeded bool
@@ -264,7 +229,7 @@ type GaiaApp struct { // nolint: golint
264
229
  AccountKeeper authkeeper.AccountKeeper
265
230
  BankKeeper bankkeeper.Keeper
266
231
  CapabilityKeeper *capabilitykeeper.Keeper
267
- StakingKeeper stakingkeeper.Keeper
232
+ StakingKeeper *stakingkeeper.Keeper
268
233
  SlashingKeeper slashingkeeper.Keeper
269
234
  MintKeeper mintkeeper.Keeper
270
235
  DistrKeeper distrkeeper.Keeper
@@ -296,8 +261,9 @@ type GaiaApp struct { // nolint: golint
296
261
  ScopedICAHostKeeper capabilitykeeper.ScopedKeeper
297
262
  ScopedVibcKeeper capabilitykeeper.ScopedKeeper
298
263
 
299
- // the module manager
300
- ModuleManager *module.Manager
264
+ // the module managers
265
+ ModuleManager *module.Manager
266
+ BasicModuleManager module.BasicManager
301
267
 
302
268
  // simulation manager
303
269
  sm *module.SimulationManager
@@ -324,6 +290,7 @@ func NewSimApp(
324
290
  var defaultController vm.Sender = func(ctx context.Context, needReply bool, jsonRequest string) (jsonReply string, err error) {
325
291
  return "", fmt.Errorf("unexpected VM upcall with no controller: %s", jsonRequest)
326
292
  }
293
+
327
294
  app := NewAgoricApp(
328
295
  defaultController, vm.NewAgdServer(),
329
296
  logger, db, traceStore, loadLatest, appOpts, baseAppOptions...,
@@ -349,19 +316,47 @@ func NewAgoricApp(
349
316
  for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) {
350
317
  skipUpgradeHeights[int64(h)] = true
351
318
  }
352
- encodingConfig := MakeEncodingConfig()
353
319
 
354
- appCodec := encodingConfig.Marshaler
355
- legacyAmino := encodingConfig.Amino
356
- interfaceRegistry := encodingConfig.InterfaceRegistry
320
+ signingOptions := signing.Options{
321
+ AddressCodec: address.Bech32Codec{
322
+ Bech32Prefix: sdk.GetConfig().GetBech32AccountAddrPrefix(),
323
+ },
324
+ ValidatorAddressCodec: address.Bech32Codec{
325
+ Bech32Prefix: sdk.GetConfig().GetBech32ValidatorAddrPrefix(),
326
+ },
327
+ }
328
+
329
+ DefineCustomGetSigners(&signingOptions)
330
+
331
+ interfaceRegistry, _ := types.NewInterfaceRegistryWithOptions(types.InterfaceRegistryOptions{
332
+ ProtoFiles: proto.HybridResolver,
333
+ SigningOptions: signingOptions,
334
+ })
335
+ appCodec := codec.NewProtoCodec(interfaceRegistry)
336
+ legacyAmino := codec.NewLegacyAmino()
337
+
338
+ txConfig, err := txconfig.NewTxConfigWithOptionsWithCustomEncoders(appCodec, authtx.ConfigOptions{
339
+ EnabledSignModes: authtx.DefaultSignModes,
340
+ CustomSignModes: []signing.SignModeHandler{},
341
+ })
342
+ if err != nil {
343
+ panic(err)
344
+ }
345
+
346
+ if err := interfaceRegistry.SigningContext().Validate(); err != nil {
347
+ panic(err)
348
+ }
349
+
350
+ std.RegisterLegacyAminoCodec(legacyAmino)
351
+ std.RegisterInterfaces(interfaceRegistry)
357
352
 
358
- bApp := baseapp.NewBaseApp(appName, logger, db, encodingConfig.TxConfig.TxDecoder(), baseAppOptions...)
353
+ bApp := baseapp.NewBaseApp(appName, logger, db, txConfig.TxDecoder(), baseAppOptions...)
359
354
  bApp.SetCommitMultiStoreTracer(traceStore)
360
355
  bApp.SetVersion(version.Version)
361
356
  bApp.SetInterfaceRegistry(interfaceRegistry)
362
- bApp.SetTxEncoder(encodingConfig.TxConfig.TxEncoder())
357
+ bApp.SetTxEncoder(txConfig.TxEncoder())
363
358
 
364
- keys := sdk.NewKVStoreKeys(
359
+ keys := storetypes.NewKVStoreKeys(
365
360
  authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
366
361
  minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey,
367
362
  govtypes.StoreKey, paramstypes.StoreKey, ibcexported.StoreKey, upgradetypes.StoreKey,
@@ -370,8 +365,8 @@ func NewAgoricApp(
370
365
  swingset.StoreKey, vstorage.StoreKey, vibc.StoreKey,
371
366
  vlocalchain.StoreKey, vtransfer.StoreKey, vbank.StoreKey, consensusparamstypes.StoreKey,
372
367
  )
373
- tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey)
374
- memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey)
368
+ tkeys := storetypes.NewTransientStoreKeys(paramstypes.TStoreKey, vbanktypes.TStoreKey)
369
+ memKeys := storetypes.NewMemoryStoreKeys(capabilitytypes.MemStoreKey)
375
370
 
376
371
  app := &GaiaApp{
377
372
  BaseApp: bApp,
@@ -379,6 +374,7 @@ func NewAgoricApp(
379
374
  resolvedConfig: appOpts,
380
375
  legacyAmino: legacyAmino,
381
376
  appCodec: appCodec,
377
+ txConfig: txConfig,
382
378
  interfaceRegistry: interfaceRegistry,
383
379
  invCheckPeriod: invCheckPeriod,
384
380
  keys: keys,
@@ -395,12 +391,13 @@ func NewAgoricApp(
395
391
 
396
392
  app.ConsensusParamsKeeper = consensusparamskeeper.NewKeeper(
397
393
  appCodec,
398
- keys[consensusparamstypes.StoreKey],
394
+ runtime.NewKVStoreService(keys[consensusparamstypes.StoreKey]),
399
395
  authtypes.NewModuleAddress(govtypes.ModuleName).String(),
396
+ runtime.EventService{},
400
397
  )
401
398
 
402
399
  // set the BaseApp's parameter store
403
- bApp.SetParamStore(&app.ConsensusParamsKeeper)
400
+ bApp.SetParamStore(app.ConsensusParamsKeeper.ParamsStore)
404
401
 
405
402
  // add capability keeper and ScopeToModule for ibc module
406
403
  app.CapabilityKeeper = capabilitykeeper.NewKeeper(appCodec, keys[capabilitytypes.StoreKey], memKeys[capabilitytypes.MemStoreKey])
@@ -414,42 +411,48 @@ func NewAgoricApp(
414
411
 
415
412
  app.AccountKeeper = authkeeper.NewAccountKeeper(
416
413
  appCodec,
417
- keys[authtypes.StoreKey],
414
+ runtime.NewKVStoreService(keys[authtypes.StoreKey]),
418
415
  authtypes.ProtoBaseAccount,
419
416
  maccPerms,
420
- sdk.Bech32MainPrefix,
417
+ authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()),
418
+ sdk.GetConfig().GetBech32AccountAddrPrefix(),
421
419
  authtypes.NewModuleAddress(govtypes.ModuleName).String(),
422
420
  )
423
421
 
424
422
  app.BankKeeper = bankkeeper.NewBaseKeeper(
425
423
  appCodec,
426
- keys[banktypes.StoreKey],
424
+ runtime.NewKVStoreService(keys[banktypes.StoreKey]),
427
425
  app.AccountKeeper,
428
426
  BlockedAddresses(),
429
427
  authtypes.NewModuleAddress(govtypes.ModuleName).String(),
428
+ bApp.Logger(),
430
429
  )
430
+
431
431
  app.AuthzKeeper = authzkeeper.NewKeeper(
432
- keys[authzkeeper.StoreKey],
432
+ runtime.NewKVStoreService(keys[authzkeeper.StoreKey]),
433
433
  appCodec,
434
434
  app.BaseApp.MsgServiceRouter(),
435
435
  app.AccountKeeper,
436
436
  )
437
+
437
438
  app.FeeGrantKeeper = feegrantkeeper.NewKeeper(
438
439
  appCodec,
439
- keys[feegrant.StoreKey],
440
+ runtime.NewKVStoreService(keys[feegrant.StoreKey]),
440
441
  app.AccountKeeper,
441
442
  )
442
- app.StakingKeeper = *stakingkeeper.NewKeeper(
443
+ app.StakingKeeper = stakingkeeper.NewKeeper(
443
444
  appCodec,
444
- keys[stakingtypes.StoreKey],
445
+ runtime.NewKVStoreService(keys[stakingtypes.StoreKey]),
445
446
  app.AccountKeeper,
446
447
  app.BankKeeper,
447
448
  authtypes.NewModuleAddress(govtypes.ModuleName).String(),
449
+ address.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()),
450
+ address.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()),
448
451
  )
449
452
 
450
453
  app.MintKeeper = mintkeeper.NewKeeper(
451
454
  appCodec,
452
- keys[minttypes.StoreKey],
455
+ runtime.NewKVStoreService(keys[minttypes.StoreKey]),
453
456
  app.StakingKeeper,
454
457
  app.AccountKeeper,
455
458
  app.BankKeeper,
@@ -459,7 +462,7 @@ func NewAgoricApp(
459
462
 
460
463
  distrKeeper := distrkeeper.NewKeeper(
461
464
  appCodec,
462
- keys[distrtypes.StoreKey],
465
+ runtime.NewKVStoreService(keys[distrtypes.StoreKey]),
463
466
  app.AccountKeeper,
464
467
  app.BankKeeper,
465
468
  app.StakingKeeper,
@@ -471,7 +474,7 @@ func NewAgoricApp(
471
474
  app.SlashingKeeper = slashingkeeper.NewKeeper(
472
475
  appCodec,
473
476
  legacyAmino,
474
- keys[slashingtypes.StoreKey],
477
+ runtime.NewKVStoreService(keys[slashingtypes.StoreKey]),
475
478
  app.StakingKeeper,
476
479
  authtypes.NewModuleAddress(govtypes.ModuleName).String(),
477
480
  )
@@ -484,7 +487,7 @@ func NewAgoricApp(
484
487
 
485
488
  app.UpgradeKeeper = upgradekeeper.NewKeeper(
486
489
  skipUpgradeHeights,
487
- keys[upgradetypes.StoreKey],
490
+ runtime.NewKVStoreService(keys[upgradetypes.StoreKey]),
488
491
  appCodec,
489
492
  homePath,
490
493
  app.BaseApp,
@@ -502,6 +505,7 @@ func NewAgoricApp(
502
505
  app.StakingKeeper,
503
506
  app.UpgradeKeeper,
504
507
  scopedIBCKeeper,
508
+ authtypes.NewModuleAddress(govtypes.ModuleName).String(),
505
509
  )
506
510
 
507
511
  // This function is tricky to get right, so we build it ourselves.
@@ -517,15 +521,18 @@ func NewAgoricApp(
517
521
  }
518
522
 
519
523
  app.VstorageKeeper = vstorage.NewKeeper(
520
- keys[vstorage.StoreKey],
524
+ vstorage.StoreKey,
525
+ runtime.NewKVStoreService(keys[vstorage.StoreKey]),
521
526
  )
522
527
  app.vstoragePort = app.AgdServer.MustRegisterPortHandler("vstorage", vstorage.NewStorageHandler(app.VstorageKeeper))
523
528
 
524
529
  // The SwingSetKeeper is the Keeper from the SwingSet module
525
530
  app.SwingSetKeeper = swingset.NewKeeper(
526
- appCodec, keys[swingset.StoreKey], app.GetSubspace(swingset.ModuleName),
531
+ appCodec, runtime.NewKVStoreService(keys[swingset.StoreKey]),
532
+ app.GetSubspace(swingset.ModuleName),
527
533
  app.AccountKeeper, app.BankKeeper,
528
534
  app.VstorageKeeper, vbanktypes.ReservePoolName,
535
+ authtypes.NewModuleAddress(govtypes.ModuleName).String(),
529
536
  callToController,
530
537
  )
531
538
  app.swingsetPort = app.AgdServer.MustRegisterPortHandler("swingset", swingset.NewPortHandler(app.SwingSetKeeper))
@@ -563,9 +570,13 @@ func NewAgoricApp(
563
570
  app.VibcKeeper = vibc.NewKeeper(
564
571
  appCodec,
565
572
  app.IBCKeeper.ChannelKeeper,
566
- &app.IBCKeeper.PortKeeper,
573
+ app.IBCKeeper.PortKeeper,
567
574
  app.IBCKeeper.ClientKeeper,
568
- ).WithScope(keys[vibc.StoreKey], scopedVibcKeeper, app.SwingSetKeeper.PushAction)
575
+ ).WithScope(
576
+ runtime.NewKVStoreService(keys[vibc.StoreKey]),
577
+ scopedVibcKeeper,
578
+ app.SwingSetKeeper.PushAction,
579
+ )
569
580
 
570
581
  vibcModule := vibc.NewAppModule(app.VibcKeeper, app.BankKeeper)
571
582
  vibcIBCModule := vibc.NewIBCModule(app.VibcKeeper)
@@ -573,7 +584,7 @@ func NewAgoricApp(
573
584
 
574
585
  app.VtransferKeeper = vtransferkeeper.NewKeeper(
575
586
  appCodec,
576
- keys[vtransfer.StoreKey],
587
+ runtime.NewKVStoreService(keys[vtransfer.StoreKey]),
577
588
  app.VibcKeeper,
578
589
  scopedTransferKeeper,
579
590
  app.SwingSetKeeper.PushAction,
@@ -585,7 +596,10 @@ func NewAgoricApp(
585
596
  )
586
597
 
587
598
  app.VbankKeeper = vbank.NewKeeper(
588
- appCodec, keys[vbank.StoreKey], app.GetSubspace(vbank.ModuleName),
599
+ appCodec,
600
+ runtime.NewKVStoreService(keys[vbank.StoreKey]),
601
+ runtime.NewTransientStoreService(tkeys[vbanktypes.TStoreKey]),
602
+ app.GetSubspace(vbank.ModuleName),
589
603
  app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName,
590
604
  app.SwingSetKeeper.PushAction,
591
605
  )
@@ -597,17 +611,17 @@ func NewAgoricApp(
597
611
  govRouter.
598
612
  AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler).
599
613
  AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)).
600
- AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)).
601
614
  AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)).
602
615
  AddRoute(swingsettypes.RouterKey, swingset.NewSwingSetProposalHandler(app.SwingSetKeeper))
603
616
  govConfig := govtypes.DefaultConfig()
604
617
 
605
618
  app.GovKeeper = govkeeper.NewKeeper(
606
619
  appCodec,
607
- keys[govtypes.StoreKey],
620
+ runtime.NewKVStoreService(keys[govtypes.StoreKey]),
608
621
  app.AccountKeeper,
609
622
  app.BankKeeper,
610
623
  app.StakingKeeper,
624
+ app.DistrKeeper,
611
625
  app.MsgServiceRouter(),
612
626
  govConfig,
613
627
  authtypes.NewModuleAddress(govtypes.ModuleName).String(),
@@ -639,10 +653,11 @@ func NewAgoricApp(
639
653
  app.GetSubspace(ibctransfertypes.ModuleName),
640
654
  app.PacketForwardKeeper, // Wire in the middleware ICS4Wrapper.
641
655
  app.IBCKeeper.ChannelKeeper,
642
- &app.IBCKeeper.PortKeeper,
656
+ app.IBCKeeper.PortKeeper,
643
657
  app.AccountKeeper,
644
658
  app.BankKeeper,
645
659
  scopedTransferKeeper,
660
+ authtypes.NewModuleAddress(govtypes.ModuleName).String(),
646
661
  )
647
662
 
648
663
  app.PacketForwardKeeper.SetTransferKeeper(app.TransferKeeper)
@@ -655,10 +670,11 @@ func NewAgoricApp(
655
670
  app.GetSubspace(icahosttypes.SubModuleName),
656
671
  app.IBCKeeper.ChannelKeeper, // This is where middleware binding would happen.
657
672
  app.IBCKeeper.ChannelKeeper,
658
- &app.IBCKeeper.PortKeeper,
673
+ app.IBCKeeper.PortKeeper,
659
674
  app.AccountKeeper,
660
675
  scopedICAHostKeeper,
661
676
  app.MsgServiceRouter(),
677
+ authtypes.NewModuleAddress(govtypes.ModuleName).String(),
662
678
  )
663
679
  app.ICAHostKeeper.WithQueryRouter(app.GRPCQueryRouter())
664
680
 
@@ -666,7 +682,6 @@ func NewAgoricApp(
666
682
  icaModule := ica.NewAppModule(nil, &app.ICAHostKeeper)
667
683
 
668
684
  ics20TransferModule := ibctransfer.NewAppModule(app.TransferKeeper)
669
-
670
685
  // Create the IBC router, which maps *module names* (not PortIDs) to modules.
671
686
  ibcRouter := ibcporttypes.NewRouter()
672
687
 
@@ -685,7 +700,6 @@ func NewAgoricApp(
685
700
  app.PacketForwardKeeper,
686
701
  0, // retries on timeout
687
702
  packetforwardkeeper.DefaultForwardTransferPacketTimeoutTimestamp, // forward timeout
688
- packetforwardkeeper.DefaultRefundTransferPacketTimeoutTimestamp, // refund timeout
689
703
  )
690
704
  ics20TransferIBCModule = vtransfer.NewIBCMiddleware(ics20TransferIBCModule, app.VtransferKeeper)
691
705
  ibcRouter.AddRoute(ibctransfertypes.ModuleName, ics20TransferIBCModule)
@@ -710,11 +724,13 @@ func NewAgoricApp(
710
724
  // create evidence keeper with router
711
725
  evidenceKeeper := evidencekeeper.NewKeeper(
712
726
  appCodec,
713
- keys[evidencetypes.StoreKey],
727
+ runtime.NewKVStoreService(keys[evidencetypes.StoreKey]),
714
728
  app.StakingKeeper,
715
729
  app.SlashingKeeper,
730
+ app.AccountKeeper.AddressCodec(),
731
+ runtime.ProvideCometInfoService(),
716
732
  )
717
-
733
+ // If evidence needs to be handled for the app, set routes in router here and seal
718
734
  app.EvidenceKeeper = *evidenceKeeper
719
735
 
720
736
  swingStoreExportDir := cast.ToString(appOpts.Get(FlagSwingStoreExportDir))
@@ -726,8 +742,8 @@ func NewAgoricApp(
726
742
  genutil.NewAppModule(
727
743
  app.AccountKeeper,
728
744
  app.StakingKeeper,
729
- app.BaseApp.DeliverTx,
730
- encodingConfig.TxConfig,
745
+ app,
746
+ app.txConfig,
731
747
  ),
732
748
  auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
733
749
  vesting.NewAppModule(app.AccountKeeper, app.BankKeeper, app.StakingKeeper),
@@ -735,14 +751,16 @@ func NewAgoricApp(
735
751
  capability.NewAppModule(appCodec, *app.CapabilityKeeper, false),
736
752
  gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)),
737
753
  mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper, nil, app.GetSubspace(minttypes.ModuleName)),
738
- slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName)),
754
+ slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry),
739
755
  distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(distrtypes.ModuleName)),
740
- staking.NewAppModule(appCodec, &app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)),
741
- upgrade.NewAppModule(app.UpgradeKeeper),
756
+ staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)),
757
+ upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.AddressCodec()),
742
758
  evidence.NewAppModule(app.EvidenceKeeper),
743
759
  feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry),
744
760
  authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry),
745
761
  ibc.NewAppModule(app.IBCKeeper),
762
+ ibctm.NewAppModule(),
763
+ ibcsolo.NewAppModule(),
746
764
  params.NewAppModule(app.ParamsKeeper),
747
765
  ics20TransferModule,
748
766
  icaModule,
@@ -761,6 +779,31 @@ func NewAgoricApp(
761
779
  vtransferModule,
762
780
  )
763
781
 
782
+ // BasicModuleManager defines the module BasicManager is in charge of setting up basic,
783
+ // non-dependant module elements, such as codec registration and genesis verification.
784
+ // By default it is composed of all the module from the module manager.
785
+ // Additionally, app module basics can be overwritten by passing them as argument.
786
+ app.BasicModuleManager = module.NewBasicManagerFromManager(
787
+ app.ModuleManager,
788
+ map[string]module.AppModuleBasic{
789
+ genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator),
790
+ govtypes.ModuleName: gov.NewAppModuleBasic(
791
+ []govclient.ProposalHandler{
792
+ paramsclient.ProposalHandler,
793
+ swingsetclient.CoreEvalProposalHandler,
794
+ },
795
+ ),
796
+ })
797
+ app.BasicModuleManager.RegisterLegacyAminoCodec(legacyAmino)
798
+ app.BasicModuleManager.RegisterInterfaces(interfaceRegistry)
799
+
800
+ // According to the upgrading guide (https://github.com/cosmos/cosmos-sdk/blob/main/UPGRADING.md#set-preblocker),
801
+ //upgrade types need to be added to the pre-blocker. While this part has been implemented, the guide also states
802
+ //that these types should be removed from begin blocker. If we need to actually remove them, we would need to modify
803
+ // the SetOrderBeginBlockers logic. However, it's unclear whether this removal is strictly required or optional.
804
+ app.ModuleManager.SetOrderPreBlockers(upgradetypes.ModuleName)
805
+ app.SetPreBlocker(app.PreBlocker)
806
+
764
807
  // During begin block slashing happens after distr.BeginBlocker so that
765
808
  // there is nothing left over in the validator fee pool, so as to keep the
766
809
  // CanWithdrawInvariant invariant.
@@ -768,8 +811,6 @@ func NewAgoricApp(
768
811
  // NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC)
769
812
  app.ModuleManager.SetOrderBeginBlockers(
770
813
  // Cosmos-SDK modules appear roughly in the order used by simapp and gaiad.
771
- // upgrades should be run first
772
- upgradetypes.ModuleName,
773
814
  capabilitytypes.ModuleName,
774
815
  // params influence many other modules, so it should be near the top.
775
816
  paramstypes.ModuleName,
@@ -840,10 +881,10 @@ func NewAgoricApp(
840
881
  // can do so safely.
841
882
 
842
883
  moduleOrderForGenesisAndUpgrade := []string{
884
+ paramstypes.ModuleName,
843
885
  capabilitytypes.ModuleName,
844
886
  authtypes.ModuleName,
845
887
  banktypes.ModuleName,
846
- paramstypes.ModuleName,
847
888
  distrtypes.ModuleName,
848
889
  stakingtypes.ModuleName,
849
890
  slashingtypes.ModuleName,
@@ -852,6 +893,8 @@ func NewAgoricApp(
852
893
  ibctransfertypes.ModuleName,
853
894
  packetforwardtypes.ModuleName,
854
895
  ibcexported.ModuleName,
896
+ ibcsolo.ModuleName,
897
+ ibctm.ModuleName,
855
898
  icatypes.ModuleName,
856
899
  evidencetypes.ModuleName,
857
900
  feegrant.ModuleName,
@@ -886,9 +929,8 @@ func NewAgoricApp(
886
929
  // NOTE: this is not required apps that don't use the simulator for fuzz testing
887
930
  // transactions
888
931
  overrideModules := map[string]module.AppModuleSimulation{
889
- authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
932
+ authtypes.ModuleName: auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
890
933
  }
891
-
892
934
  app.sm = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules)
893
935
 
894
936
  app.sm.RegisterStoreDecoders()
@@ -904,7 +946,7 @@ func NewAgoricApp(
904
946
  AccountKeeper: app.AccountKeeper,
905
947
  BankKeeper: app.BankKeeper,
906
948
  FeegrantKeeper: app.FeeGrantKeeper,
907
- SignModeHandler: encodingConfig.TxConfig.SignModeHandler(),
949
+ SignModeHandler: app.txConfig.SignModeHandler(),
908
950
  SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
909
951
  },
910
952
  IBCKeeper: app.IBCKeeper,
@@ -935,7 +977,9 @@ func NewAgoricApp(
935
977
  // another, which shouldn't re-run store upgrades.
936
978
  if isPrimaryUpgradeName(upgradeInfo.Name) && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
937
979
  storeUpgrades := storetypes.StoreUpgrades{
938
- Added: []string{consensusparamstypes.StoreKey},
980
+ Added: []string{
981
+ capabilitytypes.MemStoreKey,
982
+ },
939
983
  Deleted: []string{},
940
984
  }
941
985
 
@@ -966,18 +1010,20 @@ func NewAgoricApp(
966
1010
  // normalizeModuleAccount ensures that the given account is a module account,
967
1011
  // initializing or updating it if necessary. The account name must be listed in maccPerms.
968
1012
  func normalizeModuleAccount(ctx sdk.Context, ak authkeeper.AccountKeeper, name string) {
969
- addr := ak.GetModuleAddress(name)
970
- acct := ak.GetAccount(ctx, addr)
971
- if _, ok := acct.(authtypes.ModuleAccountI); ok {
1013
+ ma := ak.GetModuleAccount(ctx, name)
1014
+ if ma != nil {
1015
+ // Properly modular.
972
1016
  return
973
1017
  }
974
- perms := maccPerms[name]
975
- newAcct := authtypes.NewEmptyModuleAccount(name, perms...)
976
- if acct != nil {
977
- newAcct.AccountNumber = acct.GetAccountNumber()
978
- newAcct.Sequence = acct.GetSequence()
1018
+ shadow := ak.GetAccount(ctx, authtypes.NewModuleAddress(name))
1019
+ if shadow == nil {
1020
+ panic(fmt.Errorf("module account %s shadow not found in account store", name))
979
1021
  }
980
- ak.SetModuleAccount(ctx, newAcct)
1022
+
1023
+ perms := maccPerms[name]
1024
+ base := authtypes.NewBaseAccount(shadow.GetAddress(), shadow.GetPubKey(), shadow.GetAccountNumber(), shadow.GetSequence())
1025
+ ma = authtypes.NewModuleAccount(base, name, perms...)
1026
+ ak.SetModuleAccount(ctx, ma)
981
1027
  }
982
1028
 
983
1029
  type upgradeDetails struct {
@@ -1006,6 +1052,18 @@ type cosmosInitAction struct {
1006
1052
  // Name returns the name of the App
1007
1053
  func (app *GaiaApp) Name() string { return app.BaseApp.Name() }
1008
1054
 
1055
+ // PreBlocker application updates before each begin block.
1056
+ func (app *GaiaApp) PreBlocker(ctx sdk.Context, _ *abci.RequestFinalizeBlock) (*sdk.ResponsePreBlock, error) {
1057
+ // Set gas meter to the free gas meter.
1058
+ // This is because there is currently non-deterministic gas usage in the
1059
+ // pre-blocker, e.g. due to hydration of in-memory data structures.
1060
+ //
1061
+ // Note that we don't need to reset the gas meter after the pre-blocker
1062
+ // because Go is pass by value.
1063
+ ctx = ctx.WithGasMeter(storetypes.NewInfiniteGasMeter())
1064
+ return app.ModuleManager.PreBlock(ctx)
1065
+ }
1066
+
1009
1067
  // CheckControllerInited exits if the controller initialization state does not match `expected`.
1010
1068
  func (app *GaiaApp) CheckControllerInited(expected bool) {
1011
1069
  if app.controllerInited != expected {
@@ -1082,27 +1140,30 @@ func (app *GaiaApp) ensureControllerInited(ctx sdk.Context) {
1082
1140
  }
1083
1141
 
1084
1142
  // BeginBlocker application updates every begin block
1085
- func (app *GaiaApp) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock {
1086
- return app.ModuleManager.BeginBlock(ctx, req)
1143
+ func (app *GaiaApp) BeginBlocker(ctx sdk.Context) (sdk.BeginBlock, error) {
1144
+ return app.ModuleManager.BeginBlock(ctx)
1087
1145
  }
1088
1146
 
1089
1147
  // EndBlocker application updates every end block
1090
- func (app *GaiaApp) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock {
1091
- return app.ModuleManager.EndBlock(ctx, req)
1148
+ func (app *GaiaApp) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) {
1149
+ return app.ModuleManager.EndBlock(ctx)
1092
1150
  }
1093
1151
 
1094
1152
  // InitChainer application update at chain initialization
1095
- func (app *GaiaApp) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain {
1153
+ func (app *GaiaApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) {
1096
1154
  var genesisState GenesisState
1097
1155
  if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil {
1098
- panic(err)
1156
+ return nil, err
1099
1157
  }
1100
1158
 
1101
1159
  app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap())
1102
- res := app.ModuleManager.InitGenesis(ctx, app.appCodec, genesisState)
1160
+ res, err := app.ModuleManager.InitGenesis(ctx, app.appCodec, genesisState)
1161
+ if err != nil {
1162
+ return nil, err
1163
+ }
1103
1164
 
1104
1165
  // initialize the provision and reserve module accounts, to avoid their implicit creation
1105
- // as a default account upon receiving a transfer. See BlockedAddrs().
1166
+ // as a default account upon receiving a transfer. See BlockedAddresses().
1106
1167
  normalizeModuleAccount(ctx, app.AccountKeeper, vbanktypes.ProvisionPoolName)
1107
1168
  normalizeModuleAccount(ctx, app.AccountKeeper, vbanktypes.ReservePoolName)
1108
1169
 
@@ -1118,28 +1179,29 @@ func (app *GaiaApp) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci
1118
1179
  stdlog.Printf("Genesis time %s is in %s\n", genTime, d)
1119
1180
  }
1120
1181
 
1121
- return res
1182
+ return res, nil
1122
1183
  }
1123
1184
 
1124
1185
  // Commit tells the controller that the block is commited
1125
- func (app *GaiaApp) Commit() abci.ResponseCommit {
1186
+ func (app *GaiaApp) Commit() (*abci.ResponseCommit, error) {
1126
1187
  err := swingsetkeeper.WaitUntilSwingStoreExportStarted()
1127
1188
 
1128
1189
  if err != nil {
1129
1190
  app.Logger().Error("swing-store export failed to start", "err", err)
1191
+ // failing to perform a swing-store export is not fatal.
1130
1192
  }
1131
1193
 
1132
1194
  // Frontrun the BaseApp's Commit method
1133
1195
  err = swingset.CommitBlock(app.SwingSetKeeper)
1134
1196
  if err != nil {
1135
- panic(err.Error())
1197
+ return nil, err
1136
1198
  }
1137
1199
 
1138
- res, snapshotHeight := app.BaseApp.CommitWithoutSnapshot()
1200
+ res, snapshotHeight, err := app.BaseApp.CommitWithoutSnapshot()
1139
1201
 
1140
1202
  err = swingset.AfterCommitBlock(app.SwingSetKeeper)
1141
1203
  if err != nil {
1142
- panic(err.Error())
1204
+ return nil, err
1143
1205
  }
1144
1206
 
1145
1207
  if snapshotHeight > 0 {
@@ -1147,10 +1209,11 @@ func (app *GaiaApp) Commit() abci.ResponseCommit {
1147
1209
 
1148
1210
  if err != nil {
1149
1211
  app.Logger().Error("failed to initiate swingset snapshot", "err", err)
1212
+ // failing to initiate a snapshot is not fatal. It can happen e.g. if a snapshot is already in progress
1150
1213
  }
1151
1214
  }
1152
1215
 
1153
- return res
1216
+ return res, nil
1154
1217
  }
1155
1218
 
1156
1219
  // LoadHeight loads a particular height
@@ -1229,6 +1292,11 @@ func (app *GaiaApp) GetMemKey(storeKey string) *storetypes.MemoryStoreKey {
1229
1292
  return app.memKeys[storeKey]
1230
1293
  }
1231
1294
 
1295
+ func DefineCustomGetSigners(signingOptions *signing.Options) {
1296
+ swingsettypes.DefineCustomGetSigners(signingOptions)
1297
+ vibctypes.DefineCustomGetSigners(signingOptions)
1298
+ }
1299
+
1232
1300
  // GetSubspace returns a param subspace for a given module name.
1233
1301
  //
1234
1302
  // NOTE: This is solely to be used for testing purposes.
@@ -1250,16 +1318,17 @@ func (app *GaiaApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APICo
1250
1318
  authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1251
1319
 
1252
1320
  // Register new tendermint queries routes from grpc-gateway.
1253
- tmservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1321
+ cmtservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1254
1322
 
1255
1323
  // Register node gRPC service for grpc-gateway.
1256
1324
  nodeservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1257
1325
 
1258
1326
  // Register grpc-gateway routes for all modules.
1259
- ModuleBasics.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1327
+ app.BasicModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1260
1328
 
1261
1329
  // register swagger API from root so that other applications can override easily
1262
- if apiConfig.Swagger {
1330
+ // XXX figure out how to build the docs to make them available from the _ import above
1331
+ if false && apiConfig.Swagger {
1263
1332
  RegisterSwaggerAPI(apiSvr.Router)
1264
1333
  }
1265
1334
  }
@@ -1271,7 +1340,7 @@ func (app *GaiaApp) RegisterTxService(clientCtx client.Context) {
1271
1340
 
1272
1341
  // RegisterTendermintService implements the Application.RegisterTendermintService method.
1273
1342
  func (app *GaiaApp) RegisterTendermintService(clientCtx client.Context) {
1274
- tmservice.RegisterTendermintService(clientCtx, app.BaseApp.GRPCQueryRouter(), app.interfaceRegistry, app.Query)
1343
+ cmtservice.RegisterTendermintService(clientCtx, app.BaseApp.GRPCQueryRouter(), app.interfaceRegistry, app.Query)
1275
1344
  }
1276
1345
 
1277
1346
  // RegisterSwaggerAPI registers swagger route with API Server
@@ -1298,17 +1367,10 @@ func GetMaccPerms() map[string][]string {
1298
1367
  func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper {
1299
1368
  paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey)
1300
1369
 
1301
- paramsKeeper.Subspace(authtypes.ModuleName)
1302
- paramsKeeper.Subspace(banktypes.ModuleName)
1303
- paramsKeeper.Subspace(stakingtypes.ModuleName)
1304
- paramsKeeper.Subspace(minttypes.ModuleName)
1305
- paramsKeeper.Subspace(distrtypes.ModuleName)
1306
- paramsKeeper.Subspace(slashingtypes.ModuleName)
1307
- paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypesv1.ParamKeyTable())
1308
- paramsKeeper.Subspace(ibctransfertypes.ModuleName)
1309
- paramsKeeper.Subspace(packetforwardtypes.ModuleName).WithKeyTable(packetforwardtypes.ParamKeyTable())
1370
+ // Subspaces can be removed after upgrade of params.
1310
1371
  paramsKeeper.Subspace(ibcexported.ModuleName)
1311
1372
  paramsKeeper.Subspace(icahosttypes.SubModuleName)
1373
+ paramsKeeper.Subspace(ibctransfertypes.ModuleName)
1312
1374
  paramsKeeper.Subspace(swingset.ModuleName)
1313
1375
  paramsKeeper.Subspace(vbank.ModuleName)
1314
1376
 
@@ -1339,7 +1401,27 @@ func (app *GaiaApp) GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper {
1339
1401
 
1340
1402
  // GetTxConfig implements the TestingApp interface.
1341
1403
  func (app *GaiaApp) GetTxConfig() client.TxConfig {
1342
- return MakeEncodingConfig().TxConfig
1404
+ return app.txConfig
1405
+ }
1406
+
1407
+ func (app *GaiaApp) AutoCliOpts() autocli.AppOptions {
1408
+ modules := make(map[string]appmodule.AppModule, 0)
1409
+ for _, m := range app.ModuleManager.Modules {
1410
+ if moduleWithName, ok := m.(module.HasName); ok {
1411
+ moduleName := moduleWithName.Name()
1412
+ if appModule, ok := moduleWithName.(appmodule.AppModule); ok {
1413
+ modules[moduleName] = appModule
1414
+ }
1415
+ }
1416
+ }
1417
+
1418
+ return autocli.AppOptions{
1419
+ Modules: modules,
1420
+ ModuleOptions: runtimeservices.ExtractAutoCLIOptions(app.ModuleManager.Modules),
1421
+ AddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()),
1422
+ ValidatorAddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()),
1423
+ ConsensusAddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()),
1424
+ }
1343
1425
  }
1344
1426
 
1345
1427
  // For testing purposes
@@ -1349,6 +1431,6 @@ func (app *GaiaApp) SetSwingStoreExportDir(dir string) {
1349
1431
  }
1350
1432
 
1351
1433
  // RegisterNodeService implements the Application.RegisterNodeService method.
1352
- func (app *GaiaApp) RegisterNodeService(clientCtx client.Context) {
1353
- nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter())
1434
+ func (app *GaiaApp) RegisterNodeService(clientCtx client.Context, cfg config.Config) {
1435
+ nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter(), cfg)
1354
1436
  }