@agoric/cosmos 0.35.0-u14.1 → 0.35.0-u16.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/CHANGELOG.md +121 -134
- package/MAINTAINERS.md +3 -0
- package/Makefile +36 -26
- package/ante/ante.go +6 -5
- package/ante/inbound_test.go +3 -2
- package/ante/vm_admission.go +2 -1
- package/app/app.go +206 -150
- package/app/upgrade.go +76 -0
- package/cmd/agd/agvm.go +42 -0
- package/cmd/agd/main.go +130 -11
- package/cmd/libdaemon/main.go +64 -53
- package/cmd/libdaemon/main_test.go +2 -1
- package/daemon/cmd/root.go +164 -74
- package/daemon/cmd/root_test.go +189 -1
- package/daemon/main.go +4 -2
- 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 +22 -11
- package/go.sum +17 -13
- package/package.json +8 -4
- package/proto/agoric/swingset/genesis.proto +4 -0
- package/proto/agoric/swingset/swingset.proto +1 -1
- package/proto/agoric/vlocalchain/.clang-format +7 -0
- package/proto/agoric/vlocalchain/vlocalchain.proto +31 -0
- package/proto/agoric/vtransfer/genesis.proto +18 -0
- package/scripts/protocgen.sh +7 -8
- package/types/kv_entry_helpers.go +42 -0
- package/upgradegaia.sh +8 -8
- package/vm/action.go +5 -4
- package/vm/action_test.go +31 -11
- package/vm/client.go +113 -0
- package/vm/client_test.go +182 -0
- package/vm/controller.go +17 -40
- package/vm/core_proposals.go +22 -2
- package/vm/jsonrpcconn/jsonrpcconn.go +160 -0
- package/vm/jsonrpcconn/jsonrpcconn_test.go +126 -0
- package/vm/proto_json.go +38 -0
- package/vm/proto_json_test.go +103 -0
- package/vm/server.go +124 -0
- package/x/swingset/abci.go +10 -10
- package/x/swingset/alias.go +2 -0
- package/x/swingset/client/cli/tx.go +4 -0
- package/x/swingset/genesis.go +84 -24
- package/x/swingset/handler.go +2 -1
- package/x/swingset/keeper/extension_snapshotter.go +2 -2
- package/x/swingset/keeper/keeper.go +13 -25
- package/x/swingset/keeper/msg_server.go +18 -18
- package/x/swingset/keeper/proposal.go +3 -3
- package/x/swingset/keeper/querier.go +12 -11
- package/x/swingset/keeper/swing_store_exports_handler.go +16 -5
- package/x/swingset/keeper/test_utils.go +16 -0
- package/x/swingset/module.go +7 -7
- package/x/swingset/proposal_handler.go +2 -1
- package/x/swingset/testing/queue.go +17 -0
- package/x/swingset/types/default-params.go +1 -1
- package/x/swingset/types/expected_keepers.go +3 -2
- package/x/swingset/types/genesis.pb.go +78 -25
- package/x/swingset/types/msgs.go +44 -24
- package/x/swingset/types/params.go +2 -1
- package/x/swingset/types/proposal.go +5 -4
- package/x/swingset/types/swingset.pb.go +1 -1
- package/x/vbank/genesis.go +0 -2
- package/x/vbank/handler.go +2 -1
- package/x/vbank/keeper/querier.go +4 -3
- package/x/vbank/module.go +0 -5
- package/x/vbank/types/msgs.go +0 -12
- package/x/vbank/vbank.go +9 -9
- package/x/vbank/vbank_test.go +2 -2
- 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 +5 -8
- package/x/vibc/types/expected_keepers.go +13 -0
- package/x/vibc/types/ibc_module.go +336 -0
- package/x/vibc/types/receiver.go +170 -0
- package/x/vlocalchain/alias.go +19 -0
- package/x/vlocalchain/handler.go +21 -0
- package/x/vlocalchain/keeper/keeper.go +279 -0
- package/x/vlocalchain/keeper/keeper_test.go +97 -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 +114 -0
- package/x/vlocalchain/vlocalchain_test.go +434 -0
- package/x/vstorage/handler.go +2 -1
- package/x/vstorage/keeper/grpc_query.go +0 -1
- package/x/vstorage/keeper/keeper.go +13 -20
- package/x/vstorage/keeper/querier.go +6 -5
- package/x/vstorage/keeper/querier_test.go +4 -3
- package/x/vstorage/module.go +0 -5
- package/x/vstorage/testing/queue.go +27 -0
- package/x/vtransfer/alias.go +13 -0
- package/x/vtransfer/genesis.go +39 -0
- package/x/vtransfer/genesis_test.go +12 -0
- package/x/vtransfer/handler.go +20 -0
- package/x/vtransfer/ibc_middleware.go +186 -0
- package/x/vtransfer/ibc_middleware_test.go +448 -0
- package/x/vtransfer/keeper/keeper.go +281 -0
- package/x/vtransfer/module.go +124 -0
- package/x/vtransfer/types/expected_keepers.go +38 -0
- package/x/vtransfer/types/genesis.pb.go +327 -0
- package/x/vtransfer/types/key.go +9 -0
- package/x/vtransfer/types/msgs.go +9 -0
- 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/x/swingset/genesis.go
CHANGED
|
@@ -2,7 +2,13 @@ package swingset
|
|
|
2
2
|
|
|
3
3
|
import (
|
|
4
4
|
// "os"
|
|
5
|
+
"bytes"
|
|
6
|
+
"crypto/sha256"
|
|
7
|
+
"encoding/hex"
|
|
8
|
+
"encoding/json"
|
|
5
9
|
"fmt"
|
|
10
|
+
"hash"
|
|
11
|
+
"strings"
|
|
6
12
|
|
|
7
13
|
agoric "github.com/Agoric/agoric-sdk/golang/cosmos/types"
|
|
8
14
|
"github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/keeper"
|
|
@@ -35,8 +41,10 @@ func InitGenesis(ctx sdk.Context, k Keeper, swingStoreExportsHandler *SwingStore
|
|
|
35
41
|
k.SetState(ctx, data.GetState())
|
|
36
42
|
|
|
37
43
|
swingStoreExportData := data.GetSwingStoreExportData()
|
|
38
|
-
if len(swingStoreExportData) == 0 {
|
|
44
|
+
if len(swingStoreExportData) == 0 && data.SwingStoreExportDataHash == "" {
|
|
39
45
|
return true
|
|
46
|
+
} else if data.SwingStoreExportDataHash != "" && len(swingStoreExportData) > 0 {
|
|
47
|
+
panic("Swingset genesis state cannot have both export data and hash of export data")
|
|
40
48
|
}
|
|
41
49
|
|
|
42
50
|
artifactProvider, err := keeper.OpenSwingStoreExportDirectory(swingStoreExportDir)
|
|
@@ -46,15 +54,62 @@ func InitGenesis(ctx sdk.Context, k Keeper, swingStoreExportsHandler *SwingStore
|
|
|
46
54
|
|
|
47
55
|
swingStore := k.GetSwingStore(ctx)
|
|
48
56
|
|
|
49
|
-
for _, entry := range swingStoreExportData {
|
|
50
|
-
swingStore.Set([]byte(entry.Key), []byte(entry.Value))
|
|
51
|
-
}
|
|
52
|
-
|
|
53
57
|
snapshotHeight := uint64(ctx.BlockHeight())
|
|
54
58
|
|
|
55
|
-
getExportDataReader
|
|
56
|
-
|
|
57
|
-
|
|
59
|
+
var getExportDataReader func() (agoric.KVEntryReader, error)
|
|
60
|
+
|
|
61
|
+
if len(swingStoreExportData) > 0 {
|
|
62
|
+
for _, entry := range swingStoreExportData {
|
|
63
|
+
swingStore.Set([]byte(entry.Key), []byte(entry.Value))
|
|
64
|
+
}
|
|
65
|
+
getExportDataReader = func() (agoric.KVEntryReader, error) {
|
|
66
|
+
exportDataIterator := swingStore.Iterator(nil, nil)
|
|
67
|
+
return agoric.NewKVIteratorReader(exportDataIterator), nil
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
hashParts := strings.SplitN(data.SwingStoreExportDataHash, ":", 2)
|
|
71
|
+
if len(hashParts) != 2 {
|
|
72
|
+
panic(fmt.Errorf("invalid swing-store export data hash %s", data.SwingStoreExportDataHash))
|
|
73
|
+
}
|
|
74
|
+
if hashParts[0] != "sha256" {
|
|
75
|
+
panic(fmt.Errorf("invalid swing-store export data hash algorithm %s, expected sha256", hashParts[0]))
|
|
76
|
+
}
|
|
77
|
+
sha256Hash, err := hex.DecodeString(hashParts[1])
|
|
78
|
+
if err != nil {
|
|
79
|
+
panic(err)
|
|
80
|
+
}
|
|
81
|
+
getExportDataReader = func() (agoric.KVEntryReader, error) {
|
|
82
|
+
kvReader, err := artifactProvider.GetExportDataReader()
|
|
83
|
+
if err != nil {
|
|
84
|
+
return nil, err
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if kvReader == nil {
|
|
88
|
+
return nil, fmt.Errorf("swing-store export has no export data")
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
hasher := sha256.New()
|
|
92
|
+
encoder := json.NewEncoder(hasher)
|
|
93
|
+
encoder.SetEscapeHTML(false)
|
|
94
|
+
|
|
95
|
+
return agoric.NewKVHookingReader(kvReader, func(entry agoric.KVEntry) error {
|
|
96
|
+
key := []byte(entry.Key())
|
|
97
|
+
|
|
98
|
+
if !entry.HasValue() {
|
|
99
|
+
swingStore.Delete(key)
|
|
100
|
+
} else {
|
|
101
|
+
swingStore.Set(key, []byte(entry.StringValue()))
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return encoder.Encode(entry)
|
|
105
|
+
}, func() error {
|
|
106
|
+
sum := hasher.Sum(nil)
|
|
107
|
+
if !bytes.Equal(sum, sha256Hash) {
|
|
108
|
+
return fmt.Errorf("swing-store data sha256sum didn't match. expected %x, got %x", sha256Hash, sum)
|
|
109
|
+
}
|
|
110
|
+
return nil
|
|
111
|
+
}), nil
|
|
112
|
+
}
|
|
58
113
|
}
|
|
59
114
|
|
|
60
115
|
err = swingStoreExportsHandler.RestoreExport(
|
|
@@ -64,7 +119,7 @@ func InitGenesis(ctx sdk.Context, k Keeper, swingStoreExportsHandler *SwingStore
|
|
|
64
119
|
ReadNextArtifact: artifactProvider.ReadNextArtifact,
|
|
65
120
|
},
|
|
66
121
|
keeper.SwingStoreRestoreOptions{
|
|
67
|
-
ArtifactMode: keeper.
|
|
122
|
+
ArtifactMode: keeper.SwingStoreArtifactModeOperational,
|
|
68
123
|
ExportDataMode: keeper.SwingStoreExportDataModeAll,
|
|
69
124
|
},
|
|
70
125
|
)
|
|
@@ -79,28 +134,19 @@ func ExportGenesis(ctx sdk.Context, k Keeper, swingStoreExportsHandler *SwingSto
|
|
|
79
134
|
gs := &types.GenesisState{
|
|
80
135
|
Params: k.GetParams(ctx),
|
|
81
136
|
State: k.GetState(ctx),
|
|
82
|
-
SwingStoreExportData:
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
exportDataIterator := k.GetSwingStore(ctx).Iterator(nil, nil)
|
|
86
|
-
defer exportDataIterator.Close()
|
|
87
|
-
for ; exportDataIterator.Valid(); exportDataIterator.Next() {
|
|
88
|
-
entry := types.SwingStoreExportDataEntry{
|
|
89
|
-
Key: string(exportDataIterator.Key()),
|
|
90
|
-
Value: string(exportDataIterator.Value()),
|
|
91
|
-
}
|
|
92
|
-
gs.SwingStoreExportData = append(gs.SwingStoreExportData, &entry)
|
|
137
|
+
SwingStoreExportData: nil,
|
|
93
138
|
}
|
|
94
139
|
|
|
95
140
|
snapshotHeight := uint64(ctx.BlockHeight())
|
|
96
141
|
|
|
142
|
+
eventHandler := swingStoreGenesisEventHandler{exportDir: swingStoreExportDir, snapshotHeight: snapshotHeight, swingStore: k.GetSwingStore(ctx), hasher: sha256.New()}
|
|
143
|
+
|
|
97
144
|
err := swingStoreExportsHandler.InitiateExport(
|
|
98
145
|
// The export will fail if the export of a historical height was requested
|
|
99
146
|
snapshotHeight,
|
|
100
|
-
|
|
101
|
-
// The export will fail if the swing-store does not contain all replay artifacts
|
|
147
|
+
eventHandler,
|
|
102
148
|
keeper.SwingStoreExportOptions{
|
|
103
|
-
ArtifactMode: keeper.
|
|
149
|
+
ArtifactMode: keeper.SwingStoreArtifactModeOperational,
|
|
104
150
|
ExportDataMode: keeper.SwingStoreExportDataModeSkip,
|
|
105
151
|
},
|
|
106
152
|
)
|
|
@@ -113,12 +159,16 @@ func ExportGenesis(ctx sdk.Context, k Keeper, swingStoreExportsHandler *SwingSto
|
|
|
113
159
|
panic(err)
|
|
114
160
|
}
|
|
115
161
|
|
|
162
|
+
gs.SwingStoreExportDataHash = fmt.Sprintf("sha256:%x", eventHandler.hasher.Sum(nil))
|
|
163
|
+
|
|
116
164
|
return gs
|
|
117
165
|
}
|
|
118
166
|
|
|
119
167
|
type swingStoreGenesisEventHandler struct {
|
|
120
168
|
exportDir string
|
|
121
169
|
snapshotHeight uint64
|
|
170
|
+
swingStore sdk.KVStore
|
|
171
|
+
hasher hash.Hash
|
|
122
172
|
}
|
|
123
173
|
|
|
124
174
|
func (eventHandler swingStoreGenesisEventHandler) OnExportStarted(height uint64, retrieveSwingStoreExport func() error) error {
|
|
@@ -132,7 +182,17 @@ func (eventHandler swingStoreGenesisEventHandler) OnExportRetrieved(provider kee
|
|
|
132
182
|
|
|
133
183
|
artifactsProvider := keeper.SwingStoreExportProvider{
|
|
134
184
|
GetExportDataReader: func() (agoric.KVEntryReader, error) {
|
|
135
|
-
|
|
185
|
+
exportDataIterator := eventHandler.swingStore.Iterator(nil, nil)
|
|
186
|
+
kvReader := agoric.NewKVIteratorReader(exportDataIterator)
|
|
187
|
+
eventHandler.hasher.Reset()
|
|
188
|
+
encoder := json.NewEncoder(eventHandler.hasher)
|
|
189
|
+
encoder.SetEscapeHTML(false)
|
|
190
|
+
|
|
191
|
+
return agoric.NewKVHookingReader(kvReader, func(entry agoric.KVEntry) error {
|
|
192
|
+
return encoder.Encode(entry)
|
|
193
|
+
}, func() error {
|
|
194
|
+
return nil
|
|
195
|
+
}), nil
|
|
136
196
|
},
|
|
137
197
|
ReadNextArtifact: provider.ReadNextArtifact,
|
|
138
198
|
}
|
package/x/swingset/handler.go
CHANGED
|
@@ -5,6 +5,7 @@ import (
|
|
|
5
5
|
|
|
6
6
|
"github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/keeper"
|
|
7
7
|
|
|
8
|
+
sdkioerrors "cosmossdk.io/errors"
|
|
8
9
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
9
10
|
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
|
|
10
11
|
)
|
|
@@ -29,7 +30,7 @@ func NewHandler(k Keeper) sdk.Handler {
|
|
|
29
30
|
|
|
30
31
|
default:
|
|
31
32
|
errMsg := fmt.Sprintf("Unrecognized swingset Msg type: %T", msg)
|
|
32
|
-
return nil,
|
|
33
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg)
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
36
|
}
|
|
@@ -125,7 +125,7 @@ func (snapshotter *ExtensionSnapshotter) InitiateSnapshot(height int64) error {
|
|
|
125
125
|
blockHeight := uint64(height)
|
|
126
126
|
|
|
127
127
|
return snapshotter.swingStoreExportsHandler.InitiateExport(blockHeight, snapshotter, SwingStoreExportOptions{
|
|
128
|
-
ArtifactMode:
|
|
128
|
+
ArtifactMode: SwingStoreArtifactModeOperational,
|
|
129
129
|
ExportDataMode: SwingStoreExportDataModeSkip,
|
|
130
130
|
})
|
|
131
131
|
}
|
|
@@ -304,6 +304,6 @@ func (snapshotter *ExtensionSnapshotter) RestoreExtension(blockHeight uint64, fo
|
|
|
304
304
|
|
|
305
305
|
return snapshotter.swingStoreExportsHandler.RestoreExport(
|
|
306
306
|
SwingStoreExportProvider{BlockHeight: blockHeight, GetExportDataReader: getExportDataReader, ReadNextArtifact: readNextArtifact},
|
|
307
|
-
SwingStoreRestoreOptions{ArtifactMode:
|
|
307
|
+
SwingStoreRestoreOptions{ArtifactMode: SwingStoreArtifactModeOperational, ExportDataMode: SwingStoreExportDataModeAll},
|
|
308
308
|
)
|
|
309
309
|
}
|
|
@@ -51,25 +51,6 @@ const (
|
|
|
51
51
|
swingStoreKeyPrefix = "swingStore."
|
|
52
52
|
)
|
|
53
53
|
|
|
54
|
-
// Contextual information about the message source of an action on an inbound queue.
|
|
55
|
-
// This context should be unique per inboundQueueRecord.
|
|
56
|
-
type actionContext struct {
|
|
57
|
-
// The block height in which the corresponding action was enqueued
|
|
58
|
-
BlockHeight int64 `json:"blockHeight"`
|
|
59
|
-
// The hash of the cosmos transaction that included the message
|
|
60
|
-
// If the action didn't result from a transaction message, a substitute value
|
|
61
|
-
// may be used. For example the VBANK_BALANCE_UPDATE actions use `x/vbank`.
|
|
62
|
-
TxHash string `json:"txHash"`
|
|
63
|
-
// The index of the message within the transaction. If the action didn't
|
|
64
|
-
// result from a cosmos transaction, a number should be chosen to make the
|
|
65
|
-
// actionContext unique. (for example a counter per block and source module).
|
|
66
|
-
MsgIdx int `json:"msgIdx"`
|
|
67
|
-
}
|
|
68
|
-
type inboundQueueRecord struct {
|
|
69
|
-
Action vm.Jsonable `json:"action"`
|
|
70
|
-
Context actionContext `json:"context"`
|
|
71
|
-
}
|
|
72
|
-
|
|
73
54
|
// Keeper maintains the link to data vstorage and exposes getter/setter methods for the various parts of the state machine
|
|
74
55
|
type Keeper struct {
|
|
75
56
|
storeKey storetypes.StoreKey
|
|
@@ -144,7 +125,14 @@ func (k Keeper) pushAction(ctx sdk.Context, inboundQueuePath string, action vm.A
|
|
|
144
125
|
if !txHashOk || !msgIdxOk {
|
|
145
126
|
stdlog.Printf("error while extracting context for action %q\n", action)
|
|
146
127
|
}
|
|
147
|
-
record :=
|
|
128
|
+
record := types.InboundQueueRecord{
|
|
129
|
+
Action: action,
|
|
130
|
+
Context: types.ActionContext{
|
|
131
|
+
BlockHeight: ctx.BlockHeight(),
|
|
132
|
+
TxHash: txHash,
|
|
133
|
+
MsgIdx: msgIdx,
|
|
134
|
+
},
|
|
135
|
+
}
|
|
148
136
|
bz, err := json.Marshal(record)
|
|
149
137
|
if err != nil {
|
|
150
138
|
return err
|
|
@@ -282,9 +270,9 @@ func (k Keeper) SetState(ctx sdk.Context, state types.State) {
|
|
|
282
270
|
|
|
283
271
|
// GetBeansPerUnit returns a map taken from the current SwingSet parameters from
|
|
284
272
|
// a unit (key) string to an unsigned integer amount of beans.
|
|
285
|
-
func (k Keeper) GetBeansPerUnit(ctx sdk.Context) map[string]
|
|
273
|
+
func (k Keeper) GetBeansPerUnit(ctx sdk.Context) map[string]sdkmath.Uint {
|
|
286
274
|
params := k.GetParams(ctx)
|
|
287
|
-
beansPerUnit := make(map[string]
|
|
275
|
+
beansPerUnit := make(map[string]sdkmath.Uint, len(params.BeansPerUnit))
|
|
288
276
|
for _, bpu := range params.BeansPerUnit {
|
|
289
277
|
beansPerUnit[bpu.Key] = bpu.Beans
|
|
290
278
|
}
|
|
@@ -297,7 +285,7 @@ func getBeansOwingPathForAddress(addr sdk.AccAddress) string {
|
|
|
297
285
|
|
|
298
286
|
// GetBeansOwing returns the number of beans that the given address owes to
|
|
299
287
|
// the FeeAccount but has not yet paid.
|
|
300
|
-
func (k Keeper) GetBeansOwing(ctx sdk.Context, addr sdk.AccAddress)
|
|
288
|
+
func (k Keeper) GetBeansOwing(ctx sdk.Context, addr sdk.AccAddress) sdkmath.Uint {
|
|
301
289
|
path := getBeansOwingPathForAddress(addr)
|
|
302
290
|
entry := k.vstorageKeeper.GetEntry(ctx, path)
|
|
303
291
|
if !entry.HasValue() {
|
|
@@ -308,7 +296,7 @@ func (k Keeper) GetBeansOwing(ctx sdk.Context, addr sdk.AccAddress) sdk.Uint {
|
|
|
308
296
|
|
|
309
297
|
// SetBeansOwing sets the number of beans that the given address owes to the
|
|
310
298
|
// feeCollector but has not yet paid.
|
|
311
|
-
func (k Keeper) SetBeansOwing(ctx sdk.Context, addr sdk.AccAddress, beans
|
|
299
|
+
func (k Keeper) SetBeansOwing(ctx sdk.Context, addr sdk.AccAddress, beans sdkmath.Uint) {
|
|
312
300
|
path := getBeansOwingPathForAddress(addr)
|
|
313
301
|
k.vstorageKeeper.SetStorage(ctx, agoric.NewKVEntry(path, beans.String()))
|
|
314
302
|
}
|
|
@@ -316,7 +304,7 @@ func (k Keeper) SetBeansOwing(ctx sdk.Context, addr sdk.AccAddress, beans sdk.Ui
|
|
|
316
304
|
// ChargeBeans charges the given address the given number of beans. It divides
|
|
317
305
|
// the beans into the number to debit immediately vs. the number to store in the
|
|
318
306
|
// beansOwing.
|
|
319
|
-
func (k Keeper) ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans
|
|
307
|
+
func (k Keeper) ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans sdkmath.Uint) error {
|
|
320
308
|
beansPerUnit := k.GetBeansPerUnit(ctx)
|
|
321
309
|
|
|
322
310
|
wasOwing := k.GetBeansOwing(ctx, addr)
|
|
@@ -21,10 +21,10 @@ func NewMsgServerImpl(keeper Keeper) types.MsgServer {
|
|
|
21
21
|
var _ types.MsgServer = msgServer{}
|
|
22
22
|
|
|
23
23
|
type deliverInboundAction struct {
|
|
24
|
-
vm.ActionHeader `actionType:"DELIVER_INBOUND"`
|
|
25
|
-
Peer
|
|
26
|
-
Messages
|
|
27
|
-
Ack
|
|
24
|
+
*vm.ActionHeader `actionType:"DELIVER_INBOUND"`
|
|
25
|
+
Peer string `json:"peer"`
|
|
26
|
+
Messages [][]interface{} `json:"messages"`
|
|
27
|
+
Ack uint64 `json:"ack"`
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
func (keeper msgServer) routeAction(ctx sdk.Context, msg vm.ControllerAdmissionMsg, action vm.Action) error {
|
|
@@ -48,7 +48,7 @@ func (keeper msgServer) DeliverInbound(goCtx context.Context, msg *types.MsgDeli
|
|
|
48
48
|
for i, message := range msg.Messages {
|
|
49
49
|
messages[i] = []interface{}{msg.Nums[i], message}
|
|
50
50
|
}
|
|
51
|
-
action :=
|
|
51
|
+
action := deliverInboundAction{
|
|
52
52
|
Peer: msg.Submitter.String(),
|
|
53
53
|
Messages: messages,
|
|
54
54
|
Ack: msg.Ack,
|
|
@@ -63,9 +63,9 @@ func (keeper msgServer) DeliverInbound(goCtx context.Context, msg *types.MsgDeli
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
type walletAction struct {
|
|
66
|
-
vm.ActionHeader `actionType:"WALLET_ACTION"`
|
|
67
|
-
Owner
|
|
68
|
-
Action
|
|
66
|
+
*vm.ActionHeader `actionType:"WALLET_ACTION"`
|
|
67
|
+
Owner string `json:"owner"`
|
|
68
|
+
Action string `json:"action"`
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
func (keeper msgServer) WalletAction(goCtx context.Context, msg *types.MsgWalletAction) (*types.MsgWalletActionResponse, error) {
|
|
@@ -76,7 +76,7 @@ func (keeper msgServer) WalletAction(goCtx context.Context, msg *types.MsgWallet
|
|
|
76
76
|
return nil, err
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
action :=
|
|
79
|
+
action := walletAction{
|
|
80
80
|
Owner: msg.Owner.String(),
|
|
81
81
|
Action: msg.Action,
|
|
82
82
|
}
|
|
@@ -91,9 +91,9 @@ func (keeper msgServer) WalletAction(goCtx context.Context, msg *types.MsgWallet
|
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
type walletSpendAction struct {
|
|
94
|
-
vm.ActionHeader `actionType:"WALLET_SPEND_ACTION"`
|
|
95
|
-
Owner
|
|
96
|
-
SpendAction
|
|
94
|
+
*vm.ActionHeader `actionType:"WALLET_SPEND_ACTION"`
|
|
95
|
+
Owner string `json:"owner"`
|
|
96
|
+
SpendAction string `json:"spendAction"`
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
func (keeper msgServer) WalletSpendAction(goCtx context.Context, msg *types.MsgWalletSpendAction) (*types.MsgWalletSpendActionResponse, error) {
|
|
@@ -104,7 +104,7 @@ func (keeper msgServer) WalletSpendAction(goCtx context.Context, msg *types.MsgW
|
|
|
104
104
|
return nil, err
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
action :=
|
|
107
|
+
action := walletSpendAction{
|
|
108
108
|
Owner: msg.Owner.String(),
|
|
109
109
|
SpendAction: msg.SpendAction,
|
|
110
110
|
}
|
|
@@ -117,7 +117,7 @@ func (keeper msgServer) WalletSpendAction(goCtx context.Context, msg *types.MsgW
|
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
type provisionAction struct {
|
|
120
|
-
vm.ActionHeader `actionType:"PLEASE_PROVISION"`
|
|
120
|
+
*vm.ActionHeader `actionType:"PLEASE_PROVISION"`
|
|
121
121
|
*types.MsgProvision
|
|
122
122
|
AutoProvision bool `json:"autoProvision"`
|
|
123
123
|
}
|
|
@@ -141,7 +141,7 @@ func (keeper msgServer) provisionIfNeeded(ctx sdk.Context, owner sdk.AccAddress)
|
|
|
141
141
|
PowerFlags: []string{types.PowerFlagSmartWallet},
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
action :=
|
|
144
|
+
action := provisionAction{
|
|
145
145
|
MsgProvision: msg,
|
|
146
146
|
AutoProvision: true,
|
|
147
147
|
}
|
|
@@ -163,7 +163,7 @@ func (keeper msgServer) Provision(goCtx context.Context, msg *types.MsgProvision
|
|
|
163
163
|
return nil, err
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
action :=
|
|
166
|
+
action := provisionAction{
|
|
167
167
|
MsgProvision: msg,
|
|
168
168
|
}
|
|
169
169
|
|
|
@@ -184,7 +184,7 @@ func (keeper msgServer) Provision(goCtx context.Context, msg *types.MsgProvision
|
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
type installBundleAction struct {
|
|
187
|
-
vm.ActionHeader `actionType:"INSTALL_BUNDLE"`
|
|
187
|
+
*vm.ActionHeader `actionType:"INSTALL_BUNDLE"`
|
|
188
188
|
*types.MsgInstallBundle
|
|
189
189
|
}
|
|
190
190
|
|
|
@@ -195,7 +195,7 @@ func (keeper msgServer) InstallBundle(goCtx context.Context, msg *types.MsgInsta
|
|
|
195
195
|
if err != nil {
|
|
196
196
|
return nil, err
|
|
197
197
|
}
|
|
198
|
-
action :=
|
|
198
|
+
action := installBundleAction{
|
|
199
199
|
MsgInstallBundle: msg,
|
|
200
200
|
}
|
|
201
201
|
|
|
@@ -11,13 +11,13 @@ import (
|
|
|
11
11
|
)
|
|
12
12
|
|
|
13
13
|
type coreEvalAction struct {
|
|
14
|
-
vm.ActionHeader `actionType:"CORE_EVAL"`
|
|
15
|
-
Evals
|
|
14
|
+
*vm.ActionHeader `actionType:"CORE_EVAL"`
|
|
15
|
+
Evals []types.CoreEval `json:"evals"`
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
// CoreEvalProposal tells SwingSet to evaluate the given JS code.
|
|
19
19
|
func (k Keeper) CoreEvalProposal(ctx sdk.Context, p *types.CoreEvalProposal) error {
|
|
20
|
-
action :=
|
|
20
|
+
action := coreEvalAction{
|
|
21
21
|
Evals: p.Evals,
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -6,6 +6,7 @@ import (
|
|
|
6
6
|
|
|
7
7
|
abci "github.com/tendermint/tendermint/abci/types"
|
|
8
8
|
|
|
9
|
+
sdkioerrors "cosmossdk.io/errors"
|
|
9
10
|
"github.com/cosmos/cosmos-sdk/codec"
|
|
10
11
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
11
12
|
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
|
|
@@ -31,12 +32,12 @@ func NewQuerier(keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier
|
|
|
31
32
|
switch queryType {
|
|
32
33
|
case QueryEgress:
|
|
33
34
|
if len(path) < 2 || path[1] == "" {
|
|
34
|
-
return nil,
|
|
35
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrInvalidRequest, "missing egress address")
|
|
35
36
|
}
|
|
36
37
|
return queryEgress(ctx, path[1], req, keeper, legacyQuerierCdc)
|
|
37
38
|
case QueryMailbox:
|
|
38
39
|
if len(path) < 2 || path[1] == "" {
|
|
39
|
-
return nil,
|
|
40
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrInvalidRequest, "missing mailbox peer")
|
|
40
41
|
}
|
|
41
42
|
return queryMailbox(ctx, path[1], req, keeper, legacyQuerierCdc)
|
|
42
43
|
case LegacyQueryStorage:
|
|
@@ -44,7 +45,7 @@ func NewQuerier(keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier
|
|
|
44
45
|
case LegacyQueryKeys:
|
|
45
46
|
return legacyQueryKeys(ctx, strings.Join(path[1:], "/"), req, keeper, legacyQuerierCdc)
|
|
46
47
|
default:
|
|
47
|
-
return nil,
|
|
48
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrUnknownRequest, "unknown swingset query path")
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
}
|
|
@@ -53,17 +54,17 @@ func NewQuerier(keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier
|
|
|
53
54
|
func queryEgress(ctx sdk.Context, bech32 string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
|
|
54
55
|
acc, err := sdk.AccAddressFromBech32(bech32)
|
|
55
56
|
if err != nil {
|
|
56
|
-
return nil,
|
|
57
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrInvalidRequest, err.Error())
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
egress := keeper.GetEgress(ctx, acc)
|
|
60
61
|
if egress.Peer.Empty() {
|
|
61
|
-
return []byte{},
|
|
62
|
+
return []byte{}, sdkioerrors.Wrap(sdkerrors.ErrUnknownRequest, fmt.Sprintf("egress %s not found", bech32))
|
|
62
63
|
}
|
|
63
64
|
|
|
64
65
|
bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, egress)
|
|
65
66
|
if err != nil {
|
|
66
|
-
return nil,
|
|
67
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
return bz, nil
|
|
@@ -74,12 +75,12 @@ func queryMailbox(ctx sdk.Context, peer string, req abci.RequestQuery, keeper Ke
|
|
|
74
75
|
value := keeper.GetMailbox(ctx, peer)
|
|
75
76
|
|
|
76
77
|
if value == "" {
|
|
77
|
-
return []byte{},
|
|
78
|
+
return []byte{}, sdkioerrors.Wrap(sdkerrors.ErrUnknownRequest, "could not get peer mailbox")
|
|
78
79
|
}
|
|
79
80
|
|
|
80
81
|
bz, err2 := codec.MarshalJSONIndent(legacyQuerierCdc, vstoragetypes.Data{Value: value})
|
|
81
82
|
if err2 != nil {
|
|
82
|
-
return nil,
|
|
83
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrJSONMarshal, err2.Error())
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
return bz, nil
|
|
@@ -89,12 +90,12 @@ func queryMailbox(ctx sdk.Context, peer string, req abci.RequestQuery, keeper Ke
|
|
|
89
90
|
func legacyQueryStorage(ctx sdk.Context, path string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) (res []byte, err error) {
|
|
90
91
|
entry := keeper.vstorageKeeper.GetEntry(ctx, path)
|
|
91
92
|
if !entry.HasValue() {
|
|
92
|
-
return []byte{},
|
|
93
|
+
return []byte{}, sdkioerrors.Wrapf(sdkerrors.ErrUnknownRequest, "could not get swingset %+v", path)
|
|
93
94
|
}
|
|
94
95
|
|
|
95
96
|
bz, err2 := codec.MarshalJSONIndent(legacyQuerierCdc, vstoragetypes.Data{Value: entry.StringValue()})
|
|
96
97
|
if err2 != nil {
|
|
97
|
-
return nil,
|
|
98
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrJSONMarshal, err2.Error())
|
|
98
99
|
}
|
|
99
100
|
|
|
100
101
|
return bz, nil
|
|
@@ -111,7 +112,7 @@ func legacyQueryKeys(ctx sdk.Context, path string, req abci.RequestQuery, keeper
|
|
|
111
112
|
|
|
112
113
|
bz, err2 := codec.MarshalJSONIndent(legacyQuerierCdc, vstoragetypes.Children{Children: chlist})
|
|
113
114
|
if err2 != nil {
|
|
114
|
-
return nil,
|
|
115
|
+
return nil, sdkioerrors.Wrap(sdkerrors.ErrJSONMarshal, err2.Error())
|
|
115
116
|
}
|
|
116
117
|
|
|
117
118
|
return bz, nil
|
|
@@ -9,10 +9,10 @@ import (
|
|
|
9
9
|
"path/filepath"
|
|
10
10
|
"regexp"
|
|
11
11
|
|
|
12
|
+
sdkioerrors "cosmossdk.io/errors"
|
|
12
13
|
agoric "github.com/Agoric/agoric-sdk/golang/cosmos/types"
|
|
13
14
|
"github.com/Agoric/agoric-sdk/golang/cosmos/vm"
|
|
14
15
|
"github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/types"
|
|
15
|
-
sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
|
|
16
16
|
"github.com/tendermint/tendermint/libs/log"
|
|
17
17
|
)
|
|
18
18
|
|
|
@@ -588,7 +588,7 @@ func (exportsHandler SwingStoreExportsHandler) InitiateExport(blockHeight uint64
|
|
|
588
588
|
} else if discardErr != nil {
|
|
589
589
|
// Safe to wrap error and use detailed error info since this error
|
|
590
590
|
// will not go back into swingset layers
|
|
591
|
-
err =
|
|
591
|
+
err = sdkioerrors.Wrapf(err, "failed to discard swing-store export after failing to process export: %+v", discardErr)
|
|
592
592
|
}
|
|
593
593
|
}()
|
|
594
594
|
|
|
@@ -787,7 +787,18 @@ func (exportsHandler SwingStoreExportsHandler) RestoreExport(provider SwingStore
|
|
|
787
787
|
// a jsonl-like file, before saving the export manifest linking these together.
|
|
788
788
|
// The export manifest filename and overall export format is common with the JS
|
|
789
789
|
// swing-store import/export logic.
|
|
790
|
-
func WriteSwingStoreExportToDirectory(provider SwingStoreExportProvider, exportDir string) error {
|
|
790
|
+
func WriteSwingStoreExportToDirectory(provider SwingStoreExportProvider, exportDir string) (err error) {
|
|
791
|
+
handleDeferError := func(fn func() error) {
|
|
792
|
+
deferError := fn()
|
|
793
|
+
if err == nil {
|
|
794
|
+
err = deferError
|
|
795
|
+
} else if deferError != nil {
|
|
796
|
+
// Safe to wrap error and use detailed error info since this error
|
|
797
|
+
// will not go back into swingset layers
|
|
798
|
+
err = sdkioerrors.Wrapf(err, "deferred error %+v", deferError)
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
|
|
791
802
|
manifest := exportManifest{
|
|
792
803
|
BlockHeight: provider.BlockHeight,
|
|
793
804
|
}
|
|
@@ -798,14 +809,14 @@ func WriteSwingStoreExportToDirectory(provider SwingStoreExportProvider, exportD
|
|
|
798
809
|
}
|
|
799
810
|
|
|
800
811
|
if exportDataReader != nil {
|
|
801
|
-
defer exportDataReader.Close
|
|
812
|
+
defer handleDeferError(exportDataReader.Close)
|
|
802
813
|
|
|
803
814
|
manifest.Data = exportDataFilename
|
|
804
815
|
exportDataFile, err := os.OpenFile(filepath.Join(exportDir, exportDataFilename), os.O_CREATE|os.O_WRONLY, exportedFilesMode)
|
|
805
816
|
if err != nil {
|
|
806
817
|
return err
|
|
807
818
|
}
|
|
808
|
-
defer exportDataFile.Close
|
|
819
|
+
defer handleDeferError(exportDataFile.Close)
|
|
809
820
|
|
|
810
821
|
err = agoric.EncodeKVEntryReaderToJsonl(exportDataReader, exportDataFile)
|
|
811
822
|
if err != nil {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
package keeper
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"testing"
|
|
5
|
+
|
|
6
|
+
"github.com/Agoric/agoric-sdk/golang/cosmos/x/vstorage"
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
// GetVstorageKeeper returns the vstorage keeper from the swingset keeper
|
|
10
|
+
// for testing purposes.
|
|
11
|
+
func GetVstorageKeeper(t *testing.T, k Keeper) vstorage.Keeper {
|
|
12
|
+
if t == nil {
|
|
13
|
+
panic("this function is reserved for testing")
|
|
14
|
+
}
|
|
15
|
+
return k.vstorageKeeper
|
|
16
|
+
}
|
package/x/swingset/module.go
CHANGED
|
@@ -5,7 +5,6 @@ import (
|
|
|
5
5
|
"encoding/json"
|
|
6
6
|
"fmt"
|
|
7
7
|
|
|
8
|
-
"github.com/gorilla/mux"
|
|
9
8
|
"github.com/grpc-ecosystem/grpc-gateway/runtime"
|
|
10
9
|
"github.com/spf13/cobra"
|
|
11
10
|
|
|
@@ -60,10 +59,6 @@ func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncod
|
|
|
60
59
|
return ValidateGenesis(&data)
|
|
61
60
|
}
|
|
62
61
|
|
|
63
|
-
// Register rest routes
|
|
64
|
-
func (AppModuleBasic) RegisterRESTRoutes(ctx client.Context, rtr *mux.Router) {
|
|
65
|
-
}
|
|
66
|
-
|
|
67
62
|
func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) {
|
|
68
63
|
_ = types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx))
|
|
69
64
|
}
|
|
@@ -104,6 +99,11 @@ func (AppModule) Name() string {
|
|
|
104
99
|
return ModuleName
|
|
105
100
|
}
|
|
106
101
|
|
|
102
|
+
// For testing purposes
|
|
103
|
+
func (am *AppModule) SetSwingStoreExportDir(dir string) {
|
|
104
|
+
am.swingStoreExportDir = dir
|
|
105
|
+
}
|
|
106
|
+
|
|
107
107
|
func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {}
|
|
108
108
|
|
|
109
109
|
func (am AppModule) Route() sdk.Route {
|
|
@@ -154,9 +154,9 @@ func (am AppModule) EndBlock(ctx sdk.Context, req abci.RequestEndBlock) []abci.V
|
|
|
154
154
|
return []abci.ValidatorUpdate{}
|
|
155
155
|
}
|
|
156
156
|
|
|
157
|
-
func (am AppModule) checkSwingStoreExportSetup() {
|
|
157
|
+
func (am *AppModule) checkSwingStoreExportSetup() {
|
|
158
158
|
if am.swingStoreExportDir == "" {
|
|
159
|
-
|
|
159
|
+
am.swingStoreExportDir = "/tmp/swingset_export"
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
package swingset
|
|
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
|
govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
|
|
@@ -17,7 +18,7 @@ func NewSwingSetProposalHandler(k keeper.Keeper) govv1beta1.Handler {
|
|
|
17
18
|
return k.CoreEvalProposal(ctx, c)
|
|
18
19
|
|
|
19
20
|
default:
|
|
20
|
-
return
|
|
21
|
+
return sdkioerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized swingset proposal content type: %T", c)
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
package testing
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"testing"
|
|
5
|
+
|
|
6
|
+
"github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/keeper"
|
|
7
|
+
vstoragetesting "github.com/Agoric/agoric-sdk/golang/cosmos/x/vstorage/testing"
|
|
8
|
+
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
// GetActionQueueRecords returns the records in the action queue.
|
|
12
|
+
// This is a testing utility function.
|
|
13
|
+
func GetActionQueueRecords(t *testing.T, ctx sdk.Context, swingsetKeeper keeper.Keeper) ([]string, error) {
|
|
14
|
+
vstorageKeeper := keeper.GetVstorageKeeper(t, swingsetKeeper)
|
|
15
|
+
actionQueueName := keeper.StoragePathActionQueue
|
|
16
|
+
return vstoragetesting.GetQueueItems(ctx, vstorageKeeper, actionQueueName)
|
|
17
|
+
}
|
|
@@ -55,7 +55,7 @@ var (
|
|
|
55
55
|
DefaultBeansPerStorageByte = DefaultBeansPerFeeUnit.Quo(sdk.NewUint(500)) // $0.002
|
|
56
56
|
DefaultBeansPerSmartWalletProvision = DefaultBeansPerFeeUnit // $1
|
|
57
57
|
|
|
58
|
-
DefaultBootstrapVatConfig = "@agoric/
|
|
58
|
+
DefaultBootstrapVatConfig = "@agoric/vm-config/decentral-core-config.json"
|
|
59
59
|
|
|
60
60
|
DefaultPowerFlagFees = []PowerFlagFee{
|
|
61
61
|
NewPowerFlagFee(PowerFlagSmartWallet, sdk.NewCoins(sdk.NewInt64Coin("ubld", 10_000_000))),
|