@agoric/cosmos 0.35.0-u21.0 → 0.35.0-u22.0

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 (113) hide show
  1. package/CHANGELOG.md +11 -187
  2. package/Makefile +2 -2
  3. package/ante/ante.go +2 -2
  4. package/ante/inbound.go +1 -2
  5. package/ante/inbound_test.go +3 -1
  6. package/ante/vm_admission.go +1 -2
  7. package/app/app.go +255 -174
  8. package/app/encoding.go +6 -3
  9. package/app/export.go +50 -21
  10. package/app/genesis.go +7 -5
  11. package/app/params/encoding.go +1 -1
  12. package/app/params/proto.go +6 -4
  13. package/app/sim_test.go +11 -13
  14. package/app/txconfig/tx_config.go +169 -0
  15. package/app/upgrade.go +52 -97
  16. package/app/upgrade_test.go +1 -1
  17. package/cmd/agd/agvm.go +1 -1
  18. package/cmd/agd/main.go +1 -1
  19. package/cmd/libdaemon/main.go +2 -2
  20. package/daemon/cmd/root.go +99 -30
  21. package/daemon/cmd/root_test.go +12 -27
  22. package/daemon/main.go +2 -9
  23. package/git-revision.txt +1 -1
  24. package/go.mod +129 -109
  25. package/go.sum +228 -469
  26. package/package.json +2 -2
  27. package/proto/agoric/swingset/msgs.proto +46 -9
  28. package/proto/agoric/swingset/swingset.proto +7 -2
  29. package/proto/agoric/vbank/vbank.proto +1 -1
  30. package/proto/agoric/vibc/msgs.proto +4 -0
  31. package/tests/e2e/vbank/vbank_test.go +172 -0
  32. package/tests/integrations/types/aminojson_test.go +214 -0
  33. package/tests/integrations/vbank/vbank_test.go +348 -0
  34. package/third_party/proto/amino/amino.proto +6 -1
  35. package/third_party/proto/cosmos/base/v1beta1/coin.proto +18 -5
  36. package/third_party/proto/cosmos/upgrade/v1beta1/upgrade.proto +4 -8
  37. package/third_party/proto/ibc/core/channel/v1/channel.proto +42 -17
  38. package/third_party/proto/ibc/core/client/v1/client.proto +48 -40
  39. package/types/address_hooks.go +2 -2
  40. package/types/address_hooks_test.go +3 -3
  41. package/types/ibc_packet.go +3 -3
  42. package/types/ibc_packet_test.go +3 -3
  43. package/types/kv_entry_helpers.go +3 -3
  44. package/types/kv_entry_helpers_test.go +2 -2
  45. package/types/legacy_address_encoder.go +58 -0
  46. package/vm/proto_json_test.go +1 -1
  47. package/vm/server.go +2 -1
  48. package/x/swingset/abci.go +2 -2
  49. package/x/swingset/client/cli/tx.go +16 -14
  50. package/x/swingset/config.go +1 -1
  51. package/x/swingset/genesis.go +2 -1
  52. package/x/swingset/handler.go +2 -1
  53. package/x/swingset/keeper/extension_snapshotter.go +14 -5
  54. package/x/swingset/keeper/extension_snapshotter_test.go +1 -1
  55. package/x/swingset/keeper/keeper.go +21 -17
  56. package/x/swingset/keeper/keeper_test.go +10 -7
  57. package/x/swingset/keeper/msg_server.go +26 -5
  58. package/x/swingset/keeper/swing_store_exports_handler.go +1 -1
  59. package/x/swingset/keeper/swing_store_exports_handler_test.go +1 -1
  60. package/x/swingset/module.go +20 -22
  61. package/x/swingset/types/codec.go +10 -5
  62. package/x/swingset/types/default-params.go +13 -12
  63. package/x/swingset/types/expected_keepers.go +5 -4
  64. package/x/swingset/types/msgs.go +50 -36
  65. package/x/swingset/types/msgs.pb.go +60 -51
  66. package/x/swingset/types/params_test.go +21 -20
  67. package/x/swingset/types/swingset.pb.go +67 -61
  68. package/x/vbank/genesis.go +12 -8
  69. package/x/vbank/handler.go +2 -1
  70. package/x/vbank/keeper/grpc_query.go +4 -1
  71. package/x/vbank/keeper/keeper.go +108 -23
  72. package/x/vbank/keeper/querier.go +4 -1
  73. package/x/vbank/keeper/rewards.go +6 -2
  74. package/x/vbank/module.go +47 -75
  75. package/x/vbank/types/expected_keepers.go +15 -10
  76. package/x/vbank/types/key.go +3 -0
  77. package/x/vbank/types/params.go +4 -3
  78. package/x/vbank/types/vbank.pb.go +41 -40
  79. package/x/vbank/vbank.go +25 -10
  80. package/x/vbank/vbank_test.go +213 -154
  81. package/x/vibc/handler.go +2 -1
  82. package/x/vibc/keeper/keeper.go +10 -10
  83. package/x/vibc/keeper/migrations.go +1 -1
  84. package/x/vibc/keeper/triggers.go +1 -1
  85. package/x/vibc/module.go +5 -22
  86. package/x/vibc/types/codec.go +2 -1
  87. package/x/vibc/types/expected_keepers.go +7 -5
  88. package/x/vibc/types/ibc_module.go +5 -5
  89. package/x/vibc/types/msgs.go +30 -7
  90. package/x/vibc/types/msgs.pb.go +29 -25
  91. package/x/vibc/types/receiver.go +2 -2
  92. package/x/vlocalchain/handler.go +2 -1
  93. package/x/vlocalchain/keeper/keeper.go +17 -5
  94. package/x/vlocalchain/keeper/keeper_test.go +3 -2
  95. package/x/vlocalchain/types/expected_keepers.go +7 -4
  96. package/x/vlocalchain/vlocalchain_test.go +38 -26
  97. package/x/vstorage/genesis.go +10 -10
  98. package/x/vstorage/handler.go +2 -1
  99. package/x/vstorage/keeper/keeper.go +68 -46
  100. package/x/vstorage/keeper/keeper_test.go +35 -19
  101. package/x/vstorage/module.go +27 -13
  102. package/x/vstorage/testing/queue.go +5 -3
  103. package/x/vstorage/vstorage.go +2 -1
  104. package/x/vstorage/vstorage_test.go +21 -17
  105. package/x/vtransfer/genesis.go +1 -3
  106. package/x/vtransfer/handler.go +3 -2
  107. package/x/vtransfer/ibc_middleware.go +5 -5
  108. package/x/vtransfer/ibc_middleware_test.go +43 -29
  109. package/x/vtransfer/keeper/keeper.go +35 -33
  110. package/x/vtransfer/module.go +8 -11
  111. package/x/vtransfer/types/expected_keepers.go +3 -3
  112. package/x/vtransfer/utils_test.go +26 -11
  113. 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
+ }
357
345
 
358
- bApp := baseapp.NewBaseApp(appName, logger, db, encodingConfig.TxConfig.TxDecoder(), baseAppOptions...)
346
+ if err := interfaceRegistry.SigningContext().Validate(); err != nil {
347
+ panic(err)
348
+ }
349
+
350
+ std.RegisterLegacyAminoCodec(legacyAmino)
351
+ std.RegisterInterfaces(interfaceRegistry)
352
+
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,13 +521,15 @@ 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,
529
535
  callToController,
@@ -563,9 +569,13 @@ func NewAgoricApp(
563
569
  app.VibcKeeper = vibc.NewKeeper(
564
570
  appCodec,
565
571
  app.IBCKeeper.ChannelKeeper,
566
- &app.IBCKeeper.PortKeeper,
572
+ app.IBCKeeper.PortKeeper,
567
573
  app.IBCKeeper.ClientKeeper,
568
- ).WithScope(keys[vibc.StoreKey], scopedVibcKeeper, app.SwingSetKeeper.PushAction)
574
+ ).WithScope(
575
+ runtime.NewKVStoreService(keys[vibc.StoreKey]),
576
+ scopedVibcKeeper,
577
+ app.SwingSetKeeper.PushAction,
578
+ )
569
579
 
570
580
  vibcModule := vibc.NewAppModule(app.VibcKeeper, app.BankKeeper)
571
581
  vibcIBCModule := vibc.NewIBCModule(app.VibcKeeper)
@@ -573,7 +583,7 @@ func NewAgoricApp(
573
583
 
574
584
  app.VtransferKeeper = vtransferkeeper.NewKeeper(
575
585
  appCodec,
576
- keys[vtransfer.StoreKey],
586
+ runtime.NewKVStoreService(keys[vtransfer.StoreKey]),
577
587
  app.VibcKeeper,
578
588
  scopedTransferKeeper,
579
589
  app.SwingSetKeeper.PushAction,
@@ -585,7 +595,10 @@ func NewAgoricApp(
585
595
  )
586
596
 
587
597
  app.VbankKeeper = vbank.NewKeeper(
588
- appCodec, keys[vbank.StoreKey], app.GetSubspace(vbank.ModuleName),
598
+ appCodec,
599
+ runtime.NewKVStoreService(keys[vbank.StoreKey]),
600
+ runtime.NewTransientStoreService(tkeys[vbanktypes.TStoreKey]),
601
+ app.GetSubspace(vbank.ModuleName),
589
602
  app.AccountKeeper, app.BankKeeper, authtypes.FeeCollectorName,
590
603
  app.SwingSetKeeper.PushAction,
591
604
  )
@@ -597,17 +610,17 @@ func NewAgoricApp(
597
610
  govRouter.
598
611
  AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler).
599
612
  AddRoute(paramproposal.RouterKey, params.NewParamChangeProposalHandler(app.ParamsKeeper)).
600
- AddRoute(upgradetypes.RouterKey, upgrade.NewSoftwareUpgradeProposalHandler(app.UpgradeKeeper)).
601
613
  AddRoute(ibcclienttypes.RouterKey, ibcclient.NewClientProposalHandler(app.IBCKeeper.ClientKeeper)).
602
614
  AddRoute(swingsettypes.RouterKey, swingset.NewSwingSetProposalHandler(app.SwingSetKeeper))
603
615
  govConfig := govtypes.DefaultConfig()
604
616
 
605
617
  app.GovKeeper = govkeeper.NewKeeper(
606
618
  appCodec,
607
- keys[govtypes.StoreKey],
619
+ runtime.NewKVStoreService(keys[govtypes.StoreKey]),
608
620
  app.AccountKeeper,
609
621
  app.BankKeeper,
610
622
  app.StakingKeeper,
623
+ app.DistrKeeper,
611
624
  app.MsgServiceRouter(),
612
625
  govConfig,
613
626
  authtypes.NewModuleAddress(govtypes.ModuleName).String(),
@@ -639,10 +652,11 @@ func NewAgoricApp(
639
652
  app.GetSubspace(ibctransfertypes.ModuleName),
640
653
  app.PacketForwardKeeper, // Wire in the middleware ICS4Wrapper.
641
654
  app.IBCKeeper.ChannelKeeper,
642
- &app.IBCKeeper.PortKeeper,
655
+ app.IBCKeeper.PortKeeper,
643
656
  app.AccountKeeper,
644
657
  app.BankKeeper,
645
658
  scopedTransferKeeper,
659
+ authtypes.NewModuleAddress(govtypes.ModuleName).String(),
646
660
  )
647
661
 
648
662
  app.PacketForwardKeeper.SetTransferKeeper(app.TransferKeeper)
@@ -655,10 +669,11 @@ func NewAgoricApp(
655
669
  app.GetSubspace(icahosttypes.SubModuleName),
656
670
  app.IBCKeeper.ChannelKeeper, // This is where middleware binding would happen.
657
671
  app.IBCKeeper.ChannelKeeper,
658
- &app.IBCKeeper.PortKeeper,
672
+ app.IBCKeeper.PortKeeper,
659
673
  app.AccountKeeper,
660
674
  scopedICAHostKeeper,
661
675
  app.MsgServiceRouter(),
676
+ authtypes.NewModuleAddress(govtypes.ModuleName).String(),
662
677
  )
663
678
  app.ICAHostKeeper.WithQueryRouter(app.GRPCQueryRouter())
664
679
 
@@ -666,7 +681,6 @@ func NewAgoricApp(
666
681
  icaModule := ica.NewAppModule(nil, &app.ICAHostKeeper)
667
682
 
668
683
  ics20TransferModule := ibctransfer.NewAppModule(app.TransferKeeper)
669
-
670
684
  // Create the IBC router, which maps *module names* (not PortIDs) to modules.
671
685
  ibcRouter := ibcporttypes.NewRouter()
672
686
 
@@ -685,7 +699,6 @@ func NewAgoricApp(
685
699
  app.PacketForwardKeeper,
686
700
  0, // retries on timeout
687
701
  packetforwardkeeper.DefaultForwardTransferPacketTimeoutTimestamp, // forward timeout
688
- packetforwardkeeper.DefaultRefundTransferPacketTimeoutTimestamp, // refund timeout
689
702
  )
690
703
  ics20TransferIBCModule = vtransfer.NewIBCMiddleware(ics20TransferIBCModule, app.VtransferKeeper)
691
704
  ibcRouter.AddRoute(ibctransfertypes.ModuleName, ics20TransferIBCModule)
@@ -710,11 +723,13 @@ func NewAgoricApp(
710
723
  // create evidence keeper with router
711
724
  evidenceKeeper := evidencekeeper.NewKeeper(
712
725
  appCodec,
713
- keys[evidencetypes.StoreKey],
726
+ runtime.NewKVStoreService(keys[evidencetypes.StoreKey]),
714
727
  app.StakingKeeper,
715
728
  app.SlashingKeeper,
729
+ app.AccountKeeper.AddressCodec(),
730
+ runtime.ProvideCometInfoService(),
716
731
  )
717
-
732
+ // If evidence needs to be handled for the app, set routes in router here and seal
718
733
  app.EvidenceKeeper = *evidenceKeeper
719
734
 
720
735
  swingStoreExportDir := cast.ToString(appOpts.Get(FlagSwingStoreExportDir))
@@ -726,8 +741,8 @@ func NewAgoricApp(
726
741
  genutil.NewAppModule(
727
742
  app.AccountKeeper,
728
743
  app.StakingKeeper,
729
- app.BaseApp.DeliverTx,
730
- encodingConfig.TxConfig,
744
+ app,
745
+ app.txConfig,
731
746
  ),
732
747
  auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
733
748
  vesting.NewAppModule(app.AccountKeeper, app.BankKeeper, app.StakingKeeper),
@@ -735,14 +750,16 @@ func NewAgoricApp(
735
750
  capability.NewAppModule(appCodec, *app.CapabilityKeeper, false),
736
751
  gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(govtypes.ModuleName)),
737
752
  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)),
753
+ slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper, app.GetSubspace(slashingtypes.ModuleName), app.interfaceRegistry),
739
754
  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),
755
+ staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper, app.GetSubspace(stakingtypes.ModuleName)),
756
+ upgrade.NewAppModule(app.UpgradeKeeper, app.AccountKeeper.AddressCodec()),
742
757
  evidence.NewAppModule(app.EvidenceKeeper),
743
758
  feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry),
744
759
  authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry),
745
760
  ibc.NewAppModule(app.IBCKeeper),
761
+ ibctm.NewAppModule(),
762
+ ibcsolo.NewAppModule(),
746
763
  params.NewAppModule(app.ParamsKeeper),
747
764
  ics20TransferModule,
748
765
  icaModule,
@@ -761,6 +778,31 @@ func NewAgoricApp(
761
778
  vtransferModule,
762
779
  )
763
780
 
781
+ // BasicModuleManager defines the module BasicManager is in charge of setting up basic,
782
+ // non-dependant module elements, such as codec registration and genesis verification.
783
+ // By default it is composed of all the module from the module manager.
784
+ // Additionally, app module basics can be overwritten by passing them as argument.
785
+ app.BasicModuleManager = module.NewBasicManagerFromManager(
786
+ app.ModuleManager,
787
+ map[string]module.AppModuleBasic{
788
+ genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator),
789
+ govtypes.ModuleName: gov.NewAppModuleBasic(
790
+ []govclient.ProposalHandler{
791
+ paramsclient.ProposalHandler,
792
+ swingsetclient.CoreEvalProposalHandler,
793
+ },
794
+ ),
795
+ })
796
+ app.BasicModuleManager.RegisterLegacyAminoCodec(legacyAmino)
797
+ app.BasicModuleManager.RegisterInterfaces(interfaceRegistry)
798
+
799
+ // According to the upgrading guide (https://github.com/cosmos/cosmos-sdk/blob/main/UPGRADING.md#set-preblocker),
800
+ //upgrade types need to be added to the pre-blocker. While this part has been implemented, the guide also states
801
+ //that these types should be removed from begin blocker. If we need to actually remove them, we would need to modify
802
+ // the SetOrderBeginBlockers logic. However, it's unclear whether this removal is strictly required or optional.
803
+ app.ModuleManager.SetOrderPreBlockers(upgradetypes.ModuleName)
804
+ app.SetPreBlocker(app.PreBlocker)
805
+
764
806
  // During begin block slashing happens after distr.BeginBlocker so that
765
807
  // there is nothing left over in the validator fee pool, so as to keep the
766
808
  // CanWithdrawInvariant invariant.
@@ -768,8 +810,6 @@ func NewAgoricApp(
768
810
  // NOTE: capability module's beginblocker must come before any modules using capabilities (e.g. IBC)
769
811
  app.ModuleManager.SetOrderBeginBlockers(
770
812
  // Cosmos-SDK modules appear roughly in the order used by simapp and gaiad.
771
- // upgrades should be run first
772
- upgradetypes.ModuleName,
773
813
  capabilitytypes.ModuleName,
774
814
  // params influence many other modules, so it should be near the top.
775
815
  paramstypes.ModuleName,
@@ -840,10 +880,10 @@ func NewAgoricApp(
840
880
  // can do so safely.
841
881
 
842
882
  moduleOrderForGenesisAndUpgrade := []string{
883
+ paramstypes.ModuleName,
843
884
  capabilitytypes.ModuleName,
844
885
  authtypes.ModuleName,
845
886
  banktypes.ModuleName,
846
- paramstypes.ModuleName,
847
887
  distrtypes.ModuleName,
848
888
  stakingtypes.ModuleName,
849
889
  slashingtypes.ModuleName,
@@ -852,6 +892,8 @@ func NewAgoricApp(
852
892
  ibctransfertypes.ModuleName,
853
893
  packetforwardtypes.ModuleName,
854
894
  ibcexported.ModuleName,
895
+ ibcsolo.ModuleName,
896
+ ibctm.ModuleName,
855
897
  icatypes.ModuleName,
856
898
  evidencetypes.ModuleName,
857
899
  feegrant.ModuleName,
@@ -886,9 +928,8 @@ func NewAgoricApp(
886
928
  // NOTE: this is not required apps that don't use the simulator for fuzz testing
887
929
  // transactions
888
930
  overrideModules := map[string]module.AppModuleSimulation{
889
- authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
931
+ authtypes.ModuleName: auth.NewAppModule(appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts, app.GetSubspace(authtypes.ModuleName)),
890
932
  }
891
-
892
933
  app.sm = module.NewSimulationManagerFromAppModules(app.ModuleManager.Modules, overrideModules)
893
934
 
894
935
  app.sm.RegisterStoreDecoders()
@@ -904,7 +945,7 @@ func NewAgoricApp(
904
945
  AccountKeeper: app.AccountKeeper,
905
946
  BankKeeper: app.BankKeeper,
906
947
  FeegrantKeeper: app.FeeGrantKeeper,
907
- SignModeHandler: encodingConfig.TxConfig.SignModeHandler(),
948
+ SignModeHandler: app.txConfig.SignModeHandler(),
908
949
  SigGasConsumer: ante.DefaultSigVerificationGasConsumer,
909
950
  },
910
951
  IBCKeeper: app.IBCKeeper,
@@ -935,7 +976,9 @@ func NewAgoricApp(
935
976
  // another, which shouldn't re-run store upgrades.
936
977
  if isPrimaryUpgradeName(upgradeInfo.Name) && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
937
978
  storeUpgrades := storetypes.StoreUpgrades{
938
- Added: []string{consensusparamstypes.StoreKey},
979
+ Added: []string{
980
+ capabilitytypes.MemStoreKey,
981
+ },
939
982
  Deleted: []string{},
940
983
  }
941
984
 
@@ -966,18 +1009,20 @@ func NewAgoricApp(
966
1009
  // normalizeModuleAccount ensures that the given account is a module account,
967
1010
  // initializing or updating it if necessary. The account name must be listed in maccPerms.
968
1011
  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 {
1012
+ ma := ak.GetModuleAccount(ctx, name)
1013
+ if ma != nil {
1014
+ // Properly modular.
972
1015
  return
973
1016
  }
974
- perms := maccPerms[name]
975
- newAcct := authtypes.NewEmptyModuleAccount(name, perms...)
976
- if acct != nil {
977
- newAcct.AccountNumber = acct.GetAccountNumber()
978
- newAcct.Sequence = acct.GetSequence()
1017
+ shadow := ak.GetAccount(ctx, authtypes.NewModuleAddress(name))
1018
+ if shadow == nil {
1019
+ panic(fmt.Errorf("module account %s shadow not found in account store", name))
979
1020
  }
980
- ak.SetModuleAccount(ctx, newAcct)
1021
+
1022
+ perms := maccPerms[name]
1023
+ base := authtypes.NewBaseAccount(shadow.GetAddress(), shadow.GetPubKey(), shadow.GetAccountNumber(), shadow.GetSequence())
1024
+ ma = authtypes.NewModuleAccount(base, name, perms...)
1025
+ ak.SetModuleAccount(ctx, ma)
981
1026
  }
982
1027
 
983
1028
  type upgradeDetails struct {
@@ -1006,6 +1051,18 @@ type cosmosInitAction struct {
1006
1051
  // Name returns the name of the App
1007
1052
  func (app *GaiaApp) Name() string { return app.BaseApp.Name() }
1008
1053
 
1054
+ // PreBlocker application updates before each begin block.
1055
+ func (app *GaiaApp) PreBlocker(ctx sdk.Context, _ *abci.RequestFinalizeBlock) (*sdk.ResponsePreBlock, error) {
1056
+ // Set gas meter to the free gas meter.
1057
+ // This is because there is currently non-deterministic gas usage in the
1058
+ // pre-blocker, e.g. due to hydration of in-memory data structures.
1059
+ //
1060
+ // Note that we don't need to reset the gas meter after the pre-blocker
1061
+ // because Go is pass by value.
1062
+ ctx = ctx.WithGasMeter(storetypes.NewInfiniteGasMeter())
1063
+ return app.ModuleManager.PreBlock(ctx)
1064
+ }
1065
+
1009
1066
  // CheckControllerInited exits if the controller initialization state does not match `expected`.
1010
1067
  func (app *GaiaApp) CheckControllerInited(expected bool) {
1011
1068
  if app.controllerInited != expected {
@@ -1082,27 +1139,30 @@ func (app *GaiaApp) ensureControllerInited(ctx sdk.Context) {
1082
1139
  }
1083
1140
 
1084
1141
  // 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)
1142
+ func (app *GaiaApp) BeginBlocker(ctx sdk.Context) (sdk.BeginBlock, error) {
1143
+ return app.ModuleManager.BeginBlock(ctx)
1087
1144
  }
1088
1145
 
1089
1146
  // 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)
1147
+ func (app *GaiaApp) EndBlocker(ctx sdk.Context) (sdk.EndBlock, error) {
1148
+ return app.ModuleManager.EndBlock(ctx)
1092
1149
  }
1093
1150
 
1094
1151
  // InitChainer application update at chain initialization
1095
- func (app *GaiaApp) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain {
1152
+ func (app *GaiaApp) InitChainer(ctx sdk.Context, req *abci.RequestInitChain) (*abci.ResponseInitChain, error) {
1096
1153
  var genesisState GenesisState
1097
1154
  if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil {
1098
- panic(err)
1155
+ return nil, err
1099
1156
  }
1100
1157
 
1101
1158
  app.UpgradeKeeper.SetModuleVersionMap(ctx, app.ModuleManager.GetVersionMap())
1102
- res := app.ModuleManager.InitGenesis(ctx, app.appCodec, genesisState)
1159
+ res, err := app.ModuleManager.InitGenesis(ctx, app.appCodec, genesisState)
1160
+ if err != nil {
1161
+ return nil, err
1162
+ }
1103
1163
 
1104
1164
  // initialize the provision and reserve module accounts, to avoid their implicit creation
1105
- // as a default account upon receiving a transfer. See BlockedAddrs().
1165
+ // as a default account upon receiving a transfer. See BlockedAddresses().
1106
1166
  normalizeModuleAccount(ctx, app.AccountKeeper, vbanktypes.ProvisionPoolName)
1107
1167
  normalizeModuleAccount(ctx, app.AccountKeeper, vbanktypes.ReservePoolName)
1108
1168
 
@@ -1118,28 +1178,29 @@ func (app *GaiaApp) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci
1118
1178
  stdlog.Printf("Genesis time %s is in %s\n", genTime, d)
1119
1179
  }
1120
1180
 
1121
- return res
1181
+ return res, nil
1122
1182
  }
1123
1183
 
1124
1184
  // Commit tells the controller that the block is commited
1125
- func (app *GaiaApp) Commit() abci.ResponseCommit {
1185
+ func (app *GaiaApp) Commit() (*abci.ResponseCommit, error) {
1126
1186
  err := swingsetkeeper.WaitUntilSwingStoreExportStarted()
1127
1187
 
1128
1188
  if err != nil {
1129
1189
  app.Logger().Error("swing-store export failed to start", "err", err)
1190
+ return nil, err
1130
1191
  }
1131
1192
 
1132
1193
  // Frontrun the BaseApp's Commit method
1133
1194
  err = swingset.CommitBlock(app.SwingSetKeeper)
1134
1195
  if err != nil {
1135
- panic(err.Error())
1196
+ return nil, err
1136
1197
  }
1137
1198
 
1138
- res, snapshotHeight := app.BaseApp.CommitWithoutSnapshot()
1199
+ res, snapshotHeight, err := app.BaseApp.CommitWithoutSnapshot()
1139
1200
 
1140
1201
  err = swingset.AfterCommitBlock(app.SwingSetKeeper)
1141
1202
  if err != nil {
1142
- panic(err.Error())
1203
+ return nil, err
1143
1204
  }
1144
1205
 
1145
1206
  if snapshotHeight > 0 {
@@ -1147,10 +1208,11 @@ func (app *GaiaApp) Commit() abci.ResponseCommit {
1147
1208
 
1148
1209
  if err != nil {
1149
1210
  app.Logger().Error("failed to initiate swingset snapshot", "err", err)
1211
+ return nil, err
1150
1212
  }
1151
1213
  }
1152
1214
 
1153
- return res
1215
+ return res, nil
1154
1216
  }
1155
1217
 
1156
1218
  // LoadHeight loads a particular height
@@ -1229,6 +1291,11 @@ func (app *GaiaApp) GetMemKey(storeKey string) *storetypes.MemoryStoreKey {
1229
1291
  return app.memKeys[storeKey]
1230
1292
  }
1231
1293
 
1294
+ func DefineCustomGetSigners(signingOptions *signing.Options) {
1295
+ swingsettypes.DefineCustomGetSigners(signingOptions)
1296
+ vibctypes.DefineCustomGetSigners(signingOptions)
1297
+ }
1298
+
1232
1299
  // GetSubspace returns a param subspace for a given module name.
1233
1300
  //
1234
1301
  // NOTE: This is solely to be used for testing purposes.
@@ -1250,16 +1317,17 @@ func (app *GaiaApp) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APICo
1250
1317
  authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1251
1318
 
1252
1319
  // Register new tendermint queries routes from grpc-gateway.
1253
- tmservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1320
+ cmtservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1254
1321
 
1255
1322
  // Register node gRPC service for grpc-gateway.
1256
1323
  nodeservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1257
1324
 
1258
1325
  // Register grpc-gateway routes for all modules.
1259
- ModuleBasics.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1326
+ app.BasicModuleManager.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter)
1260
1327
 
1261
1328
  // register swagger API from root so that other applications can override easily
1262
- if apiConfig.Swagger {
1329
+ // XXX figure out how to build the docs to make them available from the _ import above
1330
+ if false && apiConfig.Swagger {
1263
1331
  RegisterSwaggerAPI(apiSvr.Router)
1264
1332
  }
1265
1333
  }
@@ -1271,7 +1339,7 @@ func (app *GaiaApp) RegisterTxService(clientCtx client.Context) {
1271
1339
 
1272
1340
  // RegisterTendermintService implements the Application.RegisterTendermintService method.
1273
1341
  func (app *GaiaApp) RegisterTendermintService(clientCtx client.Context) {
1274
- tmservice.RegisterTendermintService(clientCtx, app.BaseApp.GRPCQueryRouter(), app.interfaceRegistry, app.Query)
1342
+ cmtservice.RegisterTendermintService(clientCtx, app.BaseApp.GRPCQueryRouter(), app.interfaceRegistry, app.Query)
1275
1343
  }
1276
1344
 
1277
1345
  // RegisterSwaggerAPI registers swagger route with API Server
@@ -1298,17 +1366,10 @@ func GetMaccPerms() map[string][]string {
1298
1366
  func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramskeeper.Keeper {
1299
1367
  paramsKeeper := paramskeeper.NewKeeper(appCodec, legacyAmino, key, tkey)
1300
1368
 
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())
1369
+ // Subspaces can be removed after upgrade of params.
1310
1370
  paramsKeeper.Subspace(ibcexported.ModuleName)
1311
1371
  paramsKeeper.Subspace(icahosttypes.SubModuleName)
1372
+ paramsKeeper.Subspace(ibctransfertypes.ModuleName)
1312
1373
  paramsKeeper.Subspace(swingset.ModuleName)
1313
1374
  paramsKeeper.Subspace(vbank.ModuleName)
1314
1375
 
@@ -1339,7 +1400,27 @@ func (app *GaiaApp) GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper {
1339
1400
 
1340
1401
  // GetTxConfig implements the TestingApp interface.
1341
1402
  func (app *GaiaApp) GetTxConfig() client.TxConfig {
1342
- return MakeEncodingConfig().TxConfig
1403
+ return app.txConfig
1404
+ }
1405
+
1406
+ func (app *GaiaApp) AutoCliOpts() autocli.AppOptions {
1407
+ modules := make(map[string]appmodule.AppModule, 0)
1408
+ for _, m := range app.ModuleManager.Modules {
1409
+ if moduleWithName, ok := m.(module.HasName); ok {
1410
+ moduleName := moduleWithName.Name()
1411
+ if appModule, ok := moduleWithName.(appmodule.AppModule); ok {
1412
+ modules[moduleName] = appModule
1413
+ }
1414
+ }
1415
+ }
1416
+
1417
+ return autocli.AppOptions{
1418
+ Modules: modules,
1419
+ ModuleOptions: runtimeservices.ExtractAutoCLIOptions(app.ModuleManager.Modules),
1420
+ AddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32AccountAddrPrefix()),
1421
+ ValidatorAddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ValidatorAddrPrefix()),
1422
+ ConsensusAddressCodec: authcodec.NewBech32Codec(sdk.GetConfig().GetBech32ConsensusAddrPrefix()),
1423
+ }
1343
1424
  }
1344
1425
 
1345
1426
  // For testing purposes
@@ -1349,6 +1430,6 @@ func (app *GaiaApp) SetSwingStoreExportDir(dir string) {
1349
1430
  }
1350
1431
 
1351
1432
  // RegisterNodeService implements the Application.RegisterNodeService method.
1352
- func (app *GaiaApp) RegisterNodeService(clientCtx client.Context) {
1353
- nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter())
1433
+ func (app *GaiaApp) RegisterNodeService(clientCtx client.Context, cfg config.Config) {
1434
+ nodeservice.RegisterNodeService(clientCtx, app.GRPCQueryRouter(), cfg)
1354
1435
  }