@agoric/cosmos 0.34.2-dev-7ffae88.0 → 0.34.2-orchestration-dev-096c4e8.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 (85) hide show
  1. package/Makefile +7 -0
  2. package/ante/ante.go +6 -5
  3. package/ante/fee.go +8 -7
  4. package/ante/inbound_test.go +3 -2
  5. package/ante/vm_admission.go +2 -1
  6. package/app/app.go +107 -59
  7. package/app/export.go +13 -6
  8. package/cmd/libdaemon/main_test.go +2 -1
  9. package/daemon/cmd/root.go +12 -5
  10. package/e2e_test/Makefile +29 -0
  11. package/e2e_test/README.md +100 -0
  12. package/e2e_test/go.mod +217 -0
  13. package/e2e_test/go.sum +1323 -0
  14. package/e2e_test/ibc_conformance_test.go +56 -0
  15. package/e2e_test/pfm_test.go +613 -0
  16. package/e2e_test/util.go +271 -0
  17. package/git-revision.txt +1 -1
  18. package/go.mod +15 -7
  19. package/go.sum +8 -5
  20. package/package.json +3 -3
  21. package/proto/agoric/vlocalchain/.clang-format +7 -0
  22. package/proto/agoric/vlocalchain/vlocalchain.proto +31 -0
  23. package/vm/action.go +5 -4
  24. package/vm/action_test.go +31 -11
  25. package/vm/controller.go +22 -1
  26. package/vm/server.go +1 -1
  27. package/x/swingset/abci.go +10 -10
  28. package/x/swingset/client/cli/tx.go +4 -0
  29. package/x/swingset/handler.go +2 -1
  30. package/x/swingset/keeper/keeper.go +6 -12
  31. package/x/swingset/keeper/msg_server.go +18 -18
  32. package/x/swingset/keeper/proposal.go +13 -3
  33. package/x/swingset/keeper/querier.go +12 -11
  34. package/x/swingset/keeper/swing_store_exports_handler.go +7 -3
  35. package/x/swingset/proposal_handler.go +2 -1
  36. package/x/swingset/types/expected_keepers.go +3 -2
  37. package/x/swingset/types/msgs.go +25 -24
  38. package/x/swingset/types/params.go +2 -1
  39. package/x/swingset/types/proposal.go +5 -4
  40. package/x/vbank/handler.go +2 -1
  41. package/x/vbank/keeper/querier.go +4 -3
  42. package/x/vbank/vbank.go +3 -3
  43. package/x/vibc/alias.go +3 -0
  44. package/x/vibc/handler.go +16 -9
  45. package/x/vibc/keeper/keeper.go +102 -65
  46. package/x/vibc/keeper/triggers.go +101 -0
  47. package/x/vibc/module.go +4 -2
  48. package/x/vibc/types/expected_keepers.go +13 -0
  49. package/x/vibc/types/ibc_module.go +335 -0
  50. package/x/vibc/types/receiver.go +160 -0
  51. package/x/vlocalchain/alias.go +19 -0
  52. package/x/vlocalchain/handler.go +20 -0
  53. package/x/vlocalchain/keeper/keeper.go +279 -0
  54. package/x/vlocalchain/keeper/keeper_test.go +32 -0
  55. package/x/vlocalchain/types/codec.go +34 -0
  56. package/x/vlocalchain/types/key.go +27 -0
  57. package/x/vlocalchain/types/msgs.go +16 -0
  58. package/x/vlocalchain/types/vlocalchain.pb.go +1072 -0
  59. package/x/vlocalchain/vlocalchain.go +109 -0
  60. package/x/vlocalchain/vlocalchain_test.go +305 -0
  61. package/x/vstorage/handler.go +2 -1
  62. package/x/vstorage/keeper/keeper.go +5 -4
  63. package/x/vstorage/keeper/querier.go +6 -5
  64. package/x/vstorage/keeper/querier_test.go +4 -3
  65. package/proto/agoric/lien/genesis.proto +0 -25
  66. package/proto/agoric/lien/lien.proto +0 -25
  67. package/x/lien/alias.go +0 -17
  68. package/x/lien/genesis.go +0 -58
  69. package/x/lien/genesis_test.go +0 -101
  70. package/x/lien/keeper/account.go +0 -290
  71. package/x/lien/keeper/keeper.go +0 -255
  72. package/x/lien/keeper/keeper_test.go +0 -623
  73. package/x/lien/lien.go +0 -205
  74. package/x/lien/lien_test.go +0 -533
  75. package/x/lien/module.go +0 -115
  76. package/x/lien/spec/01_concepts.md +0 -146
  77. package/x/lien/spec/02_messages.md +0 -96
  78. package/x/lien/types/accountkeeper.go +0 -81
  79. package/x/lien/types/accountstate.go +0 -27
  80. package/x/lien/types/expected_keepers.go +0 -18
  81. package/x/lien/types/genesis.pb.go +0 -567
  82. package/x/lien/types/key.go +0 -25
  83. package/x/lien/types/lien.pb.go +0 -403
  84. package/x/vibc/ibc.go +0 -394
  85. /package/{src/index.cjs → index.cjs} +0 -0
package/Makefile CHANGED
@@ -202,3 +202,10 @@ grpc-gateway-stamp:
202
202
 
203
203
  tools-clean:
204
204
  rm -f proto-tools-stamp buf-stamp grpc-gateway-stamp
205
+
206
+
207
+ lint:
208
+ golangci-lint run
209
+
210
+ test:
211
+ go test -coverprofile=coverage.txt -covermode=atomic ./...
package/ante/ante.go CHANGED
@@ -1,6 +1,7 @@
1
1
  package ante
2
2
 
3
3
  import (
4
+ sdkioerrors "cosmossdk.io/errors"
4
5
  sdk "github.com/cosmos/cosmos-sdk/types"
5
6
  sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
6
7
  "github.com/cosmos/cosmos-sdk/x/auth/ante"
@@ -21,19 +22,19 @@ type HandlerOptions struct {
21
22
 
22
23
  func NewAnteHandler(opts HandlerOptions) (sdk.AnteHandler, error) {
23
24
  if opts.AccountKeeper == nil {
24
- return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "account keeper is required for AnteHandler")
25
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrLogic, "account keeper is required for AnteHandler")
25
26
  }
26
27
  if opts.BankKeeper == nil {
27
- return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler")
28
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler")
28
29
  }
29
30
  if opts.SignModeHandler == nil {
30
- return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder")
31
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder")
31
32
  }
32
33
  if opts.AdmissionData == nil {
33
- return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "admission data is required for AnteHandler")
34
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrLogic, "admission data is required for AnteHandler")
34
35
  }
35
36
  if opts.SwingsetKeeper == nil {
36
- return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "swingset keeper is required for AnteHandler")
37
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrLogic, "swingset keeper is required for AnteHandler")
37
38
  }
38
39
 
39
40
  var sigGasConsumer = opts.SigGasConsumer
package/ante/fee.go CHANGED
@@ -3,6 +3,7 @@ package ante
3
3
  import (
4
4
  "fmt"
5
5
 
6
+ sdkioerrors "cosmossdk.io/errors"
6
7
  sdk "github.com/cosmos/cosmos-sdk/types"
7
8
  sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
8
9
  "github.com/cosmos/cosmos-sdk/x/auth/types"
@@ -31,11 +32,11 @@ func NewDeductFeeDecorator(ak AccountKeeper, bk types.BankKeeper, fk FeegrantKee
31
32
  func (dfd DeductFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) {
32
33
  feeTx, ok := tx.(sdk.FeeTx)
33
34
  if !ok {
34
- return ctx, sdkerrors.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx")
35
+ return ctx, sdkioerrors.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx")
35
36
  }
36
37
 
37
38
  if addr := dfd.ak.GetModuleAddress(dfd.feeCollectorName); addr == nil {
38
- return ctx, fmt.Errorf("Fee collector module account (%s) has not been set", dfd.feeCollectorName)
39
+ return ctx, fmt.Errorf("fee collector module account (%s) has not been set", dfd.feeCollectorName)
39
40
  }
40
41
 
41
42
  fee := feeTx.GetFee()
@@ -48,12 +49,12 @@ func (dfd DeductFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bo
48
49
  // this works with only when feegrant enabled.
49
50
  if feeGranter != nil {
50
51
  if dfd.feegrantKeeper == nil {
51
- return ctx, sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "fee grants are not enabled")
52
+ return ctx, sdkioerrors.Wrap(sdkerrors.ErrInvalidRequest, "fee grants are not enabled")
52
53
  } else if !feeGranter.Equals(feePayer) {
53
54
  err := dfd.feegrantKeeper.UseGrantedFees(ctx, feeGranter, feePayer, fee, tx.GetMsgs())
54
55
 
55
56
  if err != nil {
56
- return ctx, sdkerrors.Wrapf(err, "%s not allowed to pay fees from %s", feeGranter, feePayer)
57
+ return ctx, sdkioerrors.Wrapf(err, "%s not allowed to pay fees from %s", feeGranter, feePayer)
57
58
  }
58
59
  }
59
60
 
@@ -62,7 +63,7 @@ func (dfd DeductFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bo
62
63
 
63
64
  deductFeesFromAcc := dfd.ak.GetAccount(ctx, deductFeesFrom)
64
65
  if deductFeesFromAcc == nil {
65
- return ctx, sdkerrors.Wrapf(sdkerrors.ErrUnknownAddress, "fee payer address: %s does not exist", deductFeesFrom)
66
+ return ctx, sdkioerrors.Wrapf(sdkerrors.ErrUnknownAddress, "fee payer address: %s does not exist", deductFeesFrom)
66
67
  }
67
68
 
68
69
  // deduct the fees
@@ -84,12 +85,12 @@ func (dfd DeductFeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bo
84
85
  // DeductFees deducts fees from the given account.
85
86
  func DeductFees(bankKeeper types.BankKeeper, ctx sdk.Context, acc types.AccountI, fees sdk.Coins, feeCollectorName string) error {
86
87
  if !fees.IsValid() {
87
- return sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, "invalid fee amount: %s", fees)
88
+ return sdkioerrors.Wrapf(sdkerrors.ErrInsufficientFee, "invalid fee amount: %s", fees)
88
89
  }
89
90
 
90
91
  err := bankKeeper.SendCoinsFromAccountToModule(ctx, acc.GetAddress(), feeCollectorName, fees)
91
92
  if err != nil {
92
- return sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, err.Error())
93
+ return sdkioerrors.Wrapf(sdkerrors.ErrInsufficientFunds, err.Error())
93
94
  }
94
95
 
95
96
  return nil
@@ -6,6 +6,7 @@ import (
6
6
  "reflect"
7
7
  "testing"
8
8
 
9
+ sdkmath "cosmossdk.io/math"
9
10
  swingtypes "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/types"
10
11
  "github.com/cosmos/cosmos-sdk/codec/types"
11
12
  sdk "github.com/cosmos/cosmos-sdk/types"
@@ -210,11 +211,11 @@ func (msk mockSwingsetKeeper) IsHighPriorityAddress(ctx sdk.Context, addr sdk.Ac
210
211
  return msk.isHighPriorityOwner, nil
211
212
  }
212
213
 
213
- func (msk mockSwingsetKeeper) GetBeansPerUnit(ctx sdk.Context) map[string]sdk.Uint {
214
+ func (msk mockSwingsetKeeper) GetBeansPerUnit(ctx sdk.Context) map[string]sdkmath.Uint {
214
215
  return nil
215
216
  }
216
217
 
217
- func (msk mockSwingsetKeeper) ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans sdk.Uint) error {
218
+ func (msk mockSwingsetKeeper) ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans sdkmath.Uint) error {
218
219
  return fmt.Errorf("not implemented")
219
220
  }
220
221
 
@@ -3,6 +3,7 @@ package ante
3
3
  import (
4
4
  "github.com/armon/go-metrics"
5
5
 
6
+ sdkioerrors "cosmossdk.io/errors"
6
7
  "github.com/cosmos/cosmos-sdk/telemetry"
7
8
  sdk "github.com/cosmos/cosmos-sdk/types"
8
9
  sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
@@ -57,7 +58,7 @@ func (ad AdmissionDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate boo
57
58
  if numErrors > 0 {
58
59
  // Add to instrumentation.
59
60
 
60
- return ctx, sdkerrors.Wrapf(ErrAdmissionRefused, "controller refused message admission: %s", errors[0].Error())
61
+ return ctx, sdkioerrors.Wrapf(ErrAdmissionRefused, "controller refused message admission: %s", errors[0].Error())
61
62
  }
62
63
 
63
64
  return next(ctx, tx, simulate)
package/app/app.go CHANGED
@@ -12,6 +12,7 @@ import (
12
12
  "runtime/debug"
13
13
  "time"
14
14
 
15
+ sdkioerrors "cosmossdk.io/errors"
15
16
  "github.com/cosmos/cosmos-sdk/baseapp"
16
17
  "github.com/cosmos/cosmos-sdk/client"
17
18
  nodeservice "github.com/cosmos/cosmos-sdk/client/grpc/node"
@@ -24,7 +25,6 @@ import (
24
25
  "github.com/cosmos/cosmos-sdk/simapp"
25
26
  storetypes "github.com/cosmos/cosmos-sdk/store/types"
26
27
  sdk "github.com/cosmos/cosmos-sdk/types"
27
- "github.com/cosmos/cosmos-sdk/types/errors"
28
28
  "github.com/cosmos/cosmos-sdk/types/module"
29
29
  "github.com/cosmos/cosmos-sdk/version"
30
30
  "github.com/cosmos/cosmos-sdk/x/auth"
@@ -112,7 +112,6 @@ import (
112
112
  appante "github.com/Agoric/agoric-sdk/golang/cosmos/ante"
113
113
  agorictypes "github.com/Agoric/agoric-sdk/golang/cosmos/types"
114
114
  "github.com/Agoric/agoric-sdk/golang/cosmos/vm"
115
- "github.com/Agoric/agoric-sdk/golang/cosmos/x/lien"
116
115
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset"
117
116
  swingsetclient "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/client"
118
117
  swingsetkeeper "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/keeper"
@@ -120,8 +119,14 @@ import (
120
119
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/vbank"
121
120
  vbanktypes "github.com/Agoric/agoric-sdk/golang/cosmos/x/vbank/types"
122
121
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/vibc"
122
+ "github.com/Agoric/agoric-sdk/golang/cosmos/x/vlocalchain"
123
123
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/vstorage"
124
124
 
125
+ // Import the packet forward middleware
126
+ packetforward "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6/router"
127
+ packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6/router/keeper"
128
+ packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6/router/types"
129
+
125
130
  // unnamed import of statik for swagger UI support
126
131
  _ "github.com/cosmos/cosmos-sdk/client/docs/statik"
127
132
  )
@@ -170,11 +175,11 @@ var (
170
175
  transfer.AppModuleBasic{},
171
176
  vesting.AppModuleBasic{},
172
177
  ica.AppModuleBasic{},
178
+ packetforward.AppModuleBasic{},
173
179
  swingset.AppModuleBasic{},
174
180
  vstorage.AppModuleBasic{},
175
181
  vibc.AppModuleBasic{},
176
182
  vbank.AppModuleBasic{},
177
- lien.AppModuleBasic{},
178
183
  )
179
184
 
180
185
  // module account permissions
@@ -210,11 +215,11 @@ type GaiaApp struct { // nolint: golint
210
215
 
211
216
  controllerInited bool
212
217
  bootstrapNeeded bool
213
- lienPort int
214
218
  swingsetPort int
215
219
  vbankPort int
216
220
  vibcPort int
217
221
  vstoragePort int
222
+ vlocalchainPort int
218
223
 
219
224
  upgradeDetails *upgradeDetails
220
225
 
@@ -237,12 +242,13 @@ type GaiaApp struct { // nolint: golint
237
242
  UpgradeKeeper upgradekeeper.Keeper
238
243
  ParamsKeeper paramskeeper.Keeper
239
244
  // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly
240
- IBCKeeper *ibckeeper.Keeper
241
- ICAHostKeeper icahostkeeper.Keeper
242
- EvidenceKeeper evidencekeeper.Keeper
243
- TransferKeeper ibctransferkeeper.Keeper
244
- FeeGrantKeeper feegrantkeeper.Keeper
245
- AuthzKeeper authzkeeper.Keeper
245
+ IBCKeeper *ibckeeper.Keeper
246
+ ICAHostKeeper icahostkeeper.Keeper
247
+ PacketForwardKeeper *packetforwardkeeper.Keeper
248
+ EvidenceKeeper evidencekeeper.Keeper
249
+ TransferKeeper ibctransferkeeper.Keeper
250
+ FeeGrantKeeper feegrantkeeper.Keeper
251
+ AuthzKeeper authzkeeper.Keeper
246
252
 
247
253
  SwingStoreExportsHandler swingset.SwingStoreExportsHandler
248
254
  SwingSetSnapshotter swingset.ExtensionSnapshotter
@@ -250,7 +256,7 @@ type GaiaApp struct { // nolint: golint
250
256
  VstorageKeeper vstorage.Keeper
251
257
  VibcKeeper vibc.Keeper
252
258
  VbankKeeper vbank.Keeper
253
- LienKeeper lien.Keeper
259
+ VlocalchainKeeper vlocalchain.Keeper
254
260
 
255
261
  // make scoped keepers public for test purposes
256
262
  ScopedIBCKeeper capabilitykeeper.ScopedKeeper
@@ -316,9 +322,9 @@ func NewAgoricApp(
316
322
  authtypes.StoreKey, banktypes.StoreKey, stakingtypes.StoreKey,
317
323
  minttypes.StoreKey, distrtypes.StoreKey, slashingtypes.StoreKey,
318
324
  govtypes.StoreKey, paramstypes.StoreKey, ibchost.StoreKey, upgradetypes.StoreKey,
319
- evidencetypes.StoreKey, ibctransfertypes.StoreKey,
325
+ evidencetypes.StoreKey, ibctransfertypes.StoreKey, packetforwardtypes.StoreKey,
320
326
  capabilitytypes.StoreKey, feegrant.StoreKey, authzkeeper.StoreKey, icahosttypes.StoreKey,
321
- swingset.StoreKey, vstorage.StoreKey, vibc.StoreKey, vbank.StoreKey, lien.StoreKey,
327
+ swingset.StoreKey, vstorage.StoreKey, vibc.StoreKey, vlocalchain.StoreKey, vbank.StoreKey,
322
328
  )
323
329
  tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey)
324
330
  memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey)
@@ -355,7 +361,7 @@ func NewAgoricApp(
355
361
  app.CapabilityKeeper.Seal()
356
362
 
357
363
  // add keepers
358
- innerAk := authkeeper.NewAccountKeeper(
364
+ app.AccountKeeper = authkeeper.NewAccountKeeper(
359
365
  appCodec,
360
366
  keys[authtypes.StoreKey],
361
367
  app.GetSubspace(authtypes.ModuleName),
@@ -363,8 +369,7 @@ func NewAgoricApp(
363
369
  maccPerms,
364
370
  appName,
365
371
  )
366
- wrappedAccountKeeper := lien.NewWrappedAccountKeeper(innerAk)
367
- app.AccountKeeper = wrappedAccountKeeper
372
+
368
373
  app.BankKeeper = bankkeeper.NewBaseKeeper(
369
374
  appCodec,
370
375
  keys[banktypes.StoreKey],
@@ -497,16 +502,13 @@ func NewAgoricApp(
497
502
  )
498
503
 
499
504
  app.VibcKeeper = vibc.NewKeeper(
500
- appCodec, keys[vibc.StoreKey],
505
+ appCodec,
501
506
  app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper,
502
- app.BankKeeper,
503
- scopedVibcKeeper,
504
- app.SwingSetKeeper.PushAction,
505
- )
507
+ ).WithScope(keys[vibc.StoreKey], scopedVibcKeeper, app.SwingSetKeeper.PushAction)
506
508
 
507
- vibcModule := vibc.NewAppModule(app.VibcKeeper)
509
+ vibcModule := vibc.NewAppModule(app.VibcKeeper, app.BankKeeper)
508
510
  vibcIBCModule := vibc.NewIBCModule(app.VibcKeeper)
509
- app.vibcPort = vm.RegisterPortHandler("vibc", vibcIBCModule)
511
+ app.vibcPort = vm.RegisterPortHandler("vibc", vibc.NewReceiver(app.VibcKeeper))
510
512
 
511
513
  app.VbankKeeper = vbank.NewKeeper(
512
514
  appCodec, keys[vbank.StoreKey], app.GetSubspace(vbank.ModuleName),
@@ -516,16 +518,6 @@ func NewAgoricApp(
516
518
  vbankModule := vbank.NewAppModule(app.VbankKeeper)
517
519
  app.vbankPort = vm.RegisterPortHandler("bank", vbank.NewPortHandler(vbankModule, app.VbankKeeper))
518
520
 
519
- // Lien keeper, and circular reference back to wrappedAccountKeeper
520
- app.LienKeeper = lien.NewKeeper(
521
- appCodec, keys[lien.StoreKey],
522
- wrappedAccountKeeper, app.BankKeeper, app.StakingKeeper,
523
- app.SwingSetKeeper.PushAction,
524
- )
525
- wrappedAccountKeeper.SetWrapper(app.LienKeeper.GetAccountWrapper())
526
- lienModule := lien.NewAppModule(app.LienKeeper)
527
- app.lienPort = vm.RegisterPortHandler("lien", lien.NewPortHandler(app.LienKeeper))
528
-
529
521
  // register the proposal types
530
522
  govRouter := govv1beta1.NewRouter()
531
523
  govRouter.
@@ -549,11 +541,24 @@ func NewAgoricApp(
549
541
  govConfig,
550
542
  )
551
543
 
544
+ // Initialize the packet forward middleware Keeper
545
+ // It's important to note that the PFM Keeper must be initialized before the Transfer Keeper
546
+ app.PacketForwardKeeper = packetforwardkeeper.NewKeeper(
547
+ appCodec,
548
+ keys[packetforwardtypes.StoreKey],
549
+ app.GetSubspace(packetforwardtypes.ModuleName),
550
+ app.TransferKeeper, // will be zero-value here, reference is set later on with SetTransferKeeper.
551
+ app.IBCKeeper.ChannelKeeper,
552
+ app.DistrKeeper,
553
+ app.BankKeeper,
554
+ app.IBCKeeper.ChannelKeeper,
555
+ )
556
+
552
557
  app.TransferKeeper = ibctransferkeeper.NewKeeper(
553
558
  appCodec,
554
559
  keys[ibctransfertypes.StoreKey],
555
560
  app.GetSubspace(ibctransfertypes.ModuleName),
556
- app.IBCKeeper.ChannelKeeper,
561
+ app.PacketForwardKeeper,
557
562
  app.IBCKeeper.ChannelKeeper,
558
563
  &app.IBCKeeper.PortKeeper,
559
564
  app.AccountKeeper,
@@ -562,11 +567,19 @@ func NewAgoricApp(
562
567
  )
563
568
  transferModule := transfer.NewAppModule(app.TransferKeeper)
564
569
  transferIBCModule := transfer.NewIBCModule(app.TransferKeeper)
570
+ app.PacketForwardKeeper.SetTransferKeeper(app.TransferKeeper)
571
+ transferPFMModule := packetforward.NewIBCMiddleware(
572
+ transferIBCModule,
573
+ app.PacketForwardKeeper,
574
+ 0, // retries on timeout
575
+ packetforwardkeeper.DefaultForwardTransferPacketTimeoutTimestamp, // forward timeout
576
+ packetforwardkeeper.DefaultRefundTransferPacketTimeoutTimestamp, // refund timeout
577
+ )
565
578
 
566
579
  app.ICAHostKeeper = icahostkeeper.NewKeeper(
567
580
  appCodec, keys[icahosttypes.StoreKey],
568
581
  app.GetSubspace(icahosttypes.SubModuleName),
569
- app.IBCKeeper.ChannelKeeper,
582
+ app.PacketForwardKeeper,
570
583
  app.IBCKeeper.ChannelKeeper,
571
584
  &app.IBCKeeper.PortKeeper,
572
585
  app.AccountKeeper,
@@ -577,14 +590,34 @@ func NewAgoricApp(
577
590
  icaHostIBCModule := icahost.NewIBCModule(app.ICAHostKeeper)
578
591
 
579
592
  // create static IBC router, add transfer route, then set and seal it
580
- // FIXME: Don't be confused by the name! The port router maps *module names* (not PortIDs) to modules.
593
+ // Don't be confused by the name! The port router maps *module names* (not
594
+ // PortIDs) to modules.
581
595
  ibcRouter := porttypes.NewRouter()
596
+
597
+ // transfer stack contains (from top to bottom):
598
+ // - ICA Host
599
+ // - Packet Forward Middleware wrapping transfer IBC
600
+ // - vIBC
582
601
  ibcRouter.AddRoute(icahosttypes.SubModuleName, icaHostIBCModule).
583
- AddRoute(ibctransfertypes.ModuleName, transferIBCModule).
602
+ AddRoute(ibctransfertypes.ModuleName, transferPFMModule).
584
603
  AddRoute(vibc.ModuleName, vibcIBCModule)
585
604
 
605
+ // Seal the router
586
606
  app.IBCKeeper.SetRouter(ibcRouter)
587
607
 
608
+ // The local chain keeper provides ICA/ICQ-like support for the VM to
609
+ // control a fresh account and/or query this Cosmos-SDK instance.
610
+ app.VlocalchainKeeper = vlocalchain.NewKeeper(
611
+ appCodec,
612
+ keys[vlocalchain.StoreKey],
613
+ app.BaseApp.MsgServiceRouter(),
614
+ app.BaseApp.GRPCQueryRouter(),
615
+ )
616
+ app.vlocalchainPort = vm.RegisterPortHandler(
617
+ "vlocalchain",
618
+ vlocalchain.NewReceiver(app.VlocalchainKeeper),
619
+ )
620
+
588
621
  // create evidence keeper with router
589
622
  evidenceKeeper := evidencekeeper.NewKeeper(
590
623
  appCodec,
@@ -606,11 +639,7 @@ func NewAgoricApp(
606
639
  app.BaseApp.DeliverTx,
607
640
  encodingConfig.TxConfig,
608
641
  ),
609
- // NOTE: using innerAk here instead of app.AccountKeeper
610
- // since migration method doesn't know how to unwrap the account keeper.
611
- // Needs access to some struct fields.
612
- // (Alternative is to add accessor methods to the AccountKeeper interface.)
613
- auth.NewAppModule(appCodec, innerAk, nil),
642
+ auth.NewAppModule(appCodec, app.AccountKeeper, nil),
614
643
  vesting.NewAppModule(app.AccountKeeper, app.BankKeeper, app.StakingKeeper),
615
644
  bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper),
616
645
  capability.NewAppModule(appCodec, *app.CapabilityKeeper),
@@ -627,11 +656,11 @@ func NewAgoricApp(
627
656
  params.NewAppModule(app.ParamsKeeper),
628
657
  transferModule,
629
658
  icaModule,
659
+ packetforward.NewAppModule(app.PacketForwardKeeper),
630
660
  vstorage.NewAppModule(app.VstorageKeeper),
631
661
  swingset.NewAppModule(app.SwingSetKeeper, &app.SwingStoreExportsHandler, setBootstrapNeeded, app.ensureControllerInited, swingStoreExportDir),
632
662
  vibcModule,
633
663
  vbankModule,
634
- lienModule,
635
664
  )
636
665
 
637
666
  // During begin block slashing happens after distr.BeginBlocker so that
@@ -648,6 +677,7 @@ func NewAgoricApp(
648
677
  ibctransfertypes.ModuleName,
649
678
  ibchost.ModuleName,
650
679
  icatypes.ModuleName,
680
+ packetforwardtypes.ModuleName,
651
681
  authtypes.ModuleName,
652
682
  banktypes.ModuleName,
653
683
  distrtypes.ModuleName,
@@ -665,17 +695,16 @@ func NewAgoricApp(
665
695
  swingset.ModuleName,
666
696
  vibc.ModuleName,
667
697
  vbank.ModuleName,
668
- lien.ModuleName,
669
698
  )
670
699
  app.mm.SetOrderEndBlockers(
671
700
  vibc.ModuleName,
672
701
  vbank.ModuleName,
673
- lien.ModuleName,
674
702
  govtypes.ModuleName,
675
703
  stakingtypes.ModuleName,
676
704
  ibctransfertypes.ModuleName,
677
705
  ibchost.ModuleName,
678
706
  icatypes.ModuleName,
707
+ packetforwardtypes.ModuleName,
679
708
  feegrant.ModuleName,
680
709
  authz.ModuleName,
681
710
  capabilitytypes.ModuleName,
@@ -725,7 +754,7 @@ func NewAgoricApp(
725
754
  vbank.ModuleName,
726
755
  vibc.ModuleName,
727
756
  swingset.ModuleName,
728
- lien.ModuleName,
757
+ packetforwardtypes.ModuleName,
729
758
  }
730
759
 
731
760
  app.mm.SetOrderInitGenesis(moduleOrderForGenesisAndUpgrade...)
@@ -808,8 +837,13 @@ func NewAgoricApp(
808
837
  }
809
838
  if (upgradeInfo.Name == upgradeName || upgradeInfo.Name == upgradeNameTest) && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) {
810
839
  storeUpgrades := storetypes.StoreUpgrades{
840
+ Added: []string{
841
+ packetforwardtypes.ModuleName, // Added PFM
842
+ vlocalchain.ModuleName, // Agoric added vlocalchain
843
+ },
811
844
  Deleted: []string{
812
845
  crisistypes.ModuleName, // The SDK discontinued the crisis module in v0.51.0
846
+ "lien", // Agoric removed the lien module
813
847
  },
814
848
  }
815
849
 
@@ -845,7 +879,17 @@ func unreleasedUpgradeHandler(app *GaiaApp, targetUpgrade string) func(sdk.Conte
845
879
  // Each CoreProposalStep runs sequentially, and can be constructed from
846
880
  // one or more modules executing in parallel within the step.
847
881
  CoreProposalSteps := []vm.CoreProposalStep{
848
- // vm.CoreProposalStepForModules("@agoric/builders/scripts/vats/init-network.js"),
882
+ // First, upgrade wallet factory
883
+ vm.CoreProposalStepForModules("@agoric/builders/scripts/smart-wallet/build-wallet-factory2-upgrade.js"),
884
+ // Then, upgrade Zoe and ZCF
885
+ vm.CoreProposalStepForModules("@agoric/builders/scripts/vats/replace-zoe.js"),
886
+ // Then, upgrade the provisioning vat
887
+ vm.CoreProposalStepForModules("@agoric/builders/scripts/vats/replace-provisioning.js"),
888
+ // Enable low-level Orchestration.
889
+ vm.CoreProposalStepForModules(
890
+ "@agoric/builders/scripts/vats/init-network.js",
891
+ "@agoric/builders/scripts/vats/init-localchain.js",
892
+ ),
849
893
  }
850
894
 
851
895
  app.upgradeDetails = &upgradeDetails{
@@ -902,11 +946,13 @@ type cosmosInitAction struct {
902
946
  UpgradeDetails *upgradeDetails `json:"upgradeDetails,omitempty"`
903
947
  Params swingset.Params `json:"params"`
904
948
  SupplyCoins sdk.Coins `json:"supplyCoins"`
905
- LienPort int `json:"lienPort"`
906
- StoragePort int `json:"storagePort"`
907
- SwingsetPort int `json:"swingsetPort"`
908
- VbankPort int `json:"vbankPort"`
909
- VibcPort int `json:"vibcPort"`
949
+ // CAVEAT: Every property ending in "Port" is saved in chain-main.js/portNums
950
+ // with a key consisting of this name with the "Port" stripped.
951
+ StoragePort int `json:"storagePort"`
952
+ SwingsetPort int `json:"swingsetPort"`
953
+ VbankPort int `json:"vbankPort"`
954
+ VibcPort int `json:"vibcPort"`
955
+ VlocalchainPort int `json:"vlocalchainPort"`
910
956
  }
911
957
 
912
958
  // Name returns the name of the App
@@ -936,11 +982,12 @@ func (app *GaiaApp) initController(ctx sdk.Context, bootstrap bool) {
936
982
  Params: app.SwingSetKeeper.GetParams(ctx),
937
983
  SupplyCoins: sdk.NewCoins(app.BankKeeper.GetSupply(ctx, "uist")),
938
984
  UpgradeDetails: app.upgradeDetails,
939
- LienPort: app.lienPort,
940
- StoragePort: app.vstoragePort,
941
- SwingsetPort: app.swingsetPort,
942
- VbankPort: app.vbankPort,
943
- VibcPort: app.vibcPort,
985
+ // See CAVEAT in cosmosInitAction.
986
+ StoragePort: app.vstoragePort,
987
+ SwingsetPort: app.swingsetPort,
988
+ VbankPort: app.vbankPort,
989
+ VibcPort: app.vibcPort,
990
+ VlocalchainPort: app.vlocalchainPort,
944
991
  }
945
992
  // This uses `BlockingSend` as a friendly wrapper for `sendToController`
946
993
  //
@@ -952,12 +999,12 @@ func (app *GaiaApp) initController(ctx sdk.Context, bootstrap bool) {
952
999
  // fmt.Fprintf(os.Stderr, "AG_COSMOS_INIT Returned from SwingSet: %s, %v\n", out, err)
953
1000
 
954
1001
  if err != nil {
955
- panic(errors.Wrap(err, "cannot initialize Controller"))
1002
+ panic(sdkioerrors.Wrap(err, "cannot initialize Controller"))
956
1003
  }
957
1004
  var res bool
958
1005
  err = json.Unmarshal([]byte(out), &res)
959
1006
  if err != nil {
960
- panic(errors.Wrapf(err, "cannot unmarshal Controller init response: %s", out))
1007
+ panic(sdkioerrors.Wrapf(err, "cannot unmarshal Controller init response: %s", out))
961
1008
  }
962
1009
  if !res {
963
1010
  panic(fmt.Errorf("controller negative init response"))
@@ -1207,6 +1254,7 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
1207
1254
  paramsKeeper.Subspace(ibctransfertypes.ModuleName)
1208
1255
  paramsKeeper.Subspace(ibchost.ModuleName)
1209
1256
  paramsKeeper.Subspace(icahosttypes.SubModuleName)
1257
+ paramsKeeper.Subspace(packetforwardtypes.ModuleName).WithKeyTable(packetforwardtypes.ParamKeyTable())
1210
1258
  paramsKeeper.Subspace(swingset.ModuleName)
1211
1259
  paramsKeeper.Subspace(vbank.ModuleName)
1212
1260
 
package/app/export.go CHANGED
@@ -44,9 +44,10 @@ func (app *GaiaApp) ExportAppStateAndValidators(
44
44
  }, err
45
45
  }
46
46
 
47
- // prepare for fresh start at zero height
48
- // NOTE zero height genesis is a temporary feature which will be deprecated
49
- // in favour of export at a block height
47
+ // prepForZeroHeightGenesis prepares for a fresh start at zero height.
48
+ //
49
+ // NOTE: Zero height genesis is a temporary feature which will be deprecated
50
+ // in favour of export at a block height.
50
51
  func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) {
51
52
  applyAllowedAddrs := false
52
53
 
@@ -106,7 +107,9 @@ func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [
106
107
  feePool.CommunityPool = feePool.CommunityPool.Add(scraps...)
107
108
  app.DistrKeeper.SetFeePool(ctx, feePool)
108
109
 
109
- app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator())
110
+ if err := app.DistrKeeper.Hooks().AfterValidatorCreated(ctx, val.GetOperator()); err != nil {
111
+ panic(err)
112
+ }
110
113
  return false
111
114
  })
112
115
 
@@ -120,8 +123,12 @@ func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [
120
123
  if err != nil {
121
124
  panic(err)
122
125
  }
123
- app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr)
124
- app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr)
126
+ if err := app.DistrKeeper.Hooks().BeforeDelegationCreated(ctx, delAddr, valAddr); err != nil {
127
+ panic(err)
128
+ }
129
+ if err := app.DistrKeeper.Hooks().AfterDelegationModified(ctx, delAddr, valAddr); err != nil {
130
+ panic(err)
131
+ }
125
132
  }
126
133
 
127
134
  // reset context height
@@ -5,11 +5,12 @@ import (
5
5
  "strings"
6
6
  "testing"
7
7
 
8
+ sdkioerrors "cosmossdk.io/errors"
8
9
  sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
9
10
  )
10
11
 
11
12
  func TestErrorStackTraces(t *testing.T) {
12
- err := sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, "my error %d", 123)
13
+ err := sdkioerrors.Wrapf(sdkerrors.ErrInsufficientFee, "my error %d", 123)
13
14
  expected := "my error 123: insufficient fee"
14
15
 
15
16
  // Check that sdkerrors.Wrapf(...).Error() does not leak stack.
@@ -15,7 +15,9 @@ import (
15
15
  "github.com/cosmos/cosmos-sdk/client/debug"
16
16
  "github.com/cosmos/cosmos-sdk/client/flags"
17
17
  "github.com/cosmos/cosmos-sdk/client/keys"
18
+ "github.com/cosmos/cosmos-sdk/client/pruning"
18
19
  "github.com/cosmos/cosmos-sdk/client/rpc"
20
+ "github.com/cosmos/cosmos-sdk/client/snapshot"
19
21
  "github.com/cosmos/cosmos-sdk/server"
20
22
  servertypes "github.com/cosmos/cosmos-sdk/server/types"
21
23
  "github.com/cosmos/cosmos-sdk/snapshots"
@@ -126,9 +128,15 @@ func initRootCmd(sender Sender, rootCmd *cobra.Command, encodingConfig params.En
126
128
  cfg := sdk.GetConfig()
127
129
  cfg.Seal()
128
130
 
131
+ ac := appCreator{
132
+ encCfg: encodingConfig,
133
+ sender: sender,
134
+ }
135
+
129
136
  rootCmd.AddCommand(
130
137
  genutilcli.InitCmd(gaia.ModuleBasics, gaia.DefaultNodeHome),
131
138
  genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, gaia.DefaultNodeHome),
139
+ genutilcli.MigrateGenesisCmd(),
132
140
  genutilcli.GenTxCmd(gaia.ModuleBasics, encodingConfig.TxConfig, banktypes.GenesisBalancesIterator{}, gaia.DefaultNodeHome),
133
141
  genutilcli.ValidateGenesisCmd(gaia.ModuleBasics),
134
142
  AddGenesisAccountCmd(encodingConfig.Marshaler, gaia.DefaultNodeHome),
@@ -136,12 +144,10 @@ func initRootCmd(sender Sender, rootCmd *cobra.Command, encodingConfig params.En
136
144
  testnetCmd(gaia.ModuleBasics, banktypes.GenesisBalancesIterator{}),
137
145
  debug.Cmd(),
138
146
  config.Cmd(),
147
+ pruning.Cmd(ac.newApp, gaia.DefaultNodeHome),
148
+ snapshot.Cmd(ac.newApp),
139
149
  )
140
150
 
141
- ac := appCreator{
142
- encCfg: encodingConfig,
143
- sender: sender,
144
- }
145
151
  server.AddCommands(rootCmd, gaia.DefaultNodeHome, ac.newApp, ac.appExport, addModuleInitFlags)
146
152
 
147
153
  for _, command := range rootCmd.Commands() {
@@ -231,6 +237,7 @@ func txCommand() *cobra.Command {
231
237
  authcmd.GetBroadcastCommand(),
232
238
  authcmd.GetEncodeCommand(),
233
239
  authcmd.GetDecodeCommand(),
240
+ authcmd.GetAuxToFeeCommand(),
234
241
  flags.LineBreak,
235
242
  vestingcli.GetTxCmd(),
236
243
  )
@@ -284,7 +291,7 @@ func (ac appCreator) newApp(
284
291
  }
285
292
 
286
293
  snapshotDir := filepath.Join(homePath, "data", "snapshots")
287
- snapshotDB, err := sdk.NewLevelDB("metadata", snapshotDir)
294
+ snapshotDB, err := dbm.NewDB("metadata", dbm.GoLevelDBBackend, snapshotDir)
288
295
  if err != nil {
289
296
  panic(err)
290
297
  }