@agoric/cosmos 0.35.0-upgrade-14-dev-0169c7e.0 → 0.35.0-upgrade-16-dev-07b0130.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 (169) hide show
  1. package/CHANGELOG.md +121 -77
  2. package/MAINTAINERS.md +3 -0
  3. package/Makefile +49 -26
  4. package/ante/ante.go +11 -11
  5. package/ante/inbound_test.go +3 -2
  6. package/ante/vm_admission.go +2 -1
  7. package/app/app.go +260 -175
  8. package/app/export.go +13 -6
  9. package/app/upgrade.go +76 -0
  10. package/cmd/agd/agvm.go +42 -0
  11. package/cmd/agd/main.go +132 -11
  12. package/cmd/libdaemon/main.go +67 -53
  13. package/cmd/libdaemon/main_test.go +2 -1
  14. package/daemon/cmd/genaccounts.go +13 -9
  15. package/daemon/cmd/root.go +186 -73
  16. package/daemon/cmd/root_test.go +190 -2
  17. package/daemon/cmd/testnet.go +17 -6
  18. package/daemon/main.go +6 -3
  19. package/e2e_test/Makefile +29 -0
  20. package/e2e_test/README.md +100 -0
  21. package/e2e_test/go.mod +217 -0
  22. package/e2e_test/go.sum +1323 -0
  23. package/e2e_test/ibc_conformance_test.go +56 -0
  24. package/e2e_test/pfm_test.go +613 -0
  25. package/e2e_test/util.go +271 -0
  26. package/git-revision.txt +1 -1
  27. package/go.mod +110 -68
  28. package/go.sum +601 -248
  29. package/package.json +9 -5
  30. package/proto/agoric/swingset/genesis.proto +4 -0
  31. package/proto/agoric/swingset/swingset.proto +1 -1
  32. package/proto/agoric/vlocalchain/.clang-format +7 -0
  33. package/proto/agoric/vlocalchain/vlocalchain.proto +31 -0
  34. package/proto/agoric/vstorage/query.proto +53 -1
  35. package/proto/agoric/vtransfer/genesis.proto +18 -0
  36. package/scripts/protocgen.sh +16 -6
  37. package/third_party/proto/buf.yaml +1 -0
  38. package/third_party/proto/cosmos/base/query/v1beta1/pagination.proto +4 -1
  39. package/third_party/proto/cosmos/base/v1beta1/coin.proto +7 -4
  40. package/third_party/proto/cosmos/upgrade/v1beta1/upgrade.proto +16 -6
  41. package/third_party/proto/cosmos_proto/cosmos.proto +97 -0
  42. package/third_party/proto/google/api/annotations.proto +1 -1
  43. package/third_party/proto/google/api/http.proto +181 -120
  44. package/third_party/proto/google/api/httpbody.proto +9 -6
  45. package/third_party/proto/google/protobuf/any.proto +1 -7
  46. package/third_party/proto/ibc/core/channel/v1/channel.proto +15 -1
  47. package/third_party/proto/ibc/core/client/v1/client.proto +9 -6
  48. package/types/kv_entry_helpers.go +42 -0
  49. package/upgradegaia.sh +21 -12
  50. package/vm/action.go +28 -24
  51. package/vm/action_test.go +36 -16
  52. package/vm/client.go +113 -0
  53. package/vm/client_test.go +182 -0
  54. package/vm/controller.go +18 -42
  55. package/vm/core_proposals.go +22 -2
  56. package/vm/jsonrpcconn/jsonrpcconn.go +160 -0
  57. package/vm/jsonrpcconn/jsonrpcconn_test.go +126 -0
  58. package/vm/proto_json.go +38 -0
  59. package/vm/proto_json_test.go +103 -0
  60. package/vm/server.go +124 -0
  61. package/x/swingset/abci.go +10 -10
  62. package/x/swingset/alias.go +2 -0
  63. package/x/swingset/client/cli/query.go +2 -2
  64. package/x/swingset/client/cli/tx.go +52 -33
  65. package/x/swingset/client/proposal_handler.go +2 -17
  66. package/x/swingset/genesis.go +84 -24
  67. package/x/swingset/handler.go +2 -1
  68. package/x/swingset/keeper/extension_snapshotter.go +2 -2
  69. package/x/swingset/keeper/keeper.go +21 -36
  70. package/x/swingset/keeper/keeper_test.go +1 -1
  71. package/x/swingset/keeper/msg_server.go +20 -22
  72. package/x/swingset/keeper/proposal.go +13 -3
  73. package/x/swingset/keeper/querier.go +23 -14
  74. package/x/swingset/keeper/swing_store_exports_handler.go +21 -6
  75. package/x/swingset/keeper/test_utils.go +16 -0
  76. package/x/swingset/module.go +7 -7
  77. package/x/swingset/proposal_handler.go +5 -4
  78. package/x/swingset/swingset.go +4 -2
  79. package/x/swingset/testing/queue.go +17 -0
  80. package/x/swingset/types/codec.go +2 -2
  81. package/x/swingset/types/default-params.go +1 -1
  82. package/x/swingset/types/expected_keepers.go +3 -2
  83. package/x/swingset/types/genesis.pb.go +78 -25
  84. package/x/swingset/types/msgs.go +44 -24
  85. package/x/swingset/types/msgs.pb.go +16 -16
  86. package/x/swingset/types/params.go +2 -1
  87. package/x/swingset/types/proposal.go +10 -9
  88. package/x/swingset/types/swingset.pb.go +1 -1
  89. package/x/swingset/types/types.go +30 -28
  90. package/x/vbank/genesis.go +0 -2
  91. package/x/vbank/handler.go +2 -1
  92. package/x/vbank/keeper/keeper.go +3 -2
  93. package/x/vbank/keeper/querier.go +9 -4
  94. package/x/vbank/keeper/rewards.go +1 -1
  95. package/x/vbank/module.go +0 -5
  96. package/x/vbank/types/msgs.go +0 -12
  97. package/x/vbank/vbank.go +20 -19
  98. package/x/vbank/vbank_test.go +10 -10
  99. package/x/vibc/alias.go +3 -0
  100. package/x/vibc/handler.go +16 -9
  101. package/x/vibc/keeper/keeper.go +112 -74
  102. package/x/vibc/keeper/triggers.go +101 -0
  103. package/x/vibc/module.go +5 -8
  104. package/x/vibc/types/expected_keepers.go +26 -5
  105. package/x/vibc/types/ibc_module.go +336 -0
  106. package/x/vibc/types/msgs.go +1 -1
  107. package/x/vibc/types/msgs.pb.go +1 -1
  108. package/x/vibc/types/receiver.go +170 -0
  109. package/x/vlocalchain/alias.go +19 -0
  110. package/x/vlocalchain/handler.go +21 -0
  111. package/x/vlocalchain/keeper/keeper.go +279 -0
  112. package/x/vlocalchain/keeper/keeper_test.go +97 -0
  113. package/x/vlocalchain/types/codec.go +34 -0
  114. package/x/vlocalchain/types/key.go +27 -0
  115. package/x/vlocalchain/types/msgs.go +16 -0
  116. package/x/vlocalchain/types/vlocalchain.pb.go +1072 -0
  117. package/x/vlocalchain/vlocalchain.go +114 -0
  118. package/x/vlocalchain/vlocalchain_test.go +434 -0
  119. package/x/vstorage/README.md +138 -0
  120. package/x/vstorage/capdata/capdata.go +298 -0
  121. package/x/vstorage/capdata/capdata_test.go +352 -0
  122. package/x/vstorage/client/cli/query.go +51 -4
  123. package/x/vstorage/handler.go +2 -1
  124. package/x/vstorage/keeper/grpc_query.go +220 -0
  125. package/x/vstorage/keeper/keeper.go +16 -22
  126. package/x/vstorage/keeper/keeper_grpc_test.go +300 -0
  127. package/x/vstorage/keeper/keeper_test.go +1 -1
  128. package/x/vstorage/keeper/querier.go +11 -6
  129. package/x/vstorage/keeper/querier_test.go +4 -3
  130. package/x/vstorage/module.go +0 -5
  131. package/x/vstorage/testing/queue.go +27 -0
  132. package/x/vstorage/types/query.pb.go +646 -36
  133. package/x/vstorage/types/query.pb.gw.go +119 -0
  134. package/x/vstorage/vstorage.go +16 -15
  135. package/x/vstorage/vstorage_test.go +5 -5
  136. package/x/vtransfer/alias.go +13 -0
  137. package/x/vtransfer/genesis.go +39 -0
  138. package/x/vtransfer/genesis_test.go +12 -0
  139. package/x/vtransfer/handler.go +20 -0
  140. package/x/vtransfer/ibc_middleware.go +186 -0
  141. package/x/vtransfer/ibc_middleware_test.go +448 -0
  142. package/x/vtransfer/keeper/keeper.go +281 -0
  143. package/x/vtransfer/module.go +124 -0
  144. package/x/vtransfer/types/expected_keepers.go +38 -0
  145. package/x/vtransfer/types/genesis.pb.go +327 -0
  146. package/x/vtransfer/types/key.go +9 -0
  147. package/x/vtransfer/types/msgs.go +9 -0
  148. package/ante/fee.go +0 -96
  149. package/proto/agoric/lien/genesis.proto +0 -25
  150. package/proto/agoric/lien/lien.proto +0 -25
  151. package/x/lien/alias.go +0 -17
  152. package/x/lien/genesis.go +0 -58
  153. package/x/lien/genesis_test.go +0 -101
  154. package/x/lien/keeper/account.go +0 -290
  155. package/x/lien/keeper/keeper.go +0 -254
  156. package/x/lien/keeper/keeper_test.go +0 -623
  157. package/x/lien/lien.go +0 -203
  158. package/x/lien/lien_test.go +0 -529
  159. package/x/lien/module.go +0 -115
  160. package/x/lien/spec/01_concepts.md +0 -146
  161. package/x/lien/spec/02_messages.md +0 -96
  162. package/x/lien/types/accountkeeper.go +0 -81
  163. package/x/lien/types/accountstate.go +0 -27
  164. package/x/lien/types/expected_keepers.go +0 -18
  165. package/x/lien/types/genesis.pb.go +0 -567
  166. package/x/lien/types/key.go +0 -25
  167. package/x/lien/types/lien.pb.go +0 -403
  168. package/x/vibc/ibc.go +0 -393
  169. /package/{src/index.cjs → index.cjs} +0 -0
@@ -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 string `json:"peer"`
26
- Messages [][]interface{} `json:"messages"`
27
- Ack uint64 `json:"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 {
@@ -43,14 +43,12 @@ func (keeper msgServer) routeAction(ctx sdk.Context, msg vm.ControllerAdmissionM
43
43
  func (keeper msgServer) DeliverInbound(goCtx context.Context, msg *types.MsgDeliverInbound) (*types.MsgDeliverInboundResponse, error) {
44
44
  ctx := sdk.UnwrapSDKContext(goCtx)
45
45
 
46
+ // msg.Nums and msg.Messages must be zipped into an array of [num, message] pairs.
46
47
  messages := make([][]interface{}, len(msg.Messages))
47
48
  for i, message := range msg.Messages {
48
- messages[i] = make([]interface{}, 2)
49
- messages[i][0] = msg.Nums[i]
50
- messages[i][1] = message
49
+ messages[i] = []interface{}{msg.Nums[i], message}
51
50
  }
52
-
53
- action := &deliverInboundAction{
51
+ action := deliverInboundAction{
54
52
  Peer: msg.Submitter.String(),
55
53
  Messages: messages,
56
54
  Ack: msg.Ack,
@@ -65,9 +63,9 @@ func (keeper msgServer) DeliverInbound(goCtx context.Context, msg *types.MsgDeli
65
63
  }
66
64
 
67
65
  type walletAction struct {
68
- vm.ActionHeader `actionType:"WALLET_ACTION"`
69
- Owner string `json:"owner"`
70
- Action string `json:"action"`
66
+ *vm.ActionHeader `actionType:"WALLET_ACTION"`
67
+ Owner string `json:"owner"`
68
+ Action string `json:"action"`
71
69
  }
72
70
 
73
71
  func (keeper msgServer) WalletAction(goCtx context.Context, msg *types.MsgWalletAction) (*types.MsgWalletActionResponse, error) {
@@ -78,7 +76,7 @@ func (keeper msgServer) WalletAction(goCtx context.Context, msg *types.MsgWallet
78
76
  return nil, err
79
77
  }
80
78
 
81
- action := &walletAction{
79
+ action := walletAction{
82
80
  Owner: msg.Owner.String(),
83
81
  Action: msg.Action,
84
82
  }
@@ -93,9 +91,9 @@ func (keeper msgServer) WalletAction(goCtx context.Context, msg *types.MsgWallet
93
91
  }
94
92
 
95
93
  type walletSpendAction struct {
96
- vm.ActionHeader `actionType:"WALLET_SPEND_ACTION"`
97
- Owner string `json:"owner"`
98
- SpendAction string `json:"spendAction"`
94
+ *vm.ActionHeader `actionType:"WALLET_SPEND_ACTION"`
95
+ Owner string `json:"owner"`
96
+ SpendAction string `json:"spendAction"`
99
97
  }
100
98
 
101
99
  func (keeper msgServer) WalletSpendAction(goCtx context.Context, msg *types.MsgWalletSpendAction) (*types.MsgWalletSpendActionResponse, error) {
@@ -106,7 +104,7 @@ func (keeper msgServer) WalletSpendAction(goCtx context.Context, msg *types.MsgW
106
104
  return nil, err
107
105
  }
108
106
 
109
- action := &walletSpendAction{
107
+ action := walletSpendAction{
110
108
  Owner: msg.Owner.String(),
111
109
  SpendAction: msg.SpendAction,
112
110
  }
@@ -119,7 +117,7 @@ func (keeper msgServer) WalletSpendAction(goCtx context.Context, msg *types.MsgW
119
117
  }
120
118
 
121
119
  type provisionAction struct {
122
- vm.ActionHeader `actionType:"PLEASE_PROVISION"`
120
+ *vm.ActionHeader `actionType:"PLEASE_PROVISION"`
123
121
  *types.MsgProvision
124
122
  AutoProvision bool `json:"autoProvision"`
125
123
  }
@@ -143,7 +141,7 @@ func (keeper msgServer) provisionIfNeeded(ctx sdk.Context, owner sdk.AccAddress)
143
141
  PowerFlags: []string{types.PowerFlagSmartWallet},
144
142
  }
145
143
 
146
- action := &provisionAction{
144
+ action := provisionAction{
147
145
  MsgProvision: msg,
148
146
  AutoProvision: true,
149
147
  }
@@ -165,7 +163,7 @@ func (keeper msgServer) Provision(goCtx context.Context, msg *types.MsgProvision
165
163
  return nil, err
166
164
  }
167
165
 
168
- action := &provisionAction{
166
+ action := provisionAction{
169
167
  MsgProvision: msg,
170
168
  }
171
169
 
@@ -186,7 +184,7 @@ func (keeper msgServer) Provision(goCtx context.Context, msg *types.MsgProvision
186
184
  }
187
185
 
188
186
  type installBundleAction struct {
189
- vm.ActionHeader `actionType:"INSTALL_BUNDLE"`
187
+ *vm.ActionHeader `actionType:"INSTALL_BUNDLE"`
190
188
  *types.MsgInstallBundle
191
189
  }
192
190
 
@@ -197,7 +195,7 @@ func (keeper msgServer) InstallBundle(goCtx context.Context, msg *types.MsgInsta
197
195
  if err != nil {
198
196
  return nil, err
199
197
  }
200
- action := &installBundleAction{
198
+ action := installBundleAction{
201
199
  MsgInstallBundle: msg,
202
200
  }
203
201
 
@@ -1,22 +1,32 @@
1
1
  package keeper
2
2
 
3
3
  import (
4
+ "context"
5
+
4
6
  sdk "github.com/cosmos/cosmos-sdk/types"
5
7
 
6
8
  "github.com/Agoric/agoric-sdk/golang/cosmos/vm"
7
9
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/types"
10
+ "github.com/cosmos/cosmos-sdk/baseapp"
8
11
  )
9
12
 
10
13
  type coreEvalAction struct {
11
- vm.ActionHeader `actionType:"CORE_EVAL"`
12
- Evals []types.CoreEval `json:"evals"`
14
+ *vm.ActionHeader `actionType:"CORE_EVAL"`
15
+ Evals []types.CoreEval `json:"evals"`
13
16
  }
14
17
 
15
18
  // CoreEvalProposal tells SwingSet to evaluate the given JS code.
16
19
  func (k Keeper) CoreEvalProposal(ctx sdk.Context, p *types.CoreEvalProposal) error {
17
- action := &coreEvalAction{
20
+ action := coreEvalAction{
18
21
  Evals: p.Evals,
19
22
  }
20
23
 
24
+ // While the CoreEvalProposal was originally created by a transaction, by the time it
25
+ // passes by governance, we no longer have its provenance information, so we need to
26
+ // synthesize unique context information.
27
+ // We use a fixed placeholder value for the txHash context. We use `0` for the message
28
+ // index which assumes there is a single proposal per block.
29
+ ctx = ctx.WithContext(context.WithValue(ctx.Context(), baseapp.TxHashContextKey, "x/gov"))
30
+ ctx = ctx.WithContext(context.WithValue(ctx.Context(), baseapp.TxMsgIdxContextKey, 0))
21
31
  return k.PushHighPriorityAction(ctx, action)
22
32
  }
@@ -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"
@@ -24,17 +25,27 @@ const (
24
25
  // NewQuerier is the module level router for state queries
25
26
  func NewQuerier(keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier {
26
27
  return func(ctx sdk.Context, path []string, req abci.RequestQuery) (res []byte, err error) {
27
- switch path[0] {
28
+ var queryType string
29
+ if len(path) > 0 {
30
+ queryType = path[0]
31
+ }
32
+ switch queryType {
28
33
  case QueryEgress:
34
+ if len(path) < 2 || path[1] == "" {
35
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrInvalidRequest, "missing egress address")
36
+ }
29
37
  return queryEgress(ctx, path[1], req, keeper, legacyQuerierCdc)
30
38
  case QueryMailbox:
31
- return queryMailbox(ctx, path[1:], req, keeper, legacyQuerierCdc)
39
+ if len(path) < 2 || path[1] == "" {
40
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrInvalidRequest, "missing mailbox peer")
41
+ }
42
+ return queryMailbox(ctx, path[1], req, keeper, legacyQuerierCdc)
32
43
  case LegacyQueryStorage:
33
44
  return legacyQueryStorage(ctx, strings.Join(path[1:], "/"), req, keeper, legacyQuerierCdc)
34
45
  case LegacyQueryKeys:
35
46
  return legacyQueryKeys(ctx, strings.Join(path[1:], "/"), req, keeper, legacyQuerierCdc)
36
47
  default:
37
- return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, "unknown swingset query endpoint")
48
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrUnknownRequest, "unknown swingset query path")
38
49
  }
39
50
  }
40
51
  }
@@ -43,35 +54,33 @@ func NewQuerier(keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) sdk.Querier
43
54
  func queryEgress(ctx sdk.Context, bech32 string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) ([]byte, error) {
44
55
  acc, err := sdk.AccAddressFromBech32(bech32)
45
56
  if err != nil {
46
- return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, err.Error())
57
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrInvalidRequest, err.Error())
47
58
  }
48
59
 
49
60
  egress := keeper.GetEgress(ctx, acc)
50
61
  if egress.Peer.Empty() {
51
- return []byte{}, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, fmt.Sprintf("egress %s not found", bech32))
62
+ return []byte{}, sdkioerrors.Wrap(sdkerrors.ErrUnknownRequest, fmt.Sprintf("egress %s not found", bech32))
52
63
  }
53
64
 
54
65
  bz, err := codec.MarshalJSONIndent(legacyQuerierCdc, egress)
55
66
  if err != nil {
56
- return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
67
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrJSONMarshal, err.Error())
57
68
  }
58
69
 
59
70
  return bz, nil
60
71
  }
61
72
 
62
73
  // nolint: unparam
63
- func queryMailbox(ctx sdk.Context, path []string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) (res []byte, err error) {
64
- peer := path[0]
65
-
74
+ func queryMailbox(ctx sdk.Context, peer string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) (res []byte, err error) {
66
75
  value := keeper.GetMailbox(ctx, peer)
67
76
 
68
77
  if value == "" {
69
- return []byte{}, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, "could not get peer mailbox")
78
+ return []byte{}, sdkioerrors.Wrap(sdkerrors.ErrUnknownRequest, "could not get peer mailbox")
70
79
  }
71
80
 
72
81
  bz, err2 := codec.MarshalJSONIndent(legacyQuerierCdc, vstoragetypes.Data{Value: value})
73
82
  if err2 != nil {
74
- return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err2.Error())
83
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrJSONMarshal, err2.Error())
75
84
  }
76
85
 
77
86
  return bz, nil
@@ -81,12 +90,12 @@ func queryMailbox(ctx sdk.Context, path []string, req abci.RequestQuery, keeper
81
90
  func legacyQueryStorage(ctx sdk.Context, path string, req abci.RequestQuery, keeper Keeper, legacyQuerierCdc *codec.LegacyAmino) (res []byte, err error) {
82
91
  entry := keeper.vstorageKeeper.GetEntry(ctx, path)
83
92
  if !entry.HasValue() {
84
- return []byte{}, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "could not get swingset %+v", path)
93
+ return []byte{}, sdkioerrors.Wrapf(sdkerrors.ErrUnknownRequest, "could not get swingset %+v", path)
85
94
  }
86
95
 
87
96
  bz, err2 := codec.MarshalJSONIndent(legacyQuerierCdc, vstoragetypes.Data{Value: entry.StringValue()})
88
97
  if err2 != nil {
89
- return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err2.Error())
98
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrJSONMarshal, err2.Error())
90
99
  }
91
100
 
92
101
  return bz, nil
@@ -103,7 +112,7 @@ func legacyQueryKeys(ctx sdk.Context, path string, req abci.RequestQuery, keeper
103
112
 
104
113
  bz, err2 := codec.MarshalJSONIndent(legacyQuerierCdc, vstoragetypes.Children{Children: chlist})
105
114
  if err2 != nil {
106
- return nil, sdkerrors.Wrap(sdkerrors.ErrJSONMarshal, err2.Error())
115
+ return nil, sdkioerrors.Wrap(sdkerrors.ErrJSONMarshal, err2.Error())
107
116
  }
108
117
 
109
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 = sdkerrors.Wrapf(err, "failed to discard swing-store export after failing to process export: %+v", discardErr)
591
+ err = sdkioerrors.Wrapf(err, "failed to discard swing-store export after failing to process export: %+v", discardErr)
592
592
  }
593
593
  }()
594
594
 
@@ -751,11 +751,15 @@ func (exportsHandler SwingStoreExportsHandler) RestoreExport(provider SwingStore
751
751
  }
752
752
  defer os.RemoveAll(exportDir)
753
753
 
754
+ exportsHandler.logger.Info("creating swing-store restore", "exportDir", exportDir, "height", blockHeight)
755
+
754
756
  err = WriteSwingStoreExportToDirectory(provider, exportDir)
755
757
  if err != nil {
756
758
  return err
757
759
  }
758
760
 
761
+ exportsHandler.logger.Info("restoring swing-store", "exportDir", exportDir, "height", blockHeight)
762
+
759
763
  action := &swingStoreRestoreExportAction{
760
764
  Type: swingStoreExportActionType,
761
765
  BlockHeight: blockHeight,
@@ -772,7 +776,7 @@ func (exportsHandler SwingStoreExportsHandler) RestoreExport(provider SwingStore
772
776
  return err
773
777
  }
774
778
 
775
- exportsHandler.logger.Info("restored swing-store export", "exportDir", exportDir, "height", blockHeight)
779
+ exportsHandler.logger.Info("restored swing-store", "exportDir", exportDir, "height", blockHeight)
776
780
 
777
781
  return nil
778
782
  }
@@ -783,7 +787,18 @@ func (exportsHandler SwingStoreExportsHandler) RestoreExport(provider SwingStore
783
787
  // a jsonl-like file, before saving the export manifest linking these together.
784
788
  // The export manifest filename and overall export format is common with the JS
785
789
  // swing-store import/export logic.
786
- 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
+
787
802
  manifest := exportManifest{
788
803
  BlockHeight: provider.BlockHeight,
789
804
  }
@@ -794,14 +809,14 @@ func WriteSwingStoreExportToDirectory(provider SwingStoreExportProvider, exportD
794
809
  }
795
810
 
796
811
  if exportDataReader != nil {
797
- defer exportDataReader.Close()
812
+ defer handleDeferError(exportDataReader.Close)
798
813
 
799
814
  manifest.Data = exportDataFilename
800
815
  exportDataFile, err := os.OpenFile(filepath.Join(exportDir, exportDataFilename), os.O_CREATE|os.O_WRONLY, exportedFilesMode)
801
816
  if err != nil {
802
817
  return err
803
818
  }
804
- defer exportDataFile.Close()
819
+ defer handleDeferError(exportDataFile.Close)
805
820
 
806
821
  err = agoric.EncodeKVEntryReaderToJsonl(exportDataReader, exportDataFile)
807
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
+ }
@@ -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
- panic(fmt.Errorf("SwingStore export dir not set"))
159
+ am.swingStoreExportDir = "/tmp/swingset_export"
160
160
  }
161
161
  }
162
162
 
@@ -1,23 +1,24 @@
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
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
7
+ govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
7
8
 
8
9
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/keeper"
9
10
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/types"
10
11
  )
11
12
 
12
13
  // NewSwingSetProposalHandler defines the SwingSet proposal handler
13
- func NewSwingSetProposalHandler(k keeper.Keeper) govtypes.Handler {
14
- return func(ctx sdk.Context, content govtypes.Content) error {
14
+ func NewSwingSetProposalHandler(k keeper.Keeper) govv1beta1.Handler {
15
+ return func(ctx sdk.Context, content govv1beta1.Content) error {
15
16
  switch c := content.(type) {
16
17
  case *types.CoreEvalProposal:
17
18
  return k.CoreEvalProposal(ctx, c)
18
19
 
19
20
  default:
20
- return sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized swingset proposal content type: %T", c)
21
+ return sdkioerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized swingset proposal content type: %T", c)
21
22
  }
22
23
  }
23
24
  }
@@ -1,6 +1,7 @@
1
1
  package swingset
2
2
 
3
3
  import (
4
+ "context"
4
5
  "encoding/json"
5
6
  "fmt"
6
7
  "io"
@@ -33,7 +34,8 @@ func NewPortHandler(k Keeper) vm.PortHandler {
33
34
  // Receive implements the vm.PortHandler method.
34
35
  // It receives and processes an inbound message, returning the
35
36
  // JSON-serialized response or an error.
36
- func (ph portHandler) Receive(ctx *vm.ControllerContext, str string) (string, error) {
37
+ func (ph portHandler) Receive(cctx context.Context, str string) (string, error) {
38
+ ctx := sdk.UnwrapSDKContext(cctx)
37
39
  var msg swingsetMessage
38
40
  err := json.Unmarshal([]byte(str), &msg)
39
41
  if err != nil {
@@ -42,7 +44,7 @@ func (ph portHandler) Receive(ctx *vm.ControllerContext, str string) (string, er
42
44
 
43
45
  switch msg.Method {
44
46
  case SwingStoreUpdateExportData:
45
- return ph.handleSwingStoreUpdateExportData(ctx.Context, msg.Args)
47
+ return ph.handleSwingStoreUpdateExportData(ctx, msg.Args)
46
48
 
47
49
  default:
48
50
  return "", fmt.Errorf("unrecognized swingset method %s", msg.Method)
@@ -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
+ }
@@ -6,7 +6,7 @@ import (
6
6
  cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
7
7
  sdk "github.com/cosmos/cosmos-sdk/types"
8
8
  "github.com/cosmos/cosmos-sdk/types/msgservice"
9
- govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
9
+ govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
10
10
  )
11
11
 
12
12
  var (
@@ -44,7 +44,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) {
44
44
  &MsgWalletSpendAction{},
45
45
  )
46
46
  registry.RegisterImplementations(
47
- (*govtypes.Content)(nil),
47
+ (*govv1beta1.Content)(nil),
48
48
  &CoreEvalProposal{},
49
49
  )
50
50
  msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)
@@ -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/vats/decentral-core-config.json"
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))),
@@ -1,6 +1,7 @@
1
1
  package types
2
2
 
3
3
  import (
4
+ sdkmath "cosmossdk.io/math"
4
5
  sdk "github.com/cosmos/cosmos-sdk/types"
5
6
  authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
6
7
  )
@@ -21,8 +22,8 @@ type AccountKeeper interface {
21
22
  }
22
23
 
23
24
  type SwingSetKeeper interface {
24
- GetBeansPerUnit(ctx sdk.Context) map[string]sdk.Uint
25
- ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans sdk.Uint) error
25
+ GetBeansPerUnit(ctx sdk.Context) map[string]sdkmath.Uint
26
+ ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans sdkmath.Uint) error
26
27
  IsHighPriorityAddress(ctx sdk.Context, addr sdk.AccAddress) (bool, error)
27
28
  GetSmartWalletState(ctx sdk.Context, addr sdk.AccAddress) SmartWalletState
28
29
  ChargeForSmartWallet(ctx sdk.Context, addr sdk.AccAddress) error