@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.
- package/Makefile +7 -0
- package/ante/ante.go +6 -5
- package/ante/fee.go +8 -7
- package/ante/inbound_test.go +3 -2
- package/ante/vm_admission.go +2 -1
- package/app/app.go +107 -59
- package/app/export.go +13 -6
- package/cmd/libdaemon/main_test.go +2 -1
- package/daemon/cmd/root.go +12 -5
- package/e2e_test/Makefile +29 -0
- package/e2e_test/README.md +100 -0
- package/e2e_test/go.mod +217 -0
- package/e2e_test/go.sum +1323 -0
- package/e2e_test/ibc_conformance_test.go +56 -0
- package/e2e_test/pfm_test.go +613 -0
- package/e2e_test/util.go +271 -0
- package/git-revision.txt +1 -1
- package/go.mod +15 -7
- package/go.sum +8 -5
- package/package.json +3 -3
- package/proto/agoric/vlocalchain/.clang-format +7 -0
- package/proto/agoric/vlocalchain/vlocalchain.proto +31 -0
- package/vm/action.go +5 -4
- package/vm/action_test.go +31 -11
- package/vm/controller.go +22 -1
- package/vm/server.go +1 -1
- package/x/swingset/abci.go +10 -10
- package/x/swingset/client/cli/tx.go +4 -0
- package/x/swingset/handler.go +2 -1
- package/x/swingset/keeper/keeper.go +6 -12
- package/x/swingset/keeper/msg_server.go +18 -18
- package/x/swingset/keeper/proposal.go +13 -3
- package/x/swingset/keeper/querier.go +12 -11
- package/x/swingset/keeper/swing_store_exports_handler.go +7 -3
- package/x/swingset/proposal_handler.go +2 -1
- package/x/swingset/types/expected_keepers.go +3 -2
- package/x/swingset/types/msgs.go +25 -24
- package/x/swingset/types/params.go +2 -1
- package/x/swingset/types/proposal.go +5 -4
- package/x/vbank/handler.go +2 -1
- package/x/vbank/keeper/querier.go +4 -3
- package/x/vbank/vbank.go +3 -3
- package/x/vibc/alias.go +3 -0
- package/x/vibc/handler.go +16 -9
- package/x/vibc/keeper/keeper.go +102 -65
- package/x/vibc/keeper/triggers.go +101 -0
- package/x/vibc/module.go +4 -2
- package/x/vibc/types/expected_keepers.go +13 -0
- package/x/vibc/types/ibc_module.go +335 -0
- package/x/vibc/types/receiver.go +160 -0
- package/x/vlocalchain/alias.go +19 -0
- package/x/vlocalchain/handler.go +20 -0
- package/x/vlocalchain/keeper/keeper.go +279 -0
- package/x/vlocalchain/keeper/keeper_test.go +32 -0
- package/x/vlocalchain/types/codec.go +34 -0
- package/x/vlocalchain/types/key.go +27 -0
- package/x/vlocalchain/types/msgs.go +16 -0
- package/x/vlocalchain/types/vlocalchain.pb.go +1072 -0
- package/x/vlocalchain/vlocalchain.go +109 -0
- package/x/vlocalchain/vlocalchain_test.go +305 -0
- package/x/vstorage/handler.go +2 -1
- package/x/vstorage/keeper/keeper.go +5 -4
- package/x/vstorage/keeper/querier.go +6 -5
- package/x/vstorage/keeper/querier_test.go +4 -3
- package/proto/agoric/lien/genesis.proto +0 -25
- package/proto/agoric/lien/lien.proto +0 -25
- package/x/lien/alias.go +0 -17
- package/x/lien/genesis.go +0 -58
- package/x/lien/genesis_test.go +0 -101
- package/x/lien/keeper/account.go +0 -290
- package/x/lien/keeper/keeper.go +0 -255
- package/x/lien/keeper/keeper_test.go +0 -623
- package/x/lien/lien.go +0 -205
- package/x/lien/lien_test.go +0 -533
- package/x/lien/module.go +0 -115
- package/x/lien/spec/01_concepts.md +0 -146
- package/x/lien/spec/02_messages.md +0 -96
- package/x/lien/types/accountkeeper.go +0 -81
- package/x/lien/types/accountstate.go +0 -27
- package/x/lien/types/expected_keepers.go +0 -18
- package/x/lien/types/genesis.pb.go +0 -567
- package/x/lien/types/key.go +0 -25
- package/x/lien/types/lien.pb.go +0 -403
- package/x/vibc/ibc.go +0 -394
- /package/{src/index.cjs → index.cjs} +0 -0
package/Makefile
CHANGED
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,
|
|
25
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrLogic, "account keeper is required for AnteHandler")
|
|
25
26
|
}
|
|
26
27
|
if opts.BankKeeper == nil {
|
|
27
|
-
return nil,
|
|
28
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler")
|
|
28
29
|
}
|
|
29
30
|
if opts.SignModeHandler == nil {
|
|
30
|
-
return nil,
|
|
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,
|
|
34
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrLogic, "admission data is required for AnteHandler")
|
|
34
35
|
}
|
|
35
36
|
if opts.SwingsetKeeper == nil {
|
|
36
|
-
return nil,
|
|
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,
|
|
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("
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
93
|
+
return sdkioerrors.Wrapf(sdkerrors.ErrInsufficientFunds, err.Error())
|
|
93
94
|
}
|
|
94
95
|
|
|
95
96
|
return nil
|
package/ante/inbound_test.go
CHANGED
|
@@ -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]
|
|
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
|
|
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
|
|
package/ante/vm_admission.go
CHANGED
|
@@ -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,
|
|
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
|
|
241
|
-
ICAHostKeeper
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
505
|
+
appCodec,
|
|
501
506
|
app.IBCKeeper.ChannelKeeper, &app.IBCKeeper.PortKeeper,
|
|
502
|
-
|
|
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",
|
|
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.
|
|
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.
|
|
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
|
-
//
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
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
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
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
|
-
|
|
940
|
-
StoragePort:
|
|
941
|
-
SwingsetPort:
|
|
942
|
-
VbankPort:
|
|
943
|
-
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(
|
|
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(
|
|
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
|
-
//
|
|
48
|
-
//
|
|
49
|
-
//
|
|
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
|
-
|
|
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 :=
|
|
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.
|
package/daemon/cmd/root.go
CHANGED
|
@@ -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 :=
|
|
294
|
+
snapshotDB, err := dbm.NewDB("metadata", dbm.GoLevelDBBackend, snapshotDir)
|
|
288
295
|
if err != nil {
|
|
289
296
|
panic(err)
|
|
290
297
|
}
|