@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/encoding.go CHANGED
@@ -4,14 +4,17 @@ import (
4
4
  "github.com/Agoric/agoric-sdk/golang/cosmos/app/params"
5
5
 
6
6
  "github.com/cosmos/cosmos-sdk/std"
7
+ "github.com/cosmos/cosmos-sdk/types/module"
7
8
  )
8
9
 
9
10
  // MakeEncodingConfig creates an EncodingConfig for testing
10
- func MakeEncodingConfig() params.EncodingConfig {
11
+ func MakeEncodingConfig(basicManager module.BasicManager) params.EncodingConfig {
11
12
  encodingConfig := params.MakeEncodingConfig()
12
13
  std.RegisterLegacyAminoCodec(encodingConfig.Amino)
13
14
  std.RegisterInterfaces(encodingConfig.InterfaceRegistry)
14
- ModuleBasics.RegisterLegacyAminoCodec(encodingConfig.Amino)
15
- ModuleBasics.RegisterInterfaces(encodingConfig.InterfaceRegistry)
15
+ if basicManager != nil {
16
+ basicManager.RegisterLegacyAminoCodec(encodingConfig.Amino)
17
+ basicManager.RegisterInterfaces(encodingConfig.InterfaceRegistry)
18
+ }
16
19
  return encodingConfig
17
20
  }
package/app/export.go CHANGED
@@ -5,7 +5,7 @@ import (
5
5
  "fmt"
6
6
  "log"
7
7
 
8
- tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
8
+ storetypes "cosmossdk.io/store/types"
9
9
 
10
10
  servertypes "github.com/cosmos/cosmos-sdk/server/types"
11
11
  sdk "github.com/cosmos/cosmos-sdk/types"
@@ -20,26 +20,30 @@ func (app *GaiaApp) ExportAppStateAndValidators(
20
20
  forZeroHeight bool, jailAllowedAddrs []string, modulesToExport []string,
21
21
  ) (servertypes.ExportedApp, error) {
22
22
  // as if they could withdraw from the start of the next block
23
- ctx := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()})
23
+ ctx := app.NewContext(true)
24
24
 
25
- // We export at last height + 1, because that's the height at which
26
- // Tendermint will start InitChain.
27
- height := app.LastBlockHeight() + 1
25
+ height := app.LastBlockHeight()
28
26
  if forZeroHeight {
29
27
  return servertypes.ExportedApp{}, fmt.Errorf("forZeroHeight not supported")
30
28
  }
31
29
 
32
- genState := app.ModuleManager.ExportGenesisForModules(ctx, app.appCodec, modulesToExport)
30
+ ctx = ctx.WithBlockHeight(height)
31
+ genState, err := app.ModuleManager.ExportGenesis(ctx, app.appCodec)
32
+ if err != nil {
33
+ return servertypes.ExportedApp{}, err
34
+ }
35
+
33
36
  appState, err := json.MarshalIndent(genState, "", " ")
34
37
  if err != nil {
35
38
  return servertypes.ExportedApp{}, err
36
39
  }
37
40
 
38
- validators, err := staking.WriteValidators(ctx, &app.StakingKeeper)
41
+ validators, err := staking.WriteValidators(ctx, app.StakingKeeper)
42
+
39
43
  return servertypes.ExportedApp{
40
44
  AppState: appState,
41
45
  Validators: validators,
42
- Height: height,
46
+ Height: height + 1,
43
47
  ConsensusParams: app.BaseApp.GetConsensusParams(ctx),
44
48
  }, err
45
49
  }
@@ -70,12 +74,20 @@ func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [
70
74
 
71
75
  // withdraw all validator commission
72
76
  app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
73
- _, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, val.GetOperator())
77
+ addr, err := sdk.ValAddressFromBech32(val.GetOperator())
78
+ if err != nil {
79
+ panic(err)
80
+ }
81
+ _, _ = app.DistrKeeper.WithdrawValidatorCommission(ctx, addr)
74
82
  return false
75
83
  })
76
84
 
77
85
  // withdraw all delegator rewards
78
- dels := app.StakingKeeper.GetAllDelegations(ctx)
86
+ dels, err := app.StakingKeeper.GetAllDelegations(ctx)
87
+ if err != nil {
88
+ panic(err)
89
+ }
90
+
79
91
  for _, delegation := range dels {
80
92
  valAddr, err := sdk.ValAddressFromBech32(delegation.ValidatorAddress)
81
93
  if err != nil {
@@ -102,12 +114,28 @@ func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [
102
114
  // reinitialize all validators
103
115
  app.StakingKeeper.IterateValidators(ctx, func(_ int64, val stakingtypes.ValidatorI) (stop bool) {
104
116
  // donate any unwithdrawn outstanding reward fraction tokens to the community pool
105
- scraps := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, val.GetOperator())
106
- feePool := app.DistrKeeper.GetFeePool(ctx)
117
+ addr, err := sdk.ValAddressFromBech32(val.GetOperator())
118
+ if err != nil {
119
+ panic(err)
120
+ }
121
+ scraps, err := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, addr)
122
+ if err != nil {
123
+ panic(err)
124
+ }
125
+
126
+ feePool, err := app.DistrKeeper.FeePool.Get(ctx)
127
+ if err != nil {
128
+ panic(err)
129
+ }
107
130
  feePool.CommunityPool = feePool.CommunityPool.Add(scraps...)
108
- app.DistrKeeper.SetFeePool(ctx, feePool)
109
131
 
110
- if err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()); err != nil {
132
+ var err_ error
133
+ err_ = app.DistrKeeper.FeePool.Set(ctx, feePool)
134
+ if err_ != nil {
135
+ panic(err_)
136
+ }
137
+
138
+ if err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, addr); err != nil {
111
139
  panic(err)
112
140
  }
113
141
  return false
@@ -157,13 +185,13 @@ func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [
157
185
  // Iterate through validators by power descending, reset bond heights, and
158
186
  // update bond intra-tx counters.
159
187
  store := ctx.KVStore(app.keys[stakingtypes.StoreKey])
160
- iter := sdk.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey)
188
+ iter := storetypes.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey)
161
189
  counter := int16(0)
162
190
 
163
191
  for ; iter.Valid(); iter.Next() {
164
192
  addr := sdk.ValAddress(stakingtypes.AddressFromValidatorsKey(iter.Key()))
165
- validator, found := app.StakingKeeper.GetValidator(ctx, addr)
166
- if !found {
193
+ validator, err := app.StakingKeeper.GetValidator(ctx, addr)
194
+ if err != nil {
167
195
  panic("expected validator, not found")
168
196
  }
169
197
 
@@ -178,11 +206,12 @@ func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [
178
206
 
179
207
  iter.Close()
180
208
 
181
- _, err := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)
182
- if err != nil {
183
- log.Fatal(err)
184
- }
209
+ var err_ error
185
210
 
211
+ _, err_ = app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)
212
+ if err_ != nil {
213
+ log.Fatal(err_)
214
+ }
186
215
  /* Handle slashing state. */
187
216
 
188
217
  // reset start height on signing infos
package/app/genesis.go CHANGED
@@ -2,6 +2,9 @@ package gaia
2
2
 
3
3
  import (
4
4
  "encoding/json"
5
+
6
+ "github.com/cosmos/cosmos-sdk/codec"
7
+ "github.com/cosmos/cosmos-sdk/types/module"
5
8
  )
6
9
 
7
10
  // The genesis state of the blockchain is represented here as a map of raw json
@@ -14,11 +17,10 @@ import (
14
17
  type GenesisState map[string]json.RawMessage
15
18
 
16
19
  // NewDefaultGenesisState generates the default state for the application.
17
- func NewDefaultGenesisState() GenesisState {
18
- encCfg := MakeEncodingConfig()
19
- return ModuleBasics.DefaultGenesis(encCfg.Marshaler)
20
+ func NewDefaultGenesisState(appCodec codec.Codec, basicManager module.BasicManager) GenesisState {
21
+ return basicManager.DefaultGenesis(appCodec)
20
22
  }
21
23
 
22
- func (_app *GaiaApp) DefaultGenesis() GenesisState {
23
- return NewDefaultGenesisState()
24
+ func (app *GaiaApp) DefaultGenesis() GenesisState {
25
+ return NewDefaultGenesisState(app.appCodec, app.BasicModuleManager)
24
26
  }
@@ -10,7 +10,7 @@ import (
10
10
  // This is provided for compatibility between protobuf and amino implementations.
11
11
  type EncodingConfig struct {
12
12
  InterfaceRegistry types.InterfaceRegistry
13
- Marshaler codec.Codec
13
+ Codec codec.Codec
14
14
  TxConfig client.TxConfig
15
15
  Amino *codec.LegacyAmino
16
16
  }
@@ -1,6 +1,7 @@
1
1
  package params
2
2
 
3
3
  import (
4
+ "github.com/Agoric/agoric-sdk/golang/cosmos/app/txconfig"
4
5
  "github.com/cosmos/cosmos-sdk/codec"
5
6
  "github.com/cosmos/cosmos-sdk/codec/types"
6
7
  "github.com/cosmos/cosmos-sdk/x/auth/tx"
@@ -10,12 +11,13 @@ import (
10
11
  func MakeEncodingConfig() EncodingConfig {
11
12
  amino := codec.NewLegacyAmino()
12
13
  interfaceRegistry := types.NewInterfaceRegistry()
13
- marshaler := codec.NewProtoCodec(interfaceRegistry)
14
- txCfg := tx.NewTxConfig(marshaler, tx.DefaultSignModes)
15
-
14
+ codec := codec.NewProtoCodec(interfaceRegistry)
15
+ txCfg, _ := txconfig.NewTxConfigWithOptionsWithCustomEncoders(codec, tx.ConfigOptions{
16
+ EnabledSignModes: tx.DefaultSignModes,
17
+ })
16
18
  return EncodingConfig{
17
19
  InterfaceRegistry: interfaceRegistry,
18
- Marshaler: marshaler,
20
+ Codec: codec,
19
21
  TxConfig: txCfg,
20
22
  Amino: amino,
21
23
  }
package/app/sim_test.go CHANGED
@@ -9,27 +9,24 @@ import (
9
9
  "strings"
10
10
  "testing"
11
11
 
12
- dbm "github.com/cometbft/cometbft-db"
12
+ "cosmossdk.io/log"
13
13
  abci "github.com/cometbft/cometbft/abci/types"
14
- "github.com/cometbft/cometbft/libs/log"
15
- tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
14
+ dbm "github.com/cosmos/cosmos-db"
16
15
  "github.com/stretchr/testify/require"
17
16
 
17
+ storetypes "cosmossdk.io/store/types"
18
18
  "github.com/cosmos/cosmos-sdk/client/flags"
19
19
  "github.com/cosmos/cosmos-sdk/server"
20
- storetypes "github.com/cosmos/cosmos-sdk/store/types"
21
20
 
21
+ "cosmossdk.io/store"
22
+ evidencetypes "cosmossdk.io/x/evidence/types"
22
23
  "github.com/cosmos/cosmos-sdk/baseapp"
23
- "github.com/cosmos/cosmos-sdk/store"
24
24
  simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
25
- sdk "github.com/cosmos/cosmos-sdk/types"
26
25
  simtypes "github.com/cosmos/cosmos-sdk/types/simulation"
27
26
  authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
28
27
  authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper"
29
28
  banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
30
- capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types"
31
29
  distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
32
- evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types"
33
30
  govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
34
31
  minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
35
32
  paramtypes "github.com/cosmos/cosmos-sdk/x/params/types"
@@ -37,6 +34,7 @@ import (
37
34
  simcli "github.com/cosmos/cosmos-sdk/x/simulation/client/cli"
38
35
  slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
39
36
  stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
37
+ capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types"
40
38
  )
41
39
 
42
40
  // SimAppChainID hardcoded chainID for simulation
@@ -187,8 +185,8 @@ func TestAppImportExport(t *testing.T) {
187
185
  }
188
186
  }()
189
187
 
190
- ctxA := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()})
191
- ctxB := newApp.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()})
188
+ ctxA := app.NewContext(true)
189
+ ctxB := newApp.NewContext(true)
192
190
  newApp.ModuleManager.InitGenesis(ctxB, app.AppCodec(), genesisState)
193
191
  newApp.StoreConsensusParams(ctxB, exported.ConsensusParams)
194
192
 
@@ -218,7 +216,7 @@ func TestAppImportExport(t *testing.T) {
218
216
  storeA := ctxA.KVStore(skp.A)
219
217
  storeB := ctxB.KVStore(skp.B)
220
218
 
221
- failedKVAs, failedKVBs := sdk.DiffKVStores(storeA, storeB, skp.Prefixes)
219
+ failedKVAs, failedKVBs := simtestutil.DiffKVStores(storeA, storeB, skp.Prefixes)
222
220
  require.Equal(t, len(failedKVAs), len(failedKVBs), "unequal sets of key-values to compare")
223
221
 
224
222
  fmt.Printf("compared %d different key/value pairs between %s and %s\n", len(failedKVAs), skp.A, skp.B)
@@ -293,7 +291,7 @@ func TestAppSimulationAfterImport(t *testing.T) {
293
291
  newApp := NewSimApp(log.NewNopLogger(), newDB, nil, true, appOptions, fauxMerkleModeOpt, baseapp.SetChainID(SimAppChainID))
294
292
  require.Equal(t, "SimApp", newApp.Name())
295
293
 
296
- newApp.InitChain(abci.RequestInitChain{
294
+ newApp.InitChain(&abci.RequestInitChain{
297
295
  ChainId: SimAppChainID,
298
296
  AppStateBytes: exported.AppState,
299
297
  })
@@ -349,7 +347,7 @@ func TestAppStateDeterminism(t *testing.T) {
349
347
  for j := 0; j < numTimesToRunPerSeed; j++ {
350
348
  var logger log.Logger
351
349
  if simcli.FlagVerboseValue {
352
- logger = log.TestingLogger()
350
+ logger = log.NewTestLogger(t)
353
351
  } else {
354
352
  logger = log.NewNopLogger()
355
353
  }
@@ -0,0 +1,169 @@
1
+ package txconfig
2
+
3
+ import (
4
+ "fmt"
5
+
6
+ txsigning "cosmossdk.io/x/tx/signing"
7
+ "cosmossdk.io/x/tx/signing/aminojson"
8
+ "cosmossdk.io/x/tx/signing/direct"
9
+ "cosmossdk.io/x/tx/signing/directaux"
10
+ "cosmossdk.io/x/tx/signing/textual"
11
+ agorictypes "github.com/Agoric/agoric-sdk/golang/cosmos/types"
12
+ "github.com/cosmos/cosmos-sdk/client"
13
+ "github.com/cosmos/cosmos-sdk/codec"
14
+ sdk "github.com/cosmos/cosmos-sdk/types"
15
+ signingtypes "github.com/cosmos/cosmos-sdk/types/tx/signing"
16
+ "github.com/cosmos/cosmos-sdk/x/auth/tx"
17
+ )
18
+
19
+ var legacyAddress = "legacy_address"
20
+ var nullSliceAsEmpty = "null_slice_as_empty"
21
+
22
+ type configTx struct {
23
+ decoder sdk.TxDecoder
24
+ encoder sdk.TxEncoder
25
+ jsonDecoder sdk.TxDecoder
26
+ jsonEncoder sdk.TxEncoder
27
+ protoCodec codec.Codec
28
+ }
29
+
30
+ // CustomAminoFieldEncoders is a map of custom amino field encoders for amino json
31
+ var CustomAminoFieldEncoders = map[string]aminojson.FieldEncoder{
32
+ legacyAddress: agorictypes.LegacyAddressEncoder,
33
+ nullSliceAsEmpty: aminojson.NullSliceAsEmptyEncoder,
34
+ }
35
+
36
+ // NewTxConfigWithOptions returns a new protobuf TxConfig using the provided ProtoCodec, ConfigOptions and
37
+ // custom sign mode handlers. If ConfigOptions is an empty struct then default values will be used.
38
+ func NewTxConfigWithOptionsWithCustomEncoders(protoCodec codec.Codec, configOptions tx.ConfigOptions) (client.TxConfig, error) {
39
+ txConfig := &configTx{
40
+ protoCodec: protoCodec,
41
+ decoder: configOptions.ProtoDecoder,
42
+ encoder: configOptions.ProtoEncoder,
43
+ jsonDecoder: configOptions.JSONDecoder,
44
+ jsonEncoder: configOptions.JSONEncoder,
45
+ }
46
+ if configOptions.ProtoDecoder == nil {
47
+ txConfig.decoder = tx.DefaultTxDecoder(protoCodec)
48
+ }
49
+ if configOptions.ProtoEncoder == nil {
50
+ txConfig.encoder = tx.DefaultTxEncoder()
51
+ }
52
+ if configOptions.JSONDecoder == nil {
53
+ txConfig.jsonDecoder = tx.DefaultJSONTxDecoder(protoCodec)
54
+ }
55
+ if configOptions.JSONEncoder == nil {
56
+ txConfig.jsonEncoder = tx.DefaultJSONTxEncoder(protoCodec)
57
+ }
58
+
59
+ var err error
60
+ if configOptions.SigningContext == nil {
61
+ if configOptions.SigningOptions == nil {
62
+ configOptions.SigningOptions, err = tx.NewDefaultSigningOptions()
63
+ if err != nil {
64
+ return nil, err
65
+ }
66
+ }
67
+ if configOptions.SigningOptions.FileResolver == nil {
68
+ configOptions.SigningOptions.FileResolver = protoCodec.InterfaceRegistry()
69
+ }
70
+ configOptions.SigningContext, err = txsigning.NewContext(*configOptions.SigningOptions)
71
+ if err != nil {
72
+ return nil, err
73
+ }
74
+ }
75
+
76
+ configOptions.SigningHandler, err = NewSigningHandlerMap(configOptions)
77
+
78
+ if err != nil {
79
+ return nil, err
80
+ }
81
+ return tx.NewTxConfigWithOptions(txConfig.protoCodec, configOptions)
82
+
83
+ }
84
+
85
+ func NewSigningHandlerMap(configOpts tx.ConfigOptions) (*txsigning.HandlerMap, error) {
86
+ var err error
87
+ if configOpts.SigningOptions == nil {
88
+ configOpts.SigningOptions, err = tx.NewDefaultSigningOptions()
89
+ if err != nil {
90
+ return nil, err
91
+ }
92
+ }
93
+
94
+ if configOpts.SigningContext == nil {
95
+ configOpts.SigningContext, err = txsigning.NewContext(*configOpts.SigningOptions)
96
+ if err != nil {
97
+ return nil, err
98
+ }
99
+ }
100
+
101
+ signingOpts := configOpts.SigningOptions
102
+
103
+ if len(configOpts.EnabledSignModes) == 0 {
104
+ configOpts.EnabledSignModes = tx.DefaultSignModes
105
+ }
106
+
107
+ lenSignModes := len(configOpts.EnabledSignModes)
108
+ handlers := make([]txsigning.SignModeHandler, lenSignModes+len(configOpts.CustomSignModes))
109
+ for i, m := range configOpts.EnabledSignModes {
110
+ var err error
111
+ switch m {
112
+ case signingtypes.SignMode_SIGN_MODE_DIRECT:
113
+ handlers[i] = &direct.SignModeHandler{}
114
+ case signingtypes.SignMode_SIGN_MODE_DIRECT_AUX:
115
+ handlers[i], err = directaux.NewSignModeHandler(directaux.SignModeHandlerOptions{
116
+ TypeResolver: signingOpts.TypeResolver,
117
+ SignersContext: configOpts.SigningContext,
118
+ })
119
+ if err != nil {
120
+ return nil, err
121
+ }
122
+ case signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON:
123
+ // AGORIC: We inject custom amino field encoders for amino json
124
+ //
125
+ aminoHandler, _, err := NewAminoHandlerWithCustomEncoders(configOpts.SigningOptions, CustomAminoFieldEncoders)
126
+ if err != nil {
127
+ return nil, err
128
+ }
129
+ // -------------------------------------------------
130
+ handlers[i] = aminoHandler
131
+ case signingtypes.SignMode_SIGN_MODE_TEXTUAL:
132
+ handlers[i], err = textual.NewSignModeHandler(textual.SignModeOptions{
133
+ CoinMetadataQuerier: configOpts.TextualCoinMetadataQueryFn,
134
+ FileResolver: signingOpts.FileResolver,
135
+ TypeResolver: signingOpts.TypeResolver,
136
+ })
137
+ if configOpts.TextualCoinMetadataQueryFn == nil {
138
+ return nil, fmt.Errorf("cannot enable SIGN_MODE_TEXTUAL without a TextualCoinMetadataQueryFn")
139
+ }
140
+ if err != nil {
141
+ return nil, err
142
+ }
143
+ }
144
+ }
145
+ for i, m := range configOpts.CustomSignModes {
146
+ handlers[i+lenSignModes] = m
147
+ }
148
+ handler := txsigning.NewHandlerMap(handlers...)
149
+ return handler, nil
150
+
151
+ }
152
+
153
+ func NewAminoHandlerWithCustomEncoders(signingOpts *txsigning.Options, fieldEncoders map[string]aminojson.FieldEncoder) (*aminojson.SignModeHandler, aminojson.Encoder, error) {
154
+ encoderOptions := aminojson.EncoderOptions{
155
+ FileResolver: signingOpts.FileResolver,
156
+ TypeResolver: signingOpts.TypeResolver,
157
+ EnumAsString: false, // ensure enum as string is disabled
158
+ }
159
+ encoder := aminojson.NewEncoder(encoderOptions)
160
+ for name, customFieldEncoder := range fieldEncoders {
161
+ encoder.DefineFieldEncoding(name, customFieldEncoder)
162
+ }
163
+ aminoHandler := aminojson.NewSignModeHandler(aminojson.SignModeHandlerOptions{
164
+ FileResolver: signingOpts.FileResolver,
165
+ TypeResolver: signingOpts.TypeResolver,
166
+ Encoder: &encoder,
167
+ })
168
+ return aminoHandler, encoder, nil
169
+ }
package/app/upgrade.go CHANGED
@@ -1,28 +1,24 @@
1
1
  package gaia
2
2
 
3
3
  import (
4
+ "context"
4
5
  "encoding/json"
5
6
  "fmt"
6
7
 
7
8
  "github.com/Agoric/agoric-sdk/golang/cosmos/vm"
8
9
  swingsetkeeper "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/keeper"
9
- "github.com/cosmos/cosmos-sdk/baseapp"
10
10
  sdk "github.com/cosmos/cosmos-sdk/types"
11
11
  "github.com/cosmos/cosmos-sdk/types/module"
12
12
 
13
- authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
14
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
15
- crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types"
16
- distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types"
17
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
18
- govv1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1"
19
- minttypes "github.com/cosmos/cosmos-sdk/x/mint/types"
13
+ upgradetypes "cosmossdk.io/x/upgrade/types"
20
14
  paramstypes "github.com/cosmos/cosmos-sdk/x/params/types"
21
- slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types"
22
- stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types"
23
- upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types"
24
15
 
25
- ibctmmigrations "github.com/cosmos/ibc-go/v7/modules/light-clients/07-tendermint/migrations"
16
+ icahosttypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/types"
17
+ ibctransfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types"
18
+ ibcclienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types"
19
+ ibcconnectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types"
20
+ ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported"
21
+ ibctmmigrations "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint/migrations"
26
22
  )
27
23
 
28
24
  var upgradeNamesOfThisVersion = []string{
@@ -82,7 +78,11 @@ func isPrimaryUpgradeName(name string) bool {
82
78
  // upgrade plan name of this version have previously been applied.
83
79
  func isFirstTimeUpgradeOfThisVersion(app *GaiaApp, ctx sdk.Context) bool {
84
80
  for _, name := range upgradeNamesOfThisVersion {
85
- if app.UpgradeKeeper.GetDoneHeight(ctx, name) != 0 {
81
+ height, err := app.UpgradeKeeper.GetDoneHeight(ctx, name)
82
+ if err != nil {
83
+ panic(fmt.Errorf("error getting done height: %s", err))
84
+ }
85
+ if height != 0 {
86
86
  return false
87
87
  }
88
88
  }
@@ -158,26 +158,15 @@ func buildProposalStepFromScript(targetUpgrade string, builderScript string) (vm
158
158
  func (app *GaiaApp) RegisterUpgradeHandlers() {
159
159
  // Set param key table for params module migration
160
160
  for _, subspace := range app.ParamsKeeper.GetSubspaces() {
161
- subspace := subspace
162
-
163
161
  var keyTable paramstypes.KeyTable
164
162
  switch subspace.Name() {
165
- case authtypes.ModuleName:
166
- keyTable = authtypes.ParamKeyTable() //nolint:staticcheck
167
- case banktypes.ModuleName:
168
- keyTable = banktypes.ParamKeyTable() //nolint:staticcheck
169
- case stakingtypes.ModuleName:
170
- keyTable = stakingtypes.ParamKeyTable() //nolint:staticcheck
171
- case minttypes.ModuleName:
172
- keyTable = minttypes.ParamKeyTable() //nolint:staticcheck
173
- case distrtypes.ModuleName:
174
- keyTable = distrtypes.ParamKeyTable() //nolint:staticcheck
175
- case slashingtypes.ModuleName:
176
- keyTable = slashingtypes.ParamKeyTable() //nolint:staticcheck
177
- case govtypes.ModuleName:
178
- keyTable = govv1.ParamKeyTable() //nolint:staticcheck
179
- case crisistypes.ModuleName:
180
- keyTable = crisistypes.ParamKeyTable() //nolint:staticcheck
163
+ case ibcexported.ModuleName:
164
+ keyTable = ibcclienttypes.ParamKeyTable() //nolint:staticcheck
165
+ keyTable.RegisterParamSet(&ibcconnectiontypes.Params{})
166
+ case icahosttypes.SubModuleName:
167
+ keyTable = icahosttypes.ParamKeyTable() //nolint:staticcheck
168
+ case ibctransfertypes.ModuleName:
169
+ keyTable = ibctransfertypes.ParamKeyTable() //nolint:staticcheck
181
170
  default:
182
171
  continue
183
172
  }
@@ -187,31 +176,21 @@ func (app *GaiaApp) RegisterUpgradeHandlers() {
187
176
  }
188
177
  }
189
178
 
190
- baseAppLegacySS := app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable())
191
-
192
179
  for _, name := range upgradeNamesOfThisVersion {
193
180
  app.UpgradeKeeper.SetUpgradeHandler(
194
181
  name,
195
- makeUnreleasedUpgradeHandler(app, name, baseAppLegacySS),
182
+ makeUnreleasedUpgradeHandler(app, name),
196
183
  )
197
184
  }
198
185
  }
199
186
 
200
187
  // makeUnreleasedUpgradeHandler performs standard upgrade actions plus custom actions for the unreleased upgrade.
201
- func makeUnreleasedUpgradeHandler(app *GaiaApp, targetUpgrade string, baseAppLegacySS paramstypes.Subspace) func(sdk.Context, upgradetypes.Plan, module.VersionMap) (module.VersionMap, error) {
188
+ func makeUnreleasedUpgradeHandler(app *GaiaApp, targetUpgrade string) upgradetypes.UpgradeHandler {
202
189
  _ = targetUpgrade
203
- return func(ctx sdk.Context, plan upgradetypes.Plan, fromVm module.VersionMap) (module.VersionMap, error) {
190
+ return func(goCtx context.Context, plan upgradetypes.Plan, fromVm module.VersionMap) (module.VersionMap, error) {
191
+ ctx := sdk.UnwrapSDKContext(goCtx)
204
192
  app.CheckControllerInited(false)
205
193
 
206
- // prune expired tendermint consensus states to save storage space
207
- _, err := ibctmmigrations.PruneExpiredConsensusStates(ctx, app.AppCodec(), app.IBCKeeper.ClientKeeper)
208
- if err != nil {
209
- return nil, err
210
- }
211
-
212
- // Migrate Tendermint consensus parameters from x/params module to a dedicated x/consensus module.
213
- baseapp.MigrateParams(ctx, baseAppLegacySS, &app.ConsensusParamsKeeper)
214
-
215
194
  CoreProposalSteps := []vm.CoreProposalStep{}
216
195
 
217
196
  // These CoreProposalSteps are not idempotent and should only be executed
@@ -224,62 +203,33 @@ func makeUnreleasedUpgradeHandler(app *GaiaApp, targetUpgrade string, baseAppLeg
224
203
  return module.VersionMap{}, fmt.Errorf("cannot run %s as first upgrade", plan.Name)
225
204
  }
226
205
 
227
- // Each CoreProposalStep runs sequentially, and can be constructed from
228
- // one or more modules executing in parallel within the step.
229
- CoreProposalSteps = append(CoreProposalSteps,
230
- // Register a new ZCF to be used for all future contract instances and upgrades
231
- vm.CoreProposalStepForModules(
232
- "@agoric/builders/scripts/vats/upgrade-zcf.js",
233
- ),
234
- vm.CoreProposalStepForModules(
235
- "@agoric/builders/scripts/vats/upgrade-provisionPool-to-BLD.js",
236
- ),
237
- // because of #10794, we need to do at least a null upgrade of
238
- // the walletFactory on every software upgrade
239
- vm.CoreProposalStepForModules(
240
- "@agoric/builders/scripts/smart-wallet/build-wallet-factory2-upgrade.js",
241
- ),
242
- )
243
-
244
- // Reserve contract needs to be upgraded for IST wind-down.
245
- reserveUpgradeStep, err := buildProposalStepWithArgs(
246
- "@agoric/builders/scripts/vats/upgrade-vats.js",
247
- "upgradeZoeContractsProposalBuilder",
248
- []struct {
249
- KitLookup []string `json:"kitLookup"`
250
- BundleName string `json:"bundleName"`
251
- Entrypoint string `json:"entrypoint"`
252
- }{
253
- {
254
- KitLookup: []string{"reserveKit"},
255
- BundleName: "reserve",
256
- Entrypoint: "@agoric/inter-protocol/src/reserve/assetReserve.js",
257
- },
258
- },
259
- )
206
+ // prune expired tendermint consensus states to save storage space.
207
+ _, err := ibctmmigrations.PruneExpiredConsensusStates(ctx, app.AppCodec(), app.IBCKeeper.ClientKeeper)
260
208
  if err != nil {
261
- return module.VersionMap{}, err
209
+ return nil, err
262
210
  }
263
- CoreProposalSteps = append(CoreProposalSteps,
264
- reserveUpgradeStep,
265
- )
266
211
 
267
212
  // terminationTargets is a slice of "$boardID:$instanceKitLabel" strings.
268
213
  var terminationTargets []string
269
- switch getVariantFromUpgradeName(targetUpgrade) {
270
- case "MAINNET":
271
- // v111 "zcf-b1-4522b-stkATOM-USD_price_feed"
272
- terminationTargets = []string{"board052184:stkATOM-USD_price_feed"}
273
- case "A3P_INTEGRATION":
274
- terminationTargets = []string{"board04091:stATOM-USD_price_feed"}
214
+ switch ctx.ChainID() {
215
+ case "agoric-mainfork-1", "agoric-3": // MAINNET
216
+ terminationTargets = []string{
217
+ // v29 "zcf-b1-4522b-ATOM-USD_price_feed"
218
+ "board02963:ATOM-USD_price_feed",
219
+ // v68 "zcf-b1-4522b-stATOM-USD_price_feed"
220
+ "board012113:stATOM-USD_price_feed",
221
+ // v98 "zcf-b1-4522b-stOSMO-USD_price_feed"
222
+ "board002164:stOSMO-USD_price_feed",
223
+ // v104 "zcf-b1-4522b-stTIA-USD_price_feed"
224
+ "board043173:stTIA-USD_price_feed",
225
+ }
275
226
  }
276
227
  if len(terminationTargets) > 0 {
277
- args := []vm.Jsonable{terminationTargets}
278
228
  terminationStep, err := buildProposalStepWithArgs(
279
229
  "@agoric/vats/src/proposals/terminate-governed-instance.js",
280
230
  // defaultProposalBuilder(powers, targets)
281
231
  "defaultProposalBuilder",
282
- args...,
232
+ terminationTargets,
283
233
  )
284
234
  if err != nil {
285
235
  return module.VersionMap{}, err
package/cmd/agd/agvm.go CHANGED
@@ -5,7 +5,7 @@ import (
5
5
  "os"
6
6
  "os/exec"
7
7
 
8
- "github.com/cometbft/cometbft/libs/log"
8
+ "cosmossdk.io/log"
9
9
  )
10
10
 
11
11
  // NewVMCommand creates a new OS command to run the Agoric VM. It sets up the