From 2bf62e68a79ee68b5cbf4b0b0ea274b592fa8621 Mon Sep 17 00:00:00 2001 From: Yun Yeo Date: Thu, 22 Apr 2021 18:34:10 +0900 Subject: [PATCH] Update binding interface to reject IBC and Burn message --- docs/core/proto-docs.md | 1 + proto/terra/wasm/v1beta1/wasm.proto | 2 + x/wasm/keeper/connector.go | 84 +++----- x/wasm/keeper/contract.go | 43 ++-- x/wasm/keeper/contract_test.go | 2 +- x/wasm/keeper/keeper.go | 65 ++++-- x/wasm/keeper/keeper_test.go | 6 +- x/wasm/keeper/recursive_test.go | 6 +- x/wasm/keeper/reflect_test.go | 8 +- x/wasm/keeper/submsg_test.go | 2 +- x/wasm/keeper/test_utils.go | 215 ++++++++++++++++++- x/wasm/keeper/testdata/ibc_reflect.wasm | Bin 0 -> 271619 bytes x/wasm/keeper/testdata/ibc_reflect_send.wasm | Bin 0 -> 282952 bytes x/wasm/keeper/wasm_interface.go | 43 +--- x/wasm/keeper/wasm_interface_stargate.go | 78 +++++++ x/wasm/types/connector.go | 23 ++ x/wasm/types/contract.go | 19 ++ x/wasm/types/expected_keeper.go | 41 ++++ x/wasm/types/keys.go | 9 +- x/wasm/types/msg_binding.go | 36 +++- x/wasm/types/params.go | 4 +- x/wasm/types/query_binding.go | 28 ++- x/wasm/types/wasm.pb.go | 151 +++++++++---- x/wasm/types/wasmer_engine.go | 3 + 24 files changed, 644 insertions(+), 225 deletions(-) create mode 100644 x/wasm/keeper/testdata/ibc_reflect.wasm create mode 100644 x/wasm/keeper/testdata/ibc_reflect_send.wasm create mode 100644 x/wasm/keeper/wasm_interface_stargate.go diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index a8fb551aa..5e9c35c47 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -2197,6 +2197,7 @@ ContractInfo stores a WASM contract instance | `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored Wasm code | | `init_msg` | [bytes](#bytes) | | InitMsg is the raw message used when instantiating a contract | | `migratable` | [bool](#bool) | | Migratable is the flag to specify the contract migratability | +| `ibc_port_id` | [string](#string) | | IBCPortID is the ID used in ibc communication | diff --git a/proto/terra/wasm/v1beta1/wasm.proto b/proto/terra/wasm/v1beta1/wasm.proto index 1c9fd652a..6ee6303ff 100644 --- a/proto/terra/wasm/v1beta1/wasm.proto +++ b/proto/terra/wasm/v1beta1/wasm.proto @@ -50,4 +50,6 @@ message ContractInfo { bytes init_msg = 4 [(gogoproto.moretags) = "yaml:\"init_msg\"", (gogoproto.casttype) = "encoding/json.RawMessage"]; // Migratable is the flag to specify the contract migratability bool migratable = 5 [(gogoproto.moretags) = "yaml:\"migratable\""]; + // IBCPortID is the ID used in ibc communication + string ibc_port_id = 6 [(gogoproto.moretags) = "yaml:\"ibc_port_id\"", (gogoproto.customname) = "IBCPortID"]; } diff --git a/x/wasm/keeper/connector.go b/x/wasm/keeper/connector.go index 814bd8ff2..c2c6c1d8a 100644 --- a/x/wasm/keeper/connector.go +++ b/x/wasm/keeper/connector.go @@ -103,62 +103,11 @@ func (k Keeper) dispatchMessages(ctx sdk.Context, contractAddr sdk.AccAddress, m return nil } -// dispatchMessage does not emit events to prevent duplicate emission -func (k Keeper) dispatchMessage(ctx sdk.Context, contractAddr sdk.AccAddress, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data []byte, err error) { - sdkMsg, err := k.msgParser.Parse(contractAddr, msg) - if err != nil { - return nil, nil, err - } - - // Charge tax on result msg - taxes := ante.FilterMsgAndComputeTax(ctx, k.treasuryKeeper, sdkMsg) - if !taxes.IsZero() { - contractAcc := k.accountKeeper.GetAccount(ctx, contractAddr) - if err := cosmosante.DeductFees(k.bankKeeper, ctx, contractAcc, taxes); err != nil { - return nil, nil, err - } - } - - res, err := k.handleSdkMessage(ctx, contractAddr, sdkMsg) - if err != nil { - return nil, nil, err - } - - // set data - data = make([]byte, len(res.Data)) - copy(data, res.Data) - - // convert Tendermint.Events to sdk.Event - sdkEvents := make([]sdk.Event, len(res.Events)) - for i := range res.Events { - sdkEvents[i] = sdk.Event(res.Events[i]) - } - - // append events - events = append(events, sdkEvents...) - - return -} - // dispatchMessageWithGasLimit does not emit events to prevent duplicate emission func (k Keeper) dispatchMessageWithGasLimit(ctx sdk.Context, contractAddr sdk.AccAddress, msg wasmvmtypes.CosmosMsg, gasLimit uint64) (events []sdk.Event, data []byte, err error) { limitedMeter := sdk.NewGasMeter(gasLimit) subCtx := ctx.WithGasMeter(limitedMeter) - sdkMsg, err := k.msgParser.Parse(contractAddr, msg) - if err != nil { - return nil, nil, err - } - - // Charge tax on result msg - taxes := ante.FilterMsgAndComputeTax(subCtx, k.treasuryKeeper, sdkMsg) - if !taxes.IsZero() { - contractAcc := k.accountKeeper.GetAccount(subCtx, contractAddr) - if err := cosmosante.DeductFees(k.bankKeeper, subCtx, contractAcc, taxes); err != nil { - return nil, nil, err - } - } - // catch out of gas panic and just charge the entire gas limit defer func() { if r := recover(); r != nil { @@ -174,7 +123,32 @@ func (k Keeper) dispatchMessageWithGasLimit(ctx sdk.Context, contractAddr sdk.Ac } }() - res, err := k.handleSdkMessage(subCtx, contractAddr, sdkMsg) + events, data, err = k.dispatchMessage(subCtx, contractAddr, msg) + + // make sure we charge the parent what was spent + spent := subCtx.GasMeter().GasConsumed() + ctx.GasMeter().ConsumeGas(spent, "From limited Sub-Message") + + return events, data, err +} + +// dispatchMessage does not emit events to prevent duplicate emission +func (k Keeper) dispatchMessage(ctx sdk.Context, contractAddr sdk.AccAddress, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data []byte, err error) { + sdkMsg, err := k.msgParser.Parse(ctx, contractAddr, msg) + if err != nil { + return nil, nil, err + } + + // Charge tax on result msg + taxes := ante.FilterMsgAndComputeTax(ctx, k.treasuryKeeper, sdkMsg) + if !taxes.IsZero() { + contractAcc := k.accountKeeper.GetAccount(ctx, contractAddr) + if err := cosmosante.DeductFees(k.bankKeeper, ctx, contractAcc, taxes); err != nil { + return nil, nil, err + } + } + + res, err := k.handleSdkMessage(ctx, contractAddr, sdkMsg) if err != nil { return nil, nil, err } @@ -192,11 +166,7 @@ func (k Keeper) dispatchMessageWithGasLimit(ctx sdk.Context, contractAddr sdk.Ac // append events events = append(events, sdkEvents...) - // make sure we charge the parent what was spent - spent := subCtx.GasMeter().GasConsumed() - ctx.GasMeter().ConsumeGas(spent, "From limited Sub-Message") - - return events, data, err + return } func (k Keeper) handleSdkMessage(ctx sdk.Context, contractAddr sdk.AccAddress, msg sdk.Msg) (*sdk.Result, error) { diff --git a/x/wasm/keeper/contract.go b/x/wasm/keeper/contract.go index c1b519c03..6a01303f9 100644 --- a/x/wasm/keeper/contract.go +++ b/x/wasm/keeper/contract.go @@ -1,11 +1,8 @@ package keeper import ( - "encoding/binary" "time" - "github.com/tendermint/tendermint/crypto" - wasmvmtypes "github.com/CosmWasm/wasmvm/types" "github.com/terra-project/core/x/wasm/types" @@ -32,7 +29,7 @@ func (k Keeper) CompileCode(ctx sdk.Context, wasmCode []byte) (codeHash []byte, // consume gas for compile cost ctx.GasMeter().ConsumeGas(types.CompileCostPerByte*uint64(len(wasmCode)), "Compiling WASM Bytes Cost") - codeHash, err = k.wasmer.Create(wasmCode) + codeHash, err = k.wasmVM.Create(wasmCode) if err != nil { return nil, sdkerrors.Wrap(types.ErrStoreCodeFailed, err.Error()) } @@ -84,7 +81,7 @@ func (k Keeper) InstantiateContract( instanceID++ // create contract address - contractAddress := k.generateContractAddress(ctx, codeID, instanceID) + contractAddress := types.GenerateContractAddress(codeID, instanceID) existingAcct := k.accountKeeper.GetAccount(ctx, contractAddress) if existingAcct != nil { return nil, nil, sdkerrors.Wrap(types.ErrAccountExists, existingAcct.GetAddress().String()) @@ -120,14 +117,14 @@ func (k Keeper) InstantiateContract( contractStore := prefix.NewStore(ctx.KVStore(k.storeKey), contractStoreKey) // instantiate wasm contract - res, gasUsed, err := k.wasmer.Instantiate( + res, gasUsed, err := k.wasmVM.Instantiate( codeInfo.CodeHash, env, info, initMsg, contractStore, k.getCosmWasmAPI(ctx), - k.querier.WithCtx(ctx), + k.querier.WithCtx(ctx).WithContractAddr(contractAddress), k.getGasMeter(ctx), k.getGasRemaining(ctx), ) @@ -195,14 +192,14 @@ func (k Keeper) ExecuteContract( env := types.NewEnv(ctx, contractAddress) info := types.NewInfo(caller, coins) - res, gasUsed, err := k.wasmer.Execute( + res, gasUsed, err := k.wasmVM.Execute( codeInfo.CodeHash, env, info, exeMsg, storePrefix, k.getCosmWasmAPI(ctx), - k.querier.WithCtx(ctx), + k.querier.WithCtx(ctx).WithContractAddr(contractAddress), k.getGasMeter(ctx), k.getGasRemaining(ctx), ) @@ -272,13 +269,13 @@ func (k Keeper) MigrateContract( prefixStoreKey := types.GetContractStoreKey(contractAddress) prefixStore := prefix.NewStore(ctx.KVStore(k.storeKey), prefixStoreKey) - res, gasUsed, err := k.wasmer.Migrate( + res, gasUsed, err := k.wasmVM.Migrate( newCodeInfo.CodeHash, env, migrateMsg, prefixStore, k.getCosmWasmAPI(ctx), - k.querier.WithCtx(ctx), + k.querier.WithCtx(ctx).WithContractAddr(contractAddress), k.getGasMeter(ctx), k.getGasRemaining(ctx), ) @@ -333,13 +330,13 @@ func (k Keeper) reply( reply.Result.Ok.Events = reply.Result.Ok.Events[:eventParams.MaxAttributeNum] } - res, gasUsed, err := k.wasmer.Reply( + res, gasUsed, err := k.wasmVM.Reply( codeInfo.CodeHash, env, reply, storePrefix, k.getCosmWasmAPI(ctx), - k.querier.WithCtx(ctx), + k.querier.WithCtx(ctx).WithContractAddr(contractAddress), k.getGasMeter(ctx), k.getGasRemaining(ctx), ) @@ -371,22 +368,6 @@ func (k Keeper) reply( return nil } -// generates a contract address from codeID + instanceID -// and increases last instanceID -func (k Keeper) generateContractAddress(ctx sdk.Context, codeID uint64, instanceID uint64) sdk.AccAddress { - // NOTE: It is possible to get a duplicate address if either codeID or instanceID - // overflow 32 bits. This is highly improbable, but something that could be refactored. - contractID := codeID<<32 + instanceID - return addrFromUint64(contractID) -} - -func addrFromUint64(id uint64) sdk.AccAddress { - addr := make([]byte, 20) - addr[0] = 'C' - binary.PutUvarint(addr[1:], id) - return sdk.AccAddress(crypto.AddressHash(addr)) -} - func (k Keeper) queryToStore(ctx sdk.Context, contractAddress sdk.AccAddress, key []byte) []byte { defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "query-raw") if key == nil { @@ -409,13 +390,13 @@ func (k Keeper) queryToContract(ctx sdk.Context, contractAddress sdk.AccAddress, } env := types.NewEnv(ctx, contractAddress) - queryResult, gasUsed, err := k.wasmer.Query( + queryResult, gasUsed, err := k.wasmVM.Query( codeInfo.CodeHash, env, queryMsg, contractStorePrefix, k.getCosmWasmAPI(ctx), - k.querier.WithCtx(ctx), + k.querier.WithCtx(ctx).WithContractAddr(contractAddress), k.getGasMeter(ctx), k.getGasRemaining(ctx), ) diff --git a/x/wasm/keeper/contract_test.go b/x/wasm/keeper/contract_test.go index 1f8caf1d7..902960768 100644 --- a/x/wasm/keeper/contract_test.go +++ b/x/wasm/keeper/contract_test.go @@ -223,7 +223,7 @@ func TestExecuteWithNonExistingContractAddress(t *testing.T) { creator := createFakeFundedAccount(ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) // unauthorized - trialCtx so we don't change state - nonExistingContractAddress := addrFromUint64(9999) + nonExistingContractAddress := types.GenerateContractAddress(9999, 9999) _, err := keeper.ExecuteContract(ctx, nonExistingContractAddress, creator, []byte(`{}`), nil) require.Error(t, err, sdkerrors.Wrapf(types.ErrNotFound, "contract %s", nonExistingContractAddress)) } diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 2fd7142c2..a68e3ee2d 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -28,14 +28,17 @@ type Keeper struct { cdc codec.BinaryMarshaler paramSpace paramstypes.Subspace - accountKeeper types.AccountKeeper - bankKeeper types.BankKeeper - treasuryKeeper types.TreasuryKeeper + accountKeeper types.AccountKeeper + bankKeeper types.BankKeeper + treasuryKeeper types.TreasuryKeeper + portKeeper types.PortKeeper + capabilityKeeper types.CapabilityKeeper + channelKeeper types.ChannelKeeper router sdk.Router queryRouter types.GRPCQueryRouter - wasmer types.WasmerEngine + wasmVM types.WasmerEngine querier types.Querier msgParser types.MsgParser @@ -51,12 +54,15 @@ func NewKeeper( accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper, treasuryKeeper types.TreasuryKeeper, + channelKeeper types.ChannelKeeper, + portKeeper types.PortKeeper, + capabilityKeeper types.CapabilityKeeper, router sdk.Router, queryRouter types.GRPCQueryRouter, supportedFeatures string, homePath string, wasmConfig *config.Config) Keeper { - wasmer, err := wasmvm.NewVM( + wasmVM, err := wasmvm.NewVM( filepath.Join(homePath, config.DBDir), supportedFeatures, types.ContractMemoryLimit, @@ -73,18 +79,21 @@ func NewKeeper( } return Keeper{ - storeKey: storeKey, - cdc: cdc, - paramSpace: paramspace, - wasmer: wasmer, - accountKeeper: accountKeeper, - bankKeeper: bankKeeper, - treasuryKeeper: treasuryKeeper, - router: router, - queryRouter: queryRouter, - wasmConfig: wasmConfig, - msgParser: types.NewModuleMsgParser(), - querier: types.NewModuleQuerier(), + storeKey: storeKey, + cdc: cdc, + paramSpace: paramspace, + wasmVM: wasmVM, + accountKeeper: accountKeeper, + bankKeeper: bankKeeper, + treasuryKeeper: treasuryKeeper, + portKeeper: portKeeper, + capabilityKeeper: capabilityKeeper, + channelKeeper: channelKeeper, + router: router, + queryRouter: queryRouter, + wasmConfig: wasmConfig, + msgParser: types.NewModuleMsgParser(), + querier: types.NewModuleQuerier(), } } @@ -210,7 +219,7 @@ func (k Keeper) GetByteCode(ctx sdk.Context, codeID uint64) ([]byte, error) { return nil, sdkErr } - byteCode, err := k.wasmer.GetCode(codeInfo.CodeHash) + byteCode, err := k.wasmVM.GetCode(codeInfo.CodeHash) if err != nil { return nil, err } @@ -219,15 +228,29 @@ func (k Keeper) GetByteCode(ctx sdk.Context, codeID uint64) ([]byte, error) { } // RegisterMsgParsers register module msg parsers -func (k *Keeper) RegisterMsgParsers(parsers map[string]types.WasmMsgParserInterface) { +func (k *Keeper) RegisterMsgParsers( + parsers map[string]types.WasmMsgParserInterface, + stargateWasmMsgParser types.StargateWasmMsgParserInterface, +) { for route, parser := range parsers { - k.msgParser[route] = parser + k.msgParser.Parsers[route] = parser + } + + if stargateWasmMsgParser != nil { + k.msgParser.StargateParser = stargateWasmMsgParser } } // RegisterQueriers register module queriers -func (k *Keeper) RegisterQueriers(queriers map[string]types.WasmQuerierInterface) { +func (k *Keeper) RegisterQueriers( + queriers map[string]types.WasmQuerierInterface, + stargateWasmQuerier types.StargateWasmQuerierInterface, +) { for route, querier := range queriers { k.querier.Queriers[route] = querier } + + if stargateWasmQuerier != nil { + k.querier.StargateQuerier = stargateWasmQuerier + } } diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index c36f1f6ea..bcf31d472 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -19,7 +19,7 @@ func TestCodeInfo(t *testing.T) { ctx, keeper := input.Ctx, input.WasmKeeper codeID := uint64(1) - creatorAddr := addrFromUint64(codeID) + _, _, creatorAddr := keyPubAddr() expected := types.NewCodeInfo(codeID, []byte{1, 2, 3}, creatorAddr) keeper.SetCodeInfo(ctx, 1, expected) @@ -37,8 +37,8 @@ func TestContractInfo(t *testing.T) { codeID := uint64(1) instanceID := uint64(1) - creatorAddr := addrFromUint64(codeID) - contractAddr := keeper.generateContractAddress(ctx, codeID, instanceID) + _, _, creatorAddr := keyPubAddr() + contractAddr := types.GenerateContractAddress(codeID, instanceID) initMsg := HackatomExampleInitMsg{ Verifier: alice, diff --git a/x/wasm/keeper/recursive_test.go b/x/wasm/keeper/recursive_test.go index 2f83fb75e..480a3e77e 100644 --- a/x/wasm/keeper/recursive_test.go +++ b/x/wasm/keeper/recursive_test.go @@ -68,7 +68,7 @@ func initRecurseContract(t *testing.T) (contract sdk.AccAddress, creator sdk.Acc ctx, cdc, accKeeper, bankKeeper, keeper := input.Ctx, input.Cdc, input.AccKeeper, input.BankKeeper, input.WasmKeeper keeper.RegisterQueriers(map[string]types.WasmQuerierInterface{ types.WasmQueryRouteWasm: newWasmQuerierWithCounter(keeper), - }) + }, nil) deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) creator = createFakeFundedAccount(ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) @@ -96,7 +96,7 @@ func initRecurseContract(t *testing.T) (contract sdk.AccAddress, creator sdk.Acc func TestGasCostOnQuery(t *testing.T) { GasNoWork := types.InstanceCost + 4_384 - // Note: about 100 SDK gas (10k wasmer gas) for each round of sha256 + // Note: about 100 SDK gas (10k wasmVM gas) for each round of sha256 GasWork50 := GasNoWork + 5_692 // this is a little shy of 50k gas - to keep an eye on the limit const ( @@ -183,7 +183,7 @@ func TestGasCostOnQuery(t *testing.T) { func TestGasOnExternalQuery(t *testing.T) { GasNoWork := types.InstanceCost + 4_384 - // Note: about 100 SDK gas (10k wasmer gas) for each round of sha256 + // Note: about 100 SDK gas (10k wasmVM gas) for each round of sha256 GasWork50 := GasNoWork + 5_692 // this is a little shy of 50k gas - to keep an eye on the limit cases := map[string]struct { diff --git a/x/wasm/keeper/reflect_test.go b/x/wasm/keeper/reflect_test.go index ebf45861e..f15256b32 100644 --- a/x/wasm/keeper/reflect_test.go +++ b/x/wasm/keeper/reflect_test.go @@ -173,12 +173,12 @@ func TestReflectReflectCustomMsg(t *testing.T) { keeper.RegisterQueriers(map[string]types.WasmQuerierInterface{ "reflect": reflectQuerier{}, - }) + }, nil) keeper.RegisterMsgParsers(map[string]types.WasmMsgParserInterface{ "reflect": reflectRawMsgParser{ cdc: MakeTestCodec(t), }, - }) + }, nil) deposit := sdk.NewCoins(sdk.NewInt64Coin(core.MicroLunaDenom, 100000)) creator := createFakeFundedAccount(ctx, accKeeper, bankKeeper, deposit) @@ -275,12 +275,12 @@ func TestReflectReflectCustomQuery(t *testing.T) { keeper.RegisterQueriers(map[string]types.WasmQuerierInterface{ "reflect": reflectQuerier{}, - }) + }, nil) keeper.RegisterMsgParsers(map[string]types.WasmMsgParserInterface{ "reflect": reflectRawMsgParser{ cdc: MakeTestCodec(t), }, - }) + }, nil) deposit := sdk.NewCoins(sdk.NewInt64Coin(core.MicroLunaDenom, 100000)) creator := createFakeFundedAccount(ctx, accKeeper, bankKeeper, deposit) diff --git a/x/wasm/keeper/submsg_test.go b/x/wasm/keeper/submsg_test.go index db74e2898..8d191b929 100644 --- a/x/wasm/keeper/submsg_test.go +++ b/x/wasm/keeper/submsg_test.go @@ -297,7 +297,7 @@ func TestDispatchSubMsgErrorHandling(t *testing.T) { subMsgError: true, gasLimit: &subGasLimit, // uses same gas as call without limit - resultAssertions: []assertion{assertGasUsed(99000, 101000), assertErrorString("insufficient funds")}, + resultAssertions: []assertion{assertGasUsed(104000, 107000), assertErrorString("insufficient funds")}, }, "out of gas caught with gas limit": { submsgID: 17, diff --git a/x/wasm/keeper/test_utils.go b/x/wasm/keeper/test_utils.go index 81c6d6e36..7d20a6d0b 100644 --- a/x/wasm/keeper/test_utils.go +++ b/x/wasm/keeper/test_utils.go @@ -2,7 +2,9 @@ package keeper import ( + "encoding/json" "fmt" + "io/ioutil" "testing" "time" @@ -11,6 +13,7 @@ import ( "github.com/tendermint/tendermint/crypto/ed25519" "github.com/tendermint/tendermint/crypto/secp256k1" "github.com/tendermint/tendermint/libs/log" + "github.com/tendermint/tendermint/libs/rand" dbm "github.com/tendermint/tm-db" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" @@ -22,6 +25,7 @@ import ( simparams "github.com/cosmos/cosmos-sdk/simapp/params" "github.com/cosmos/cosmos-sdk/std" "github.com/cosmos/cosmos-sdk/store" + storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/module" @@ -31,9 +35,16 @@ import ( "github.com/cosmos/cosmos-sdk/x/bank" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/cosmos-sdk/x/capability" + capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" distr "github.com/cosmos/cosmos-sdk/x/distribution" distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + "github.com/cosmos/cosmos-sdk/x/ibc/applications/transfer" + ibc "github.com/cosmos/cosmos-sdk/x/ibc/core" + ibchost "github.com/cosmos/cosmos-sdk/x/ibc/core/24-host" + ibckeeper "github.com/cosmos/cosmos-sdk/x/ibc/core/keeper" paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" "github.com/cosmos/cosmos-sdk/x/staking" @@ -72,6 +83,9 @@ var ModuleBasics = module.NewBasicManager( customparams.AppModuleBasic{}, oracle.AppModuleBasic{}, market.AppModuleBasic{}, + ibc.AppModuleBasic{}, + transfer.AppModuleBasic{}, + capability.AppModuleBasic{}, ) // MakeTestCodec nolint @@ -139,6 +153,7 @@ type TestInput struct { OracleKeeper oraclekeeper.Keeper MarketKeeper marketkeeper.Keeper TreasuryKeeper treasurykeeper.Keeper + IBCKeeper *ibckeeper.Keeper WasmKeeper Keeper } @@ -156,6 +171,9 @@ func CreateTestInput(t *testing.T) TestInput { keyOracle := sdk.NewKVStoreKey(oracletypes.StoreKey) keyMarket := sdk.NewKVStoreKey(markettypes.StoreKey) keyTreasury := sdk.NewKVStoreKey(treasurytypes.StoreKey) + keyIBC := sdk.NewKVStoreKey(ibchost.StoreKey) + keyCapability := sdk.NewKVStoreKey(capabilitytypes.StoreKey) + keyCapabilityTransient := storetypes.NewMemoryStoreKey(capabilitytypes.MemStoreKey) db := dbm.NewMemDB() ms := store.NewCommitMultiStore(db) @@ -173,6 +191,9 @@ func CreateTestInput(t *testing.T) TestInput { ms.MountStoreWithDB(keyOracle, sdk.StoreTypeIAVL, db) ms.MountStoreWithDB(keyMarket, sdk.StoreTypeIAVL, db) ms.MountStoreWithDB(keyTreasury, sdk.StoreTypeIAVL, db) + ms.MountStoreWithDB(keyIBC, sdk.StoreTypeIAVL, db) + ms.MountStoreWithDB(keyCapability, sdk.StoreTypeIAVL, db) + ms.MountStoreWithDB(keyCapabilityTransient, sdk.StoreTypeMemory, db) require.NoError(t, ms.LoadLatestVersion()) @@ -292,6 +313,15 @@ func CreateTestInput(t *testing.T) TestInput { stakingtypes.RegisterQueryServer(querier, stakingkeeper.Querier{Keeper: stakingKeeper}) distrtypes.RegisterQueryServer(querier, distrKeeper) + capabilityKeeper := capabilitykeeper.NewKeeper(appCodec, keyCapability, keyCapabilityTransient) + scopedIBCKeeper := capabilityKeeper.ScopeToModule(ibchost.ModuleName) + scopedWasmKeeper := capabilityKeeper.ScopeToModule(types.ModuleName) + + ibcKeeper := ibckeeper.NewKeeper( + appCodec, keyIBC, paramsKeeper.Subspace(ibchost.ModuleName), + stakingKeeper, scopedIBCKeeper, + ) + keeper := NewKeeper( appCodec, keyContract, @@ -299,6 +329,9 @@ func CreateTestInput(t *testing.T) TestInput { accountKeeper, bankKeeper, treasuryKeeper, + ibcKeeper.ChannelKeeper, + &ibcKeeper.PortKeeper, + scopedWasmKeeper, router, querier, types.DefaultFeatures, @@ -324,13 +357,13 @@ func CreateTestInput(t *testing.T) TestInput { types.WasmQueryRouteTreasury: treasurywasm.NewWasmQuerier(treasuryKeeper), types.WasmQueryRouteWasm: NewWasmQuerier(keeper), types.WasmQueryRouteOracle: oraclewasm.NewWasmQuerier(oracleKeeper), - }) + }, NewStargateWasmQuerier(keeper)) keeper.RegisterMsgParsers(map[string]types.WasmMsgParserInterface{ types.WasmMsgParserRouteBank: bankwasm.NewWasmMsgParser(), types.WasmMsgParserRouteStaking: stakingwasm.NewWasmMsgParser(), types.WasmMsgParserRouteMarket: marketwasm.NewWasmMsgParser(), types.WasmMsgParserRouteWasm: NewWasmMsgParser(), - }) + }, NewStargateWasmMsgParser(legacyAmino)) keeper.SetLastCodeID(ctx, 0) keeper.SetLastInstanceID(ctx, 0) @@ -344,15 +377,10 @@ func CreateTestInput(t *testing.T) TestInput { oracleKeeper, marketKeeper, treasuryKeeper, + ibcKeeper, keeper} } -// HackatomExampleInitMsg nolint -type HackatomExampleInitMsg struct { - Verifier sdk.AccAddress `json:"verifier"` - Beneficiary sdk.AccAddress `json:"beneficiary"` -} - func createFakeFundedAccount(ctx sdk.Context, ak authkeeper.AccountKeeper, bk bankkeeper.Keeper, coins sdk.Coins) sdk.AccAddress { _, _, addr := keyPubAddr() ak.SetAccount(ctx, authtypes.NewBaseAccountWithAddress(addr)) @@ -394,3 +422,174 @@ func TestHandler(k Keeper) sdk.Handler { } } } + +// ExampleContract nolint +type ExampleContract struct { + InitialAmount sdk.Coins + CreatorAddr sdk.AccAddress + CodeID uint64 +} + +// StoreExampleContract nolint +func StoreExampleContract(t *testing.T, input TestInput, wasmFile string) ExampleContract { + anyAmount := sdk.NewCoins(sdk.NewInt64Coin(core.MicroLunaDenom, 1000000)) + creatorAddr := createFakeFundedAccount(input.Ctx, input.AccKeeper, input.BankKeeper, anyAmount) + + wasmCode, err := ioutil.ReadFile(wasmFile) + require.NoError(t, err) + + codeID, err := input.WasmKeeper.StoreCode(input.Ctx, creatorAddr, wasmCode) + require.NoError(t, err) + return ExampleContract{anyAmount, creatorAddr, codeID} +} + +// StoreIBCReflectContract nolint +func StoreIBCReflectContract(t *testing.T, input TestInput) ExampleContract { + return StoreExampleContract(t, input, "./testdata/ibc_reflect.wasm") +} + +// StoreHackatomExampleContract nolint +func StoreHackatomExampleContract(t *testing.T, input TestInput) ExampleContract { + return StoreExampleContract(t, input, "./testdata/hackatom.wasm") +} + +// StoreBurnerExampleContract nolint +func StoreBurnerExampleContract(t *testing.T, input TestInput) ExampleContract { + return StoreExampleContract(t, input, "./testdata/burner.wasm") +} + +// StoreReflectContract nolint +func StoreReflectContract(t *testing.T, input TestInput) ExampleContract { + return StoreExampleContract(t, input, "./testdata/reflect.wasm") +} + +// HackatomExampleInitMsg nolint +type HackatomExampleInitMsg struct { + Verifier sdk.AccAddress `json:"verifier"` + Beneficiary sdk.AccAddress `json:"beneficiary"` +} + +// GetBytes nolint +func (m HackatomExampleInitMsg) GetBytes(t *testing.T) []byte { + initMsgBz, err := json.Marshal(m) + require.NoError(t, err) + return initMsgBz +} + +// IBCReflectExampleInstance nolint +type IBCReflectExampleInstance struct { + Contract sdk.AccAddress + Admin sdk.AccAddress + CodeID uint64 + ReflectCodeID uint64 +} + +// HackatomExampleInstance nolint +type HackatomExampleInstance struct { + ExampleContract + Contract sdk.AccAddress + VerifierAddr sdk.AccAddress + BeneficiaryAddr sdk.AccAddress +} + +// InstantiateHackatomExampleContract load and instantiate the "./testdata/hackatom.wasm" contract +func InstantiateHackatomExampleContract(t *testing.T, input TestInput) HackatomExampleInstance { + contract := StoreHackatomExampleContract(t, input) + + verifierAddr := createFakeFundedAccount(input.Ctx, input.AccKeeper, input.BankKeeper, contract.InitialAmount) + + _, _, beneficiaryAddr := keyPubAddr() + initMsgBz := HackatomExampleInitMsg{ + Verifier: verifierAddr, + Beneficiary: beneficiaryAddr, + }.GetBytes(t) + initialAmount := sdk.NewCoins(sdk.NewInt64Coin(core.MicroLunaDenom, 100)) + + contractAddr, _, err := input.WasmKeeper.InstantiateContract(input.Ctx, contract.CodeID, contract.CreatorAddr, initMsgBz, initialAmount, true) + require.NoError(t, err) + + return HackatomExampleInstance{ + ExampleContract: contract, + Contract: contractAddr, + VerifierAddr: verifierAddr, + BeneficiaryAddr: beneficiaryAddr, + } +} + +// InstantiateIBCReflectContract load and instantiate the "./testdata/ibc_reflect.wasm" contract +func InstantiateIBCReflectContract(t *testing.T, input TestInput) IBCReflectExampleInstance { + reflectID := StoreReflectContract(t, input).CodeID + ibcReflectID := StoreIBCReflectContract(t, input).CodeID + + initMsgBz := IBCReflectInitMsg{ + ReflectCodeID: reflectID, + }.GetBytes(t) + adminAddr := createFakeFundedAccount(input.Ctx, input.AccKeeper, input.BankKeeper, sdk.Coins{}) + + contractAddr, _, err := input.WasmKeeper.InstantiateContract(input.Ctx, ibcReflectID, adminAddr, initMsgBz, nil, false) + require.NoError(t, err) + + return IBCReflectExampleInstance{ + Admin: adminAddr, + Contract: contractAddr, + CodeID: ibcReflectID, + ReflectCodeID: reflectID, + } +} + +// IBCReflectInitMsg nolint +type IBCReflectInitMsg struct { + ReflectCodeID uint64 `json:"reflect_code_id"` +} + +// GetBytes nolint +func (m IBCReflectInitMsg) GetBytes(t *testing.T) []byte { + initMsgBz, err := json.Marshal(m) + require.NoError(t, err) + return initMsgBz +} + +// BurnerExampleInitMsg nolint +type BurnerExampleInitMsg struct { + Payout sdk.AccAddress `json:"payout"` +} + +// GetBytes nolint +func (m BurnerExampleInitMsg) GetBytes(t *testing.T) []byte { + initMsgBz, err := json.Marshal(m) + require.NoError(t, err) + return initMsgBz +} + +var wasmIdent = []byte("\x00\x61\x73\x6D") + +// ExampleContractInstance nolint +type ExampleContractInstance struct { + ExampleContract + Contract sdk.AccAddress +} + +// SeedNewContractInstance sets the mock wasmVMEngine in keeper and calls store + instantiate to init the contract's metadata +func SeedNewContractInstance(t *testing.T, input TestInput) ExampleContractInstance { + t.Helper() + exampleContract := StoreRandomContract(t, input) + contractAddr, _, err := input.WasmKeeper.InstantiateContract(input.Ctx, exampleContract.CodeID, exampleContract.CreatorAddr, []byte(`{}`), nil, true) + require.NoError(t, err) + return ExampleContractInstance{ + ExampleContract: exampleContract, + Contract: contractAddr, + } +} + +// StoreRandomContract sets the mock wasmVMEngine in keeper and calls store +func StoreRandomContract(t *testing.T, input TestInput) ExampleContract { + t.Helper() + anyAmount := sdk.NewCoins(sdk.NewInt64Coin("denom", 1000)) + creatorAddr := createFakeFundedAccount(input.Ctx, input.AccKeeper, input.BankKeeper, anyAmount) + + wasmCode := append(wasmIdent, rand.Bytes(10)...) + codeID, err := input.WasmKeeper.StoreCode(input.Ctx, creatorAddr, wasmCode) + require.NoError(t, err) + exampleContract := ExampleContract{InitialAmount: anyAmount, CreatorAddr: creatorAddr, CodeID: codeID} + return exampleContract +} diff --git a/x/wasm/keeper/testdata/ibc_reflect.wasm b/x/wasm/keeper/testdata/ibc_reflect.wasm new file mode 100644 index 0000000000000000000000000000000000000000..3ff47810abebf1710df1f34a2cc9943d8d86538e GIT binary patch literal 271619 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
J*7b4QlFXHRXZ*vYS$brC!_CJBB)o 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�tb~X&exeMz+(x@Cno#mds=p8hX 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 literal 0 HcmV?d00001 diff --git a/x/wasm/keeper/testdata/ibc_reflect_send.wasm b/x/wasm/keeper/testdata/ibc_reflect_send.wasm new file mode 100644 index 0000000000000000000000000000000000000000..b23c7bf648fd0d5f2e6e8faa639da4fdbb81a3e0 GIT binary patch literal 282952 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 z z{M72_-F$~ze^1A0)AF4knf`QF%iP8_tqb$(f3o6B!EBd-FL3XbsFD!I5FU zyV&zN7>sn10`4sD6j%kNX*uJj{d#Y)dp30&sJWEJ*Z4{JNSXtt)uzCqLr>|2-Wp(w z`&i^|a1%JtT{q)i?t1Bl%r@7n%cd^&7SNjOc20NcFPU{ut8)huZVHgRd0xWLCHR22 zmvY(B@*RJXzsOt6$v$p6!x@Bi?h1de*W~WuT<mDcMW!x5*BUF4&5@XzFdKveJLYj*Ll;fQy zTKTT~_N3!8%EVGX;eLSj9q$ja54s&Qy8JfUTIZjZbTj91>PdSYE6eTmg}{`1$n`U` z4K`i(6nA>sPkuI|Ag_y7O^ literal 0 HcmV?d00001 diff --git a/x/wasm/keeper/wasm_interface.go b/x/wasm/keeper/wasm_interface.go index f33ff9faa..55faf492e 100644 --- a/x/wasm/keeper/wasm_interface.go +++ b/x/wasm/keeper/wasm_interface.go @@ -2,9 +2,6 @@ package keeper import ( "encoding/json" - "fmt" - - abci "github.com/tendermint/tendermint/abci/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" @@ -17,7 +14,7 @@ import ( var _ types.WasmQuerierInterface = WasmQuerier{} var _ types.WasmMsgParserInterface = WasmMsgParser{} -// WasmMsgParser - wasm msg parser for staking msgs +// WasmMsgParser - wasm msg parser for wasm msgs type WasmMsgParser struct{} // NewWasmMsgParser returns wasm msg parser @@ -84,42 +81,22 @@ func NewWasmQuerier(keeper Keeper) WasmQuerier { // Query - implement query function func (querier WasmQuerier) Query(ctx sdk.Context, request wasmvmtypes.QueryRequest) ([]byte, error) { - if request.Wasm != nil { - if request.Wasm.Smart != nil { - addr, err := sdk.AccAddressFromBech32(request.Wasm.Smart.ContractAddr) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, request.Wasm.Smart.ContractAddr) - } - - return querier.keeper.queryToContract(ctx, addr, request.Wasm.Smart.Msg) + if request.Wasm.Smart != nil { + addr, err := sdk.AccAddressFromBech32(request.Wasm.Smart.ContractAddr) + if err != nil { + return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, request.Wasm.Smart.ContractAddr) } - if request.Wasm.Raw != nil { - addr, err := sdk.AccAddressFromBech32(request.Wasm.Raw.ContractAddr) - if err != nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, request.Wasm.Raw.ContractAddr) - } - - return querier.keeper.queryToStore(ctx, addr, request.Wasm.Raw.Key), nil - } + return querier.keeper.queryToContract(ctx, addr, request.Wasm.Smart.Msg) } - if request.Stargate != nil { - route := querier.keeper.queryRouter.Route(request.Stargate.Path) - if route == nil { - return nil, wasmvmtypes.UnsupportedRequest{Kind: fmt.Sprintf("No route to query '%s'", request.Stargate.Path)} - } - - res, err := route(ctx, abci.RequestQuery{ - Data: request.Stargate.Data, - Path: request.Stargate.Path, - }) - + if request.Wasm.Raw != nil { + addr, err := sdk.AccAddressFromBech32(request.Wasm.Raw.ContractAddr) if err != nil { - return nil, err + return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, request.Wasm.Raw.ContractAddr) } - return res.Value, nil + return querier.keeper.queryToStore(ctx, addr, request.Wasm.Raw.Key), nil } return nil, wasmvmtypes.UnsupportedRequest{Kind: "unknown WasmQuery variant"} diff --git a/x/wasm/keeper/wasm_interface_stargate.go b/x/wasm/keeper/wasm_interface_stargate.go new file mode 100644 index 000000000..fc196882a --- /dev/null +++ b/x/wasm/keeper/wasm_interface_stargate.go @@ -0,0 +1,78 @@ +package keeper + +import ( + "fmt" + + abci "github.com/tendermint/tendermint/abci/types" + + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + + wasmvmtypes "github.com/CosmWasm/wasmvm/types" + + "github.com/terra-project/core/x/wasm/types" +) + +var _ types.StargateWasmQuerierInterface = StargateWasmQuerier{} +var _ types.StargateWasmMsgParserInterface = StargateWasmMsgParser{} + +// StargateWasmMsgParser - wasm msg parser for stargate msgs +type StargateWasmMsgParser struct { + unpacker codectypes.AnyUnpacker +} + +// NewStargateWasmMsgParser returns stargate wasm msg parser +func NewStargateWasmMsgParser(unpacker codectypes.AnyUnpacker) StargateWasmMsgParser { + return StargateWasmMsgParser{unpacker} +} + +// Parse implements wasm stargate msg parser +func (parser StargateWasmMsgParser) Parse(wasmMsg wasmvmtypes.CosmosMsg) (sdk.Msg, error) { + msg := wasmMsg.Stargate + + any := codectypes.Any{ + TypeUrl: msg.TypeURL, + Value: msg.Value, + } + + var sdkMsg sdk.Msg + if err := parser.unpacker.UnpackAny(&any, &sdkMsg); err != nil { + return nil, sdkerrors.Wrap(types.ErrInvalidMsg, fmt.Sprintf("Cannot unpack proto message with type URL: %s", msg.TypeURL)) + } + + if err := codectypes.UnpackInterfaces(sdkMsg, parser.unpacker); err != nil { + return nil, sdkerrors.Wrap(types.ErrInvalidMsg, fmt.Sprintf("UnpackInterfaces inside msg: %s", err)) + } + + return sdkMsg, nil +} + +// StargateWasmQuerier - wasm query interface for wasm contract +type StargateWasmQuerier struct { + keeper Keeper +} + +// NewStargateWasmQuerier returns stargate wasm querier +func NewStargateWasmQuerier(keeper Keeper) StargateWasmQuerier { + return StargateWasmQuerier{keeper} +} + +// Query - implement query function +func (querier StargateWasmQuerier) Query(ctx sdk.Context, request wasmvmtypes.QueryRequest) ([]byte, error) { + route := querier.keeper.queryRouter.Route(request.Stargate.Path) + if route == nil { + return nil, wasmvmtypes.UnsupportedRequest{Kind: fmt.Sprintf("No route to query '%s'", request.Stargate.Path)} + } + + res, err := route(ctx, abci.RequestQuery{ + Data: request.Stargate.Data, + Path: request.Stargate.Path, + }) + + if err != nil { + return nil, err + } + + return res.Value, nil +} diff --git a/x/wasm/types/connector.go b/x/wasm/types/connector.go index dbb901b15..ee0a7119b 100644 --- a/x/wasm/types/connector.go +++ b/x/wasm/types/connector.go @@ -7,6 +7,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + ibcclienttypes "github.com/cosmos/cosmos-sdk/x/ibc/core/02-client/types" wasmvmtypes "github.com/CosmWasm/wasmvm/types" ) @@ -112,3 +113,25 @@ func encodeSdkAttributes(attrs []abci.EventAttribute) []wasmvmtypes.EventAttribu } return res } + +// ConvertWasmIBCTimeoutHeightToCosmosHeight convert wasm types to cosmos type +func ConvertWasmIBCTimeoutHeightToCosmosHeight(ibcTimeoutBlock *wasmvmtypes.IBCTimeoutBlock) ibcclienttypes.Height { + if ibcTimeoutBlock == nil { + return ibcclienttypes.NewHeight(0, 0) + } + return ibcclienttypes.NewHeight(ibcTimeoutBlock.Revision, ibcTimeoutBlock.Height) +} + +// ConvertWasmIBCTimeoutTimestampToCosmosTimestamp convert wasm types to cosmos type +func ConvertWasmIBCTimeoutTimestampToCosmosTimestamp(timestamp *uint64) uint64 { + if timestamp == nil { + return 0 + } + return *timestamp +} + +// Messenger is an extension point for custom wasmVM message handling +type Messenger interface { + // DispatchMessage encodes the wasmVM message and dispatches it. + DispatchMessage(ctx sdk.Context, contractAddr sdk.AccAddress, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data []byte, err error) +} diff --git a/x/wasm/types/contract.go b/x/wasm/types/contract.go index fd2156f23..8e2d30c89 100644 --- a/x/wasm/types/contract.go +++ b/x/wasm/types/contract.go @@ -1,7 +1,10 @@ package types import ( + "encoding/binary" + wasmvmtypes "github.com/CosmWasm/wasmvm/types" + "github.com/tendermint/tendermint/crypto" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -61,3 +64,19 @@ func NewWasmCoins(cosmosCoins sdk.Coins) (wasmCoins []wasmvmtypes.Coin) { } return wasmCoins } + +// GenerateContractAddress generates a contract address from codeID + instanceID +// and increases last instanceID +func GenerateContractAddress(codeID uint64, instanceID uint64) sdk.AccAddress { + // NOTE: It is possible to get a duplicate address if either codeID or instanceID + // overflow 32 bits. This is highly improbable, but something that could be refactored. + contractID := codeID<<32 + instanceID + return addrFromUint64(contractID) +} + +func addrFromUint64(id uint64) sdk.AccAddress { + addr := make([]byte, 20) + addr[0] = 'C' + binary.PutUvarint(addr[1:], id) + return sdk.AccAddress(crypto.AddressHash(addr)) +} diff --git a/x/wasm/types/expected_keeper.go b/x/wasm/types/expected_keeper.go index 8b20c7592..3b0da97b8 100644 --- a/x/wasm/types/expected_keeper.go +++ b/x/wasm/types/expected_keeper.go @@ -3,6 +3,10 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" + connectiontypes "github.com/cosmos/cosmos-sdk/x/ibc/core/03-connection/types" + channeltypes "github.com/cosmos/cosmos-sdk/x/ibc/core/04-channel/types" + ibcexported "github.com/cosmos/cosmos-sdk/x/ibc/core/exported" abci "github.com/tendermint/tendermint/abci/types" ) @@ -45,3 +49,40 @@ type GRPCQueryHandler = func(ctx sdk.Context, req abci.RequestQuery) (abci.Respo type GRPCQueryRouter interface { Route(path string) GRPCQueryHandler } + +// ChannelKeeper defines the expected IBC channel keeper +type ChannelKeeper interface { + GetChannel(ctx sdk.Context, srcPort, srcChan string) (channel channeltypes.Channel, found bool) + GetNextSequenceSend(ctx sdk.Context, portID, channelID string) (uint64, bool) + SendPacket(ctx sdk.Context, channelCap *capabilitytypes.Capability, packet ibcexported.PacketI) error + ChanCloseInit(ctx sdk.Context, portID, channelID string, chanCap *capabilitytypes.Capability) error + GetAllChannels(ctx sdk.Context) (channels []channeltypes.IdentifiedChannel) + IterateChannels(ctx sdk.Context, cb func(channeltypes.IdentifiedChannel) bool) +} + +// ClientKeeper defines the expected IBC client keeper +type ClientKeeper interface { + GetClientConsensusState(ctx sdk.Context, clientID string) (connection ibcexported.ConsensusState, found bool) +} + +// ConnectionKeeper defines the expected IBC connection keeper +type ConnectionKeeper interface { + GetConnection(ctx sdk.Context, connectionID string) (connection connectiontypes.ConnectionEnd, found bool) +} + +// PortKeeper defines the expected IBC port keeper +type PortKeeper interface { + BindPort(ctx sdk.Context, portID string) *capabilitytypes.Capability +} + +// CapabilityKeeper defined the expected IBC capability keeper +type CapabilityKeeper interface { + GetCapability(ctx sdk.Context, name string) (*capabilitytypes.Capability, bool) + ClaimCapability(ctx sdk.Context, cap *capabilitytypes.Capability, name string) error + AuthenticateCapability(ctx sdk.Context, capability *capabilitytypes.Capability, name string) bool +} + +// ICS20TransferPortSource is a subset of the ibc transfer keeper. +type ICS20TransferPortSource interface { + GetPort(ctx sdk.Context) string +} diff --git a/x/wasm/types/keys.go b/x/wasm/types/keys.go index c916baa94..fb7bd40f1 100644 --- a/x/wasm/types/keys.go +++ b/x/wasm/types/keys.go @@ -5,7 +5,7 @@ import ( ) const ( - // ModuleName is the name of the contract module + // ModuleName is the name of the wasm module ModuleName = "wasm" // StoreKey is the string store representation @@ -14,11 +14,14 @@ const ( // TStoreKey is the string transient store representation TStoreKey = "transient_" + ModuleName - // QuerierRoute is the querier route for the staking module + // QuerierRoute is the querier route for the wasm module QuerierRoute = ModuleName - // RouterKey is the msg router key for the staking module + // RouterKey is the msg router key for the wasm module RouterKey = ModuleName + + // IBCPortIDPrefix is the prefix of IBC Port ID for wasm module + IBCPortIDPrefix = ModuleName + "." ) // Keys for wasm store diff --git a/x/wasm/types/msg_binding.go b/x/wasm/types/msg_binding.go index 58cc5a5e3..c169daab5 100644 --- a/x/wasm/types/msg_binding.go +++ b/x/wasm/types/msg_binding.go @@ -23,6 +23,11 @@ type WasmMsgParserInterface interface { ParseCustom(contractAddr sdk.AccAddress, data json.RawMessage) (sdk.Msg, error) } +// StargateWasmMsgParserInterface - stargate msg parsers +type StargateWasmMsgParserInterface interface { + Parse(msg wasmvmtypes.CosmosMsg) (sdk.Msg, error) +} + // WasmCustomMsg - wasm custom msg parser type WasmCustomMsg struct { Route string `json:"route"` @@ -30,18 +35,27 @@ type WasmCustomMsg struct { } // MsgParser - holds multiple module msg parsers -type MsgParser map[string]WasmMsgParserInterface +type MsgParser struct { + Parsers map[string]WasmMsgParserInterface + StargateParser StargateWasmMsgParserInterface +} // NewModuleMsgParser returns wasm msg parser func NewModuleMsgParser() MsgParser { - return make(MsgParser) + return MsgParser{ + Parsers: make(map[string]WasmMsgParserInterface), + } } // Parse convert Wasm raw msg to chain msg -func (p MsgParser) Parse(contractAddr sdk.AccAddress, msg wasmvmtypes.CosmosMsg) (sdk.Msg, error) { +func (p MsgParser) Parse(ctx sdk.Context, contractAddr sdk.AccAddress, msg wasmvmtypes.CosmosMsg) (sdk.Msg, error) { switch { case msg.Bank != nil: - if parser, ok := p[WasmMsgParserRouteBank]; ok { + if msg.Bank.Burn != nil { + return nil, sdkerrors.Wrap(ErrNoRegisteredParser, "Burn not supported") + } + + if parser, ok := p.Parsers[WasmMsgParserRouteBank]; ok { return parser.Parse(contractAddr, msg) } @@ -53,23 +67,31 @@ func (p MsgParser) Parse(contractAddr sdk.AccAddress, msg wasmvmtypes.CosmosMsg) return nil, sdkerrors.Wrap(sdkerrors.ErrJSONUnmarshal, err.Error()) } - if parser, ok := p[customMsg.Route]; ok { + if parser, ok := p.Parsers[customMsg.Route]; ok { return parser.ParseCustom(contractAddr, customMsg.MsgData) } return nil, sdkerrors.Wrap(ErrNoRegisteredParser, customMsg.Route) case msg.Staking != nil: - if parser, ok := p[WasmMsgParserRouteStaking]; ok { + if parser, ok := p.Parsers[WasmMsgParserRouteStaking]; ok { return parser.Parse(contractAddr, msg) } return nil, sdkerrors.Wrap(ErrNoRegisteredParser, WasmMsgParserRouteStaking) case msg.Wasm != nil: - if parser, ok := p[WasmMsgParserRouteWasm]; ok { + if parser, ok := p.Parsers[WasmMsgParserRouteWasm]; ok { return parser.Parse(contractAddr, msg) } return nil, sdkerrors.Wrap(ErrNoRegisteredParser, WasmMsgParserRouteWasm) + case msg.Stargate != nil: + if p.StargateParser != nil { + return p.StargateParser.Parse(msg) + } + + return nil, sdkerrors.Wrap(ErrNoRegisteredParser, "stargate") + case msg.IBC != nil: + return nil, sdkerrors.Wrap(ErrNoRegisteredParser, "IBC not supported") } return nil, sdkerrors.Wrap(ErrInvalidMsg, "failed to parse empty msg") diff --git a/x/wasm/types/params.go b/x/wasm/types/params.go index 0e616014c..8da58a3f9 100644 --- a/x/wasm/types/params.go +++ b/x/wasm/types/params.go @@ -44,10 +44,10 @@ var ( // Constant gas parameters const ( - InstanceCost = uint64(40_000) // sdk gas cost for executing wasmer engine + InstanceCost = uint64(40_000) // sdk gas cost for executing wasmVM engine CompileCostPerByte = uint64(2) // sdk gas cost per bytes - GasMultiplier = uint64(100) // Please note that all gas prices returned to the wasmer engine should have this multiplied + GasMultiplier = uint64(100) // Please note that all gas prices returned to the wasmVM engine should have this multiplied HumanizeCost = uint64(5) // wasm gas cost to convert canonical address to human address CanonicalizeCost = uint64(4) // wasm gas cost to convert human address to canonical address diff --git a/x/wasm/types/query_binding.go b/x/wasm/types/query_binding.go index c6a13acc9..935602843 100644 --- a/x/wasm/types/query_binding.go +++ b/x/wasm/types/query_binding.go @@ -15,10 +15,17 @@ type WasmQuerierInterface interface { QueryCustom(ctx sdk.Context, data json.RawMessage) ([]byte, error) } +// StargateWasmQuerierInterface - query registration interface for stargate querier +type StargateWasmQuerierInterface interface { + Query(ctx sdk.Context, request wasmvmtypes.QueryRequest) ([]byte, error) +} + // Querier - wasm query handler type Querier struct { - Ctx sdk.Context - Queriers map[string]WasmQuerierInterface + Ctx sdk.Context + ContractAddr sdk.AccAddress + Queriers map[string]WasmQuerierInterface + StargateQuerier StargateWasmQuerierInterface } // NewModuleQuerier return wasm querier @@ -52,6 +59,12 @@ func (q Querier) WithCtx(ctx sdk.Context) Querier { return q } +// WithContractAddr returns new querier with contractAddr +func (q Querier) WithContractAddr(contractAddr sdk.AccAddress) Querier { + q.ContractAddr = contractAddr + return q +} + // GasConsumed consume gas in the current context func (q Querier) GasConsumed() uint64 { return q.Ctx.GasMeter().GasConsumed() @@ -69,7 +82,6 @@ func (q Querier) Query(request wasmvmtypes.QueryRequest, gasLimit uint64) ([]byt }() // do the query - switch { case request.Bank != nil: if querier, ok := q.Queriers[WasmQueryRouteBank]; ok { @@ -96,12 +108,20 @@ func (q Querier) Query(request wasmvmtypes.QueryRequest, gasLimit uint64) ([]byt return nil, sdkerrors.Wrap(ErrNoRegisteredQuerier, WasmQueryRouteStaking) - case request.Wasm != nil || request.Stargate != nil: + case request.Wasm != nil: if querier, ok := q.Queriers[WasmQueryRouteWasm]; ok { return querier.Query(ctx, request) } return nil, sdkerrors.Wrap(ErrNoRegisteredQuerier, WasmQueryRouteWasm) + case request.Stargate != nil: + if q.StargateQuerier != nil { + return q.StargateQuerier.Query(ctx, request) + } + + return nil, sdkerrors.Wrap(ErrNoRegisteredQuerier, "stargate") + case request.IBC != nil: + return nil, sdkerrors.Wrap(ErrNoRegisteredQuerier, "IBC not supported") } return nil, wasmvmtypes.Unknown{} diff --git a/x/wasm/types/wasm.pb.go b/x/wasm/types/wasm.pb.go index 4ac854595..ac47cd626 100644 --- a/x/wasm/types/wasm.pb.go +++ b/x/wasm/types/wasm.pb.go @@ -238,6 +238,8 @@ type ContractInfo struct { InitMsg encoding_json.RawMessage `protobuf:"bytes,4,opt,name=init_msg,json=initMsg,proto3,casttype=encoding/json.RawMessage" json:"init_msg,omitempty" yaml:"init_msg"` // Migratable is the flag to specify the contract migratability Migratable bool `protobuf:"varint,5,opt,name=migratable,proto3" json:"migratable,omitempty" yaml:"migratable"` + // IBCPortID is the ID used in ibc communication + IBCPortID string `protobuf:"bytes,6,opt,name=ibc_port_id,json=ibcPortId,proto3" json:"ibc_port_id,omitempty" yaml:"ibc_port_id"` } func (m *ContractInfo) Reset() { *m = ContractInfo{} } @@ -308,6 +310,13 @@ func (m *ContractInfo) GetMigratable() bool { return false } +func (m *ContractInfo) GetIBCPortID() string { + if m != nil { + return m.IBCPortID + } + return "" +} + func init() { proto.RegisterType((*Params)(nil), "terra.wasm.v1beta1.Params") proto.RegisterType((*EventParams)(nil), "terra.wasm.v1beta1.EventParams") @@ -318,53 +327,55 @@ func init() { func init() { proto.RegisterFile("terra/wasm/v1beta1/wasm.proto", fileDescriptor_2bd5d0123068c880) } var fileDescriptor_2bd5d0123068c880 = []byte{ - // 721 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0x4d, 0x4f, 0x1b, 0x39, - 0x18, 0xc7, 0x33, 0xbc, 0x24, 0xc1, 0x44, 0xbc, 0x18, 0x58, 0x22, 0x5e, 0x62, 0xd6, 0x87, 0x5d, - 0xb4, 0xcb, 0x66, 0x16, 0x76, 0xb9, 0x70, 0xdb, 0x01, 0xb4, 0xb0, 0x5b, 0xaa, 0xca, 0x48, 0x54, - 0xea, 0x25, 0x72, 0x66, 0xdc, 0xc9, 0x40, 0x66, 0x9c, 0x8e, 0x1d, 0x20, 0x7c, 0x8a, 0x1e, 0x7b, - 0x44, 0x55, 0xbf, 0x40, 0xbf, 0x05, 0x87, 0x1e, 0x38, 0xf6, 0x64, 0x55, 0xe1, 0xd2, 0xf3, 0x1c, - 0x7b, 0xaa, 0x62, 0x67, 0x60, 0x22, 0x72, 0xa0, 0x37, 0xe7, 0xf9, 0xff, 0xfd, 0xfb, 0x3f, 0xf6, - 0x13, 0x0f, 0x58, 0x95, 0x2c, 0x8e, 0xa9, 0x7d, 0x41, 0x45, 0x68, 0x9f, 0x6f, 0xd6, 0x99, 0xa4, - 0x9b, 0xfa, 0x47, 0xb5, 0x15, 0x73, 0xc9, 0x21, 0xd4, 0x72, 0x55, 0x57, 0xfa, 0xf2, 0xd2, 0xbc, - 0xcf, 0x7d, 0xae, 0x65, 0xbb, 0xb7, 0x32, 0xce, 0xa5, 0x8a, 0xcb, 0x45, 0xc8, 0x85, 0x5d, 0xa7, - 0x82, 0xdd, 0x93, 0x5c, 0x1e, 0x44, 0x46, 0xc7, 0x1f, 0x47, 0x41, 0xfe, 0x05, 0x8d, 0x69, 0x28, - 0xe0, 0x01, 0x98, 0x0d, 0xe9, 0x65, 0xcd, 0xe5, 0x91, 0x8c, 0xa9, 0x2b, 0x6b, 0x22, 0xb8, 0x62, - 0x65, 0x6b, 0xcd, 0x5a, 0x1f, 0x73, 0x56, 0x12, 0x85, 0xca, 0x1d, 0x1a, 0x36, 0x77, 0xf0, 0x23, - 0x0b, 0x26, 0xd3, 0x21, 0xbd, 0xdc, 0xed, 0x97, 0x8e, 0x83, 0x2b, 0x06, 0xf7, 0xc1, 0xcc, 0x80, - 0xcd, 0xa7, 0xa2, 0x3c, 0xa2, 0x41, 0xcb, 0x89, 0x42, 0x8b, 0x43, 0x40, 0x3e, 0x15, 0x98, 0x4c, - 0x65, 0x38, 0xff, 0x52, 0x01, 0x8f, 0xc1, 0xc2, 0x80, 0x29, 0x14, 0xbe, 0x69, 0x6a, 0x54, 0xb3, - 0xd6, 0x12, 0x85, 0x56, 0x86, 0xb0, 0x52, 0x1b, 0x26, 0x30, 0x03, 0x3c, 0x12, 0xbe, 0xee, 0xed, - 0x04, 0xfc, 0x34, 0xe0, 0xf6, 0xa8, 0xa4, 0x86, 0x3a, 0xa6, 0xa9, 0x3f, 0x27, 0x0a, 0xad, 0x0e, - 0xa1, 0xde, 0xfb, 0x30, 0x99, 0xcb, 0x60, 0xf7, 0xa8, 0xa4, 0x9a, 0x5b, 0x03, 0x25, 0x76, 0xce, - 0x22, 0x59, 0x6b, 0xe9, 0xdb, 0x2c, 0x8f, 0xaf, 0x59, 0xeb, 0x93, 0x5b, 0xa8, 0xfa, 0x78, 0x52, - 0xd5, 0xfd, 0x9e, 0xcf, 0x5c, 0xba, 0xb3, 0x7c, 0xa3, 0x50, 0x2e, 0x51, 0x68, 0xce, 0x44, 0x66, - 0x11, 0x98, 0x4c, 0xb2, 0x07, 0xe7, 0x4e, 0xf1, 0xdd, 0x35, 0xca, 0x7d, 0xbd, 0x46, 0x16, 0xfe, - 0x34, 0x02, 0x26, 0x33, 0x0c, 0xf8, 0xd2, 0x0c, 0x8e, 0x4a, 0x19, 0x07, 0xf5, 0xb6, 0x64, 0xb5, - 0xa8, 0x1d, 0xf6, 0x07, 0xf7, 0x7b, 0xa2, 0xd0, 0xaf, 0x43, 0x4e, 0x63, 0x72, 0x06, 0x76, 0x98, - 0x39, 0xfe, 0x93, 0x96, 0x9e, 0xb7, 0x43, 0x78, 0x06, 0xca, 0x83, 0xe0, 0x33, 0xd6, 0xa9, 0x35, - 0x59, 0xe4, 0xcb, 0x46, 0x7f, 0x9e, 0x5b, 0x89, 0x42, 0xd5, 0x27, 0xf0, 0x1f, 0x36, 0x62, 0xb2, - 0x90, 0x8d, 0xf9, 0x9f, 0x75, 0x9e, 0xe9, 0x3a, 0x7c, 0x03, 0x96, 0x06, 0xc3, 0xce, 0x69, 0xb3, - 0xcd, 0xd2, 0x38, 0x33, 0xf2, 0xbf, 0x13, 0x85, 0xfe, 0x7c, 0x42, 0x5c, 0x76, 0x2b, 0x26, 0x8b, - 0xd9, 0xc0, 0x93, 0x9e, 0x64, 0x22, 0x77, 0xc6, 0xf4, 0x75, 0xbe, 0xb7, 0x40, 0x71, 0x97, 0x7b, - 0xec, 0x30, 0x7a, 0xcd, 0xe1, 0x36, 0x28, 0xb8, 0xdc, 0x63, 0xb5, 0xc0, 0x4b, 0xff, 0xfa, 0x5d, - 0x85, 0xf2, 0x5a, 0xde, 0x4b, 0x14, 0x9a, 0x32, 0xe1, 0x7d, 0x0b, 0x26, 0xf9, 0xde, 0xea, 0xd0, - 0x83, 0x9b, 0x60, 0x42, 0xd7, 0x1a, 0x54, 0x98, 0xab, 0x29, 0x39, 0xf3, 0x89, 0x42, 0x33, 0x19, - 0x7b, 0x4f, 0xc2, 0xa4, 0xd8, 0x5b, 0x1f, 0x50, 0xd1, 0x80, 0x1b, 0xa0, 0xe0, 0xc6, 0x8c, 0x4a, - 0x1e, 0xeb, 0xc3, 0x4d, 0x38, 0x30, 0xc3, 0x37, 0x02, 0x26, 0xa9, 0x05, 0x7f, 0x18, 0x01, 0xa5, - 0xf4, 0x3f, 0xa7, 0x1b, 0xdd, 0x00, 0x05, 0xea, 0x79, 0x31, 0x13, 0x42, 0x37, 0x3a, 0xb0, 0xbd, - 0x2f, 0x60, 0x92, 0x5a, 0xe0, 0x2f, 0x60, 0x9c, 0x5f, 0x44, 0x2c, 0xd6, 0xbd, 0x4d, 0x38, 0x33, - 0x89, 0x42, 0x25, 0xe3, 0xd5, 0x65, 0x4c, 0x8c, 0x9c, 0x3d, 0xfe, 0xe8, 0x0f, 0x1c, 0xff, 0x3f, - 0x50, 0x0c, 0xa2, 0x40, 0x3f, 0x3d, 0xfd, 0x8c, 0x4a, 0x8e, 0x9d, 0x28, 0x34, 0x6d, 0xdc, 0xa9, - 0x82, 0xbf, 0x29, 0x54, 0x66, 0x91, 0xcb, 0xbd, 0x20, 0xf2, 0xed, 0x53, 0xc1, 0xa3, 0x2a, 0xa1, - 0x17, 0x47, 0x4c, 0x08, 0xea, 0x33, 0x52, 0xe8, 0xd9, 0x8e, 0x84, 0x0f, 0xb7, 0x01, 0x08, 0x03, - 0x3f, 0xa6, 0x92, 0xd6, 0x9b, 0x4c, 0x3f, 0xa3, 0xa2, 0xb3, 0x90, 0x28, 0x34, 0xdb, 0x9f, 0xfb, - 0xbd, 0x86, 0x49, 0xc6, 0x68, 0x66, 0xe9, 0xec, 0xdd, 0x74, 0x2b, 0xd6, 0x6d, 0xb7, 0x62, 0x7d, - 0xe9, 0x56, 0xac, 0xb7, 0x77, 0x95, 0xdc, 0xed, 0x5d, 0x25, 0xf7, 0xf9, 0xae, 0x92, 0x7b, 0xf5, - 0x9b, 0x1f, 0xc8, 0x46, 0xbb, 0x5e, 0x75, 0x79, 0x68, 0xeb, 0x37, 0xf9, 0x47, 0x2b, 0xe6, 0xa7, - 0xcc, 0x95, 0xb6, 0xcb, 0x63, 0x66, 0x5f, 0x9a, 0x6f, 0xad, 0xec, 0xb4, 0x98, 0xa8, 0xe7, 0xf5, - 0xb7, 0xf1, 0xaf, 0xef, 0x01, 0x00, 0x00, 0xff, 0xff, 0x85, 0xee, 0xeb, 0x75, 0x86, 0x05, 0x00, - 0x00, + // 760 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xcf, 0x6f, 0xe4, 0x34, + 0x14, 0xc7, 0x27, 0x6d, 0x77, 0x7e, 0x78, 0x46, 0xbb, 0x5d, 0xef, 0x96, 0x1d, 0x75, 0x77, 0xc7, + 0xc5, 0x48, 0xb0, 0x82, 0x65, 0x42, 0x17, 0xf6, 0xd2, 0x1b, 0x99, 0xae, 0x68, 0x81, 0xa2, 0xca, + 0x95, 0x8a, 0xc4, 0x25, 0x72, 0x12, 0x93, 0x49, 0x3b, 0x89, 0x87, 0xd8, 0xd3, 0x76, 0xfa, 0x57, + 0x70, 0xe4, 0x58, 0xf1, 0x1f, 0xf0, 0x5f, 0xf4, 0xc0, 0xa1, 0x47, 0x4e, 0x16, 0x9a, 0x5e, 0xe0, + 0x9a, 0x23, 0x27, 0x14, 0x3b, 0x69, 0x33, 0xea, 0x1c, 0xba, 0x37, 0xe7, 0x7d, 0x3f, 0xfe, 0xbe, + 0xf7, 0xfc, 0xec, 0x80, 0x97, 0x92, 0xa5, 0x29, 0xb5, 0x4f, 0xa9, 0x88, 0xed, 0x93, 0x4d, 0x8f, + 0x49, 0xba, 0xa9, 0x3f, 0xfa, 0xe3, 0x94, 0x4b, 0x0e, 0xa1, 0x96, 0xfb, 0x3a, 0x52, 0xc8, 0xeb, + 0x4f, 0x43, 0x1e, 0x72, 0x2d, 0xdb, 0xf9, 0xca, 0x90, 0xeb, 0x3d, 0x9f, 0x8b, 0x98, 0x0b, 0xdb, + 0xa3, 0x82, 0xdd, 0x38, 0xf9, 0x3c, 0x4a, 0x8c, 0x8e, 0xff, 0x58, 0x06, 0xf5, 0x7d, 0x9a, 0xd2, + 0x58, 0xc0, 0x1d, 0xf0, 0x38, 0xa6, 0x67, 0xae, 0xcf, 0x13, 0x99, 0x52, 0x5f, 0xba, 0x22, 0x3a, + 0x67, 0x5d, 0x6b, 0xc3, 0x7a, 0xb5, 0xe2, 0xbc, 0xc8, 0x14, 0xea, 0x4e, 0x69, 0x3c, 0xda, 0xc2, + 0x77, 0x10, 0x4c, 0x1e, 0xc5, 0xf4, 0x6c, 0x50, 0x84, 0x0e, 0xa2, 0x73, 0x06, 0xdf, 0x81, 0xd5, + 0x39, 0x2c, 0xa4, 0xa2, 0xbb, 0xa4, 0x8d, 0x9e, 0x67, 0x0a, 0x3d, 0x5b, 0x60, 0x14, 0x52, 0x81, + 0xc9, 0xc3, 0x8a, 0xcf, 0x37, 0x54, 0xc0, 0x03, 0xb0, 0x36, 0x07, 0xc5, 0x22, 0x34, 0x45, 0x2d, + 0x6b, 0xaf, 0x8d, 0x4c, 0xa1, 0x17, 0x0b, 0xbc, 0x4a, 0x0c, 0x13, 0x58, 0x31, 0xdc, 0x13, 0xa1, + 0xae, 0xed, 0x10, 0x7c, 0x30, 0x47, 0x07, 0x54, 0x52, 0xe3, 0xba, 0xa2, 0x5d, 0x3f, 0xcc, 0x14, + 0x7a, 0xb9, 0xc0, 0xf5, 0x86, 0xc3, 0xe4, 0x49, 0xc5, 0x76, 0x9b, 0x4a, 0xaa, 0x7d, 0x5d, 0xd0, + 0x61, 0x27, 0x2c, 0x91, 0xee, 0x58, 0x9f, 0x66, 0xf7, 0xc1, 0x86, 0xf5, 0xaa, 0xfd, 0x06, 0xf5, + 0xef, 0x4e, 0xaa, 0xff, 0x2e, 0xe7, 0xcc, 0xa1, 0x3b, 0xcf, 0x2f, 0x15, 0xaa, 0x65, 0x0a, 0x3d, + 0x31, 0x29, 0xab, 0x16, 0x98, 0xb4, 0xd9, 0x2d, 0xb9, 0xd5, 0xfc, 0xed, 0x02, 0xd5, 0xfe, 0xb9, + 0x40, 0x16, 0xfe, 0x73, 0x09, 0xb4, 0x2b, 0x1e, 0xf0, 0x47, 0x33, 0x38, 0x2a, 0x65, 0x1a, 0x79, + 0x13, 0xc9, 0xdc, 0x64, 0x12, 0x17, 0x83, 0xfb, 0x2c, 0x53, 0xe8, 0x93, 0x05, 0xdd, 0x98, 0x3c, + 0x73, 0x3b, 0xcc, 0x1c, 0xbf, 0x2e, 0x43, 0x3f, 0x4c, 0x62, 0x78, 0x0c, 0xba, 0xf3, 0xc6, 0xc7, + 0x6c, 0xea, 0x8e, 0x58, 0x12, 0xca, 0x61, 0x31, 0xcf, 0x37, 0x99, 0x42, 0xfd, 0x7b, 0xf8, 0xdf, + 0x6e, 0xc4, 0x64, 0xad, 0x9a, 0xe6, 0x3b, 0x36, 0xfd, 0x5e, 0xc7, 0xe1, 0x2f, 0x60, 0x7d, 0x3e, + 0xd9, 0x09, 0x1d, 0x4d, 0x58, 0x99, 0xce, 0x8c, 0xfc, 0xab, 0x4c, 0xa1, 0x2f, 0xee, 0x91, 0xae, + 0xba, 0x15, 0x93, 0x67, 0xd5, 0x84, 0x87, 0xb9, 0x64, 0x52, 0x6e, 0xad, 0xe8, 0xe3, 0xfc, 0xdd, + 0x02, 0xcd, 0x01, 0x0f, 0xd8, 0x6e, 0xf2, 0x33, 0x87, 0x6f, 0x41, 0xc3, 0xe7, 0x01, 0x73, 0xa3, + 0xa0, 0xbc, 0xfa, 0x33, 0x85, 0xea, 0x5a, 0xde, 0xce, 0x14, 0x7a, 0x68, 0x92, 0x17, 0x08, 0x26, + 0xf5, 0x7c, 0xb5, 0x1b, 0xc0, 0x4d, 0xd0, 0xd2, 0xb1, 0x21, 0x15, 0xe6, 0x68, 0x3a, 0xce, 0xd3, + 0x4c, 0xa1, 0xd5, 0x0a, 0x9e, 0x4b, 0x98, 0x34, 0xf3, 0xf5, 0x0e, 0x15, 0x43, 0xf8, 0x1a, 0x34, + 0xfc, 0x94, 0x51, 0xc9, 0x53, 0xdd, 0x5c, 0xcb, 0x81, 0x15, 0x7f, 0x23, 0x60, 0x52, 0x22, 0xf8, + 0xdf, 0x25, 0xd0, 0x29, 0xef, 0x9c, 0x2e, 0xf4, 0x35, 0x68, 0xd0, 0x20, 0x48, 0x99, 0x10, 0xba, + 0xd0, 0xb9, 0xed, 0x85, 0x80, 0x49, 0x89, 0xc0, 0x8f, 0xc1, 0x03, 0x7e, 0x9a, 0xb0, 0x54, 0xd7, + 0xd6, 0x72, 0x56, 0x33, 0x85, 0x3a, 0x86, 0xd5, 0x61, 0x4c, 0x8c, 0x5c, 0x6d, 0x7f, 0xf9, 0x3d, + 0xda, 0xff, 0x16, 0x34, 0xa3, 0x24, 0xd2, 0x4f, 0x4f, 0x3f, 0xa3, 0x8e, 0x63, 0x67, 0x0a, 0x3d, + 0x32, 0x74, 0xa9, 0xe0, 0xff, 0x14, 0xea, 0xb2, 0xc4, 0xe7, 0x41, 0x94, 0x84, 0xf6, 0x91, 0xe0, + 0x49, 0x9f, 0xd0, 0xd3, 0x3d, 0x26, 0x04, 0x0d, 0x19, 0x69, 0xe4, 0xd8, 0x9e, 0x08, 0xe1, 0x5b, + 0x00, 0xe2, 0x28, 0x4c, 0xa9, 0xa4, 0xde, 0x88, 0xe9, 0x67, 0xd4, 0x74, 0xd6, 0x32, 0x85, 0x1e, + 0x17, 0x73, 0xbf, 0xd1, 0x30, 0xa9, 0x80, 0x70, 0x00, 0xda, 0x91, 0xe7, 0xbb, 0x63, 0x9e, 0xca, + 0xbc, 0xfa, 0xba, 0xee, 0xf3, 0xa3, 0x99, 0x42, 0xad, 0x5d, 0x67, 0xb0, 0xcf, 0x53, 0xa9, 0x1b, + 0x80, 0x45, 0x49, 0xb7, 0x24, 0x26, 0xad, 0xc8, 0xf3, 0x35, 0x10, 0x98, 0x0b, 0xe1, 0x6c, 0x5f, + 0xce, 0x7a, 0xd6, 0xd5, 0xac, 0x67, 0xfd, 0x3d, 0xeb, 0x59, 0xbf, 0x5e, 0xf7, 0x6a, 0x57, 0xd7, + 0xbd, 0xda, 0x5f, 0xd7, 0xbd, 0xda, 0x4f, 0x9f, 0x86, 0x91, 0x1c, 0x4e, 0xbc, 0xbe, 0xcf, 0x63, + 0x5b, 0x3f, 0xec, 0xcf, 0xc7, 0x29, 0x3f, 0x62, 0xbe, 0xb4, 0x7d, 0x9e, 0x32, 0xfb, 0xcc, 0xfc, + 0xb0, 0xe5, 0x74, 0xcc, 0x84, 0x57, 0xd7, 0x3f, 0xd8, 0x2f, 0xff, 0x0f, 0x00, 0x00, 0xff, 0xff, + 0xb2, 0xe9, 0x01, 0x15, 0xcb, 0x05, 0x00, 0x00, } func (this *Params) Equal(that interface{}) bool { @@ -467,6 +478,9 @@ func (this *ContractInfo) Equal(that interface{}) bool { if this.Migratable != that1.Migratable { return false } + if this.IBCPortID != that1.IBCPortID { + return false + } return true } func (m *Params) Marshal() (dAtA []byte, err error) { @@ -622,6 +636,13 @@ func (m *ContractInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.IBCPortID) > 0 { + i -= len(m.IBCPortID) + copy(dAtA[i:], m.IBCPortID) + i = encodeVarintWasm(dAtA, i, uint64(len(m.IBCPortID))) + i-- + dAtA[i] = 0x32 + } if m.Migratable { i-- if m.Migratable { @@ -757,6 +778,10 @@ func (m *ContractInfo) Size() (n int) { if m.Migratable { n += 2 } + l = len(m.IBCPortID) + if l > 0 { + n += 1 + l + sovWasm(uint64(l)) + } return n } @@ -1333,6 +1358,38 @@ func (m *ContractInfo) Unmarshal(dAtA []byte) error { } } m.Migratable = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IBCPortID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowWasm + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthWasm + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthWasm + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IBCPortID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipWasm(dAtA[iNdEx:]) diff --git a/x/wasm/types/wasmer_engine.go b/x/wasm/types/wasmer_engine.go index 88cde387f..2f7d29888 100644 --- a/x/wasm/types/wasmer_engine.go +++ b/x/wasm/types/wasmer_engine.go @@ -107,4 +107,7 @@ type WasmerEngine interface { // and the larger binary blobs (wasm and pre-compiles) are all managed by the // rust library GetCode(code wasmvm.Checksum) (wasmvm.WasmCode, error) + + // Cleanup should be called when no longer using this to free resources on the rust-side + Cleanup() }