From 5259e0e0a922871a1fc9343a0da00c0f3d805c83 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Tue, 1 Jun 2021 08:39:00 +0200 Subject: [PATCH 01/90] Use interface for better decoupling --- x/wasm/keeper/keeper.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 976ad7d728..90437177b6 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -11,7 +11,6 @@ import ( "github.com/line/lbm-sdk/store/prefix" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" - authkeeper "github.com/line/lbm-sdk/x/auth/keeper" paramtypes "github.com/line/lbm-sdk/x/params/types" "github.com/line/lbm-sdk/x/wasm/types" "github.com/line/ostracon/crypto" @@ -77,7 +76,7 @@ func NewKeeper( cdc codec.Marshaler, storeKey sdk.StoreKey, paramSpace *paramtypes.Subspace, - accountKeeper authkeeper.AccountKeeper, + accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper, stakingKeeper types.StakingKeeper, distKeeper types.DistributionKeeper, From e05d7861a1e7d36bee4a659638a603a5ce153fb0 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Tue, 1 Jun 2021 10:42:07 +0200 Subject: [PATCH 02/90] Allow access to contract address builder --- x/wasm/client/cli/genesis_msg.go | 13 ++------ x/wasm/client/cli/genesis_msg_test.go | 8 ++--- x/wasm/keeper/genesis_test.go | 20 +++++------ x/wasm/keeper/ibc_test.go | 2 +- x/wasm/keeper/keeper.go | 17 ++++++---- x/wasm/keeper/keeper_test.go | 39 ++++++++++++++++++++++ x/wasm/keeper/proposal_integration_test.go | 6 ++-- x/wasm/keeper/querier_test.go | 2 +- x/wasm/types/types_test.go | 2 +- 9 files changed, 72 insertions(+), 37 deletions(-) diff --git a/x/wasm/client/cli/genesis_msg.go b/x/wasm/client/cli/genesis_msg.go index 463bdc0c1b..afe9468391 100644 --- a/x/wasm/client/cli/genesis_msg.go +++ b/x/wasm/client/cli/genesis_msg.go @@ -8,6 +8,7 @@ import ( "encoding/json" "errors" "fmt" + "github.com/line/lbm-sdk/x/wasm/keeper" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" @@ -317,7 +318,7 @@ func getAllContracts(state *types.GenesisState) []contractMeta { for _, m := range state.GenMsgs { if msg := m.GetInstantiateContract(); msg != nil { all = append(all, contractMeta{ - ContractAddress: contractAddress(msg.CodeID, seq).String(), + ContractAddress: keeper.BuildContractAddress(msg.CodeID, seq).String(), Info: types.ContractInfo{ CodeID: msg.CodeID, Creator: msg.Sender, @@ -358,7 +359,7 @@ func hasContract(state *types.GenesisState, contractAddr string) bool { seq := contractSeqValue(state) for _, m := range state.GenMsgs { if msg := m.GetInstantiateContract(); msg != nil { - if contractAddress(msg.CodeID, seq).String() == contractAddr { + if keeper.BuildContractAddress(msg.CodeID, seq).String() == contractAddr { return true } seq++ @@ -511,14 +512,6 @@ func getActorAddress(cmd *cobra.Command) (sdk.AccAddress, error) { return info.GetAddress(), nil } -// contractAddress builds a contract address. copied from keeper -func contractAddress(codeID, 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) -} - // addrFromUint64 is a helper for address generation, copied from keeper func addrFromUint64(id uint64) sdk.AccAddress { addr := make([]byte, 20) diff --git a/x/wasm/client/cli/genesis_msg_test.go b/x/wasm/client/cli/genesis_msg_test.go index 0d1c847e18..d73e602d4a 100644 --- a/x/wasm/client/cli/genesis_msg_test.go +++ b/x/wasm/client/cli/genesis_msg_test.go @@ -552,11 +552,11 @@ func TestGetAllContracts(t *testing.T) { }, exp: []contractMeta{ { - ContractAddress: contractAddress(0, 1).String(), + ContractAddress: keeper.BuildContractAddress(0, 1).String(), Info: types.ContractInfo{Label: "first"}, }, { - ContractAddress: contractAddress(0, 2).String(), + ContractAddress: keeper.BuildContractAddress(0, 2).String(), Info: types.ContractInfo{Label: "second"}, }, }, @@ -572,7 +572,7 @@ func TestGetAllContracts(t *testing.T) { }, exp: []contractMeta{ { - ContractAddress: contractAddress(0, 100).String(), + ContractAddress: keeper.BuildContractAddress(0, 100).String(), Info: types.ContractInfo{Label: "hundred"}, }, }, @@ -598,7 +598,7 @@ func TestGetAllContracts(t *testing.T) { Info: types.ContractInfo{Label: "first"}, }, { - ContractAddress: contractAddress(0, 100).String(), + ContractAddress: keeper.BuildContractAddress(0, 100).String(), Info: types.ContractInfo{Label: "hundred"}, }, }, diff --git a/x/wasm/keeper/genesis_test.go b/x/wasm/keeper/genesis_test.go index 744883f822..96fc397289 100644 --- a/x/wasm/keeper/genesis_test.go +++ b/x/wasm/keeper/genesis_test.go @@ -261,7 +261,7 @@ func TestGenesisInit(t *testing.T) { }}, Contracts: []types.Contract{ { - ContractAddress: contractAddress(1, 1).String(), + ContractAddress: BuildContractAddress(1, 1).String(), ContractInfo: types.ContractInfoFixture(func(c *wasmTypes.ContractInfo) { c.CodeID = 1 }, types.OnlyGenesisFields), }, }, @@ -282,10 +282,10 @@ func TestGenesisInit(t *testing.T) { }}, Contracts: []types.Contract{ { - ContractAddress: contractAddress(1, 1).String(), + ContractAddress: BuildContractAddress(1, 1).String(), ContractInfo: types.ContractInfoFixture(func(c *wasmTypes.ContractInfo) { c.CodeID = 1 }, types.OnlyGenesisFields), }, { - ContractAddress: contractAddress(1, 2).String(), + ContractAddress: BuildContractAddress(1, 2).String(), ContractInfo: types.ContractInfoFixture(func(c *wasmTypes.ContractInfo) { c.CodeID = 1 }, types.OnlyGenesisFields), }, }, @@ -301,7 +301,7 @@ func TestGenesisInit(t *testing.T) { src: types.GenesisState{ Contracts: []types.Contract{ { - ContractAddress: contractAddress(1, 1).String(), + ContractAddress: BuildContractAddress(1, 1).String(), ContractInfo: types.ContractInfoFixture(func(c *wasmTypes.ContractInfo) { c.CodeID = 1 }, types.OnlyGenesisFields), }, }, @@ -317,10 +317,10 @@ func TestGenesisInit(t *testing.T) { }}, Contracts: []types.Contract{ { - ContractAddress: contractAddress(1, 1).String(), + ContractAddress: BuildContractAddress(1, 1).String(), ContractInfo: types.ContractInfoFixture(func(c *wasmTypes.ContractInfo) { c.CodeID = 1 }, types.OnlyGenesisFields), }, { - ContractAddress: contractAddress(1, 1).String(), + ContractAddress: BuildContractAddress(1, 1).String(), ContractInfo: types.ContractInfoFixture(func(c *wasmTypes.ContractInfo) { c.CodeID = 1 }, types.OnlyGenesisFields), }, }, @@ -336,7 +336,7 @@ func TestGenesisInit(t *testing.T) { }}, Contracts: []types.Contract{ { - ContractAddress: contractAddress(1, 1).String(), + ContractAddress: BuildContractAddress(1, 1).String(), ContractInfo: types.ContractInfoFixture(func(c *wasmTypes.ContractInfo) { c.CodeID = 1 }, types.OnlyGenesisFields), ContractState: []types.Model{ { @@ -384,7 +384,7 @@ func TestGenesisInit(t *testing.T) { }}, Contracts: []types.Contract{ { - ContractAddress: contractAddress(1, 1).String(), + ContractAddress: BuildContractAddress(1, 1).String(), ContractInfo: types.ContractInfoFixture(func(c *wasmTypes.ContractInfo) { c.CodeID = 1 }, types.OnlyGenesisFields), }, }, @@ -604,7 +604,7 @@ func TestSupportedGenMsgTypes(t *testing.T) { Sum: &types.GenesisState_GenMsgs_ExecuteContract{ ExecuteContract: &types.MsgExecuteContract{ Sender: verifierAddress.String(), - Contract: contractAddress(1, 1).String(), + Contract: BuildContractAddress(1, 1).String(), Msg: []byte(`{"release":{}}`), }, }, @@ -628,7 +628,7 @@ func TestSupportedGenMsgTypes(t *testing.T) { require.NotNil(t, codeInfo) // verify contract instantiated - cInfo := keeper.GetContractInfo(ctx, contractAddress(1, 1)) + cInfo := keeper.GetContractInfo(ctx, BuildContractAddress(1, 1)) require.NotNil(t, cInfo) // verify contract executed diff --git a/x/wasm/keeper/ibc_test.go b/x/wasm/keeper/ibc_test.go index f8ce1e7eba..074b0f7d52 100644 --- a/x/wasm/keeper/ibc_test.go +++ b/x/wasm/keeper/ibc_test.go @@ -41,7 +41,7 @@ func TestBindingPortForIBCContractOnInstantiate(t *testing.T) { } func TestContractFromPortID(t *testing.T) { - contractAddr := contractAddress(1, 100) + contractAddr := BuildContractAddress(1, 100) specs := map[string]struct { srcPort string expAddr sdk.AccAddress diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 90437177b6..46b85baf27 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -4,6 +4,7 @@ import ( "bytes" "encoding/binary" "fmt" + "math" "path/filepath" "time" @@ -276,7 +277,7 @@ func (k Keeper) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.A info := types.NewInfo(creator, deposit) // create prefixed data store - // 0x03 | contractAddress (sdk.AccAddress) + // 0x03 | BuildContractAddress (sdk.AccAddress) prefixStoreKey := types.GetContractStorePrefix(contractAddress) prefixStore := prefix.NewStore(ctx.KVStore(k.storeKey), prefixStoreKey) wasmStore := types.NewWasmStore(prefixStore) @@ -878,14 +879,16 @@ func (k Keeper) consumeGas(ctx sdk.Context, gas uint64) { // generates a contract address from codeID + instanceID func (k Keeper) generateContractAddress(ctx sdk.Context, codeID uint64) sdk.AccAddress { instanceID := k.autoIncrementID(ctx, types.KeyLastInstanceID) - return contractAddress(codeID, instanceID) + return BuildContractAddress(codeID, instanceID) } -// contractAddress builds an sdk account address for a contract. -// Intentionally kept private as this is module internal logic. -func contractAddress(codeID, 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. +// BuildContractAddress builds an sdk account address for a contract. +func BuildContractAddress(codeID, instanceID uint64) sdk.AccAddress { + if codeID > math.MaxUint32 || instanceID > math.MaxUint32 { + // 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. + panic(fmt.Sprintf("address uint32 reached: codeID: %d, instanceID: %d", codeID, instanceID)) + } contractID := codeID<<32 + instanceID return addrFromUint64(contractID) } diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 3e19a2250c..73231db00f 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "io/ioutil" + "math" "testing" "time" @@ -1726,5 +1727,43 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { assert.Equal(t, spec.expData, gotData) }) } +} +func TestBuildContractAddress(t *testing.T) { + specs := map[string]struct { + srcCodeID uint64 + srcInstanceID uint64 + expPanic bool + }{ + "both empty": {}, + "both below max": { + srcCodeID: math.MaxUint32 - 1, + srcInstanceID: math.MaxUint32 - 1, + }, + "both at max": { + srcCodeID: math.MaxUint32, + srcInstanceID: math.MaxUint32, + }, + "codeID > max": { + srcCodeID: math.MaxUint32 + 1, + expPanic: true, + }, + "instanceID > max": { + srcInstanceID: math.MaxUint32 + 1, + expPanic: true, + }, + } + for name, spec := range specs { + t.Run(name, func(t *testing.T) { + if spec.expPanic { + require.Panics(t, func() { + BuildContractAddress(spec.srcCodeID, spec.srcInstanceID) + }) + return + } + gotAddr := BuildContractAddress(spec.srcCodeID, spec.srcInstanceID) + require.NotNil(t, gotAddr) + assert.Nil(t, sdk.ValidateAccAddress(gotAddr.String())) + }) + } } diff --git a/x/wasm/keeper/proposal_integration_test.go b/x/wasm/keeper/proposal_integration_test.go index ded83fe1f1..a7f3d6e198 100644 --- a/x/wasm/keeper/proposal_integration_test.go +++ b/x/wasm/keeper/proposal_integration_test.go @@ -147,7 +147,7 @@ func TestMigrateProposal(t *testing.T) { var ( anyAddress = sdk.BytesToAccAddress(bytes.Repeat([]byte{0x1}, sdk.BytesAddrLen)) otherAddress = sdk.BytesToAccAddress(bytes.Repeat([]byte{0x2}, sdk.BytesAddrLen)) - contractAddr = contractAddress(1, 1) + contractAddr = BuildContractAddress(1, 1) ) contractInfoFixture := types.ContractInfoFixture(func(c *types.ContractInfo) { @@ -206,7 +206,7 @@ func TestMigrateProposal(t *testing.T) { func TestAdminProposals(t *testing.T) { var ( otherAddress = sdk.BytesToAccAddress(bytes.Repeat([]byte{0x2}, sdk.BytesAddrLen)) - contractAddr = contractAddress(1, 1) + contractAddr = BuildContractAddress(1, 1) ) wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) @@ -542,7 +542,7 @@ func TestUnpinCodesProposal(t *testing.T) { } func TestUpdateContractStatusProposals(t *testing.T) { - var contractAddr = contractAddress(1, 1) + var contractAddr = BuildContractAddress(1, 1) wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index 0f365b3b4c..f1c2ac2fa1 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -156,7 +156,7 @@ func TestQuerySmartContractState(t *testing.T) { func TestQuerySmartContractPanics(t *testing.T) { ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) - contractAddr := contractAddress(1, 1) + contractAddr := BuildContractAddress(1, 1) keepers.WasmKeeper.storeCodeInfo(ctx, 1, types.CodeInfo{}) keepers.WasmKeeper.storeContractInfo(ctx, contractAddr, &types.ContractInfo{ CodeID: 1, diff --git a/x/wasm/types/types_test.go b/x/wasm/types/types_test.go index e6160c0472..fc56549ba4 100644 --- a/x/wasm/types/types_test.go +++ b/x/wasm/types/types_test.go @@ -193,7 +193,7 @@ func TestContractInfoSetExtension(t *testing.T) { } func TestContractInfoMarshalUnmarshal(t *testing.T) { - var myAddr = sdk.BytesToAccAddress(rand.Bytes(sdk.BytesAddrLen)) + var myAddr = sdk.BytesToAccAddress(rand.Bytes(sdk.BytesAddrLen)) var myOtherAddr = sdk.BytesToAccAddress(rand.Bytes(sdk.BytesAddrLen)) var anyPos = AbsoluteTxPosition{BlockHeight: 1, TxIndex: 2} From a170260b8399855d18684159941e14c537661ba0 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Mon, 7 Jun 2021 11:28:10 +0200 Subject: [PATCH 03/90] Test Pinned contract does not loop forever --- x/wasm/keeper/keeper_test.go | 44 +++++++++++++++++++++++++++++++++ x/wasm/keeper/msg_dispatcher.go | 2 +- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 73231db00f..daebca3358 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -1643,6 +1643,50 @@ func TestInitializePinnedCodes(t *testing.T) { } } +func TestPinnedContractLoops(t *testing.T) { + // a pinned contract that calls itself via submessages should terminate with an + // error at some point + ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) + k := keepers.WasmKeeper + + var capturedChecksums []wasmvm.Checksum + mock := wasmtesting.MockWasmer{PinFn: func(checksum wasmvm.Checksum) error { + capturedChecksums = append(capturedChecksums, checksum) + return nil + }} + wasmtesting.MakeInstantiable(&mock) + example := SeedNewContractInstance(t, ctx, keepers, &mock) + require.NoError(t, k.pinCode(ctx, example.CodeID)) + var loops int + anyMsg := []byte(`{}`) + mock.ExecuteFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, info wasmvmtypes.MessageInfo, executeMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.Response, uint64, error) { + loops++ + return &wasmvmtypes.Response{ + Submessages: []wasmvmtypes.SubMsg{ + { + ID: 1, + ReplyOn: wasmvmtypes.ReplyError, + Msg: wasmvmtypes.CosmosMsg{ + Wasm: &wasmvmtypes.WasmMsg{ + Execute: &wasmvmtypes.ExecuteMsg{ + ContractAddr: example.Contract.String(), + Msg: anyMsg, + }, + }, + }, + }, + }, + }, 0, nil + } + ctx = ctx.WithGasMeter(sdk.NewGasMeter(20000)) + require.PanicsWithValue(t, sdk.ErrorOutOfGas{Descriptor: "ReadFlat"}, func() { + k.execute(ctx, example.Contract, RandomAccountAddress(t), anyMsg, nil) + }) + assert.True(t, ctx.GasMeter().IsOutOfGas()) + assert.Greater(t, loops, 2) + +} + func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { noopDMsgs := func(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.CosmosMsg) error { return nil diff --git a/x/wasm/keeper/msg_dispatcher.go b/x/wasm/keeper/msg_dispatcher.go index 55e6aec59b..8203b4c8be 100644 --- a/x/wasm/keeper/msg_dispatcher.go +++ b/x/wasm/keeper/msg_dispatcher.go @@ -78,7 +78,7 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk switch msg.ReplyOn { case wasmvmtypes.ReplySuccess, wasmvmtypes.ReplyError, wasmvmtypes.ReplyAlways: default: - return nil, sdkerrors.Wrap(types.ErrInvalid, "replyOn") + return nil, sdkerrors.Wrap(types.ErrInvalid, "replyOn value") } // first, we build a sub-context which we can use inside the submessages subCtx, commit := ctx.CacheContext() From 464a024f94ae7a7c9ded6a5998047af28d24ab59 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Fri, 11 Jun 2021 12:27:27 +0200 Subject: [PATCH 04/90] Cleanup keeper result types --- x/wasm/keeper/contract_keeper.go | 8 ++--- x/wasm/keeper/keeper.go | 27 +++++---------- x/wasm/keeper/keeper_test.go | 8 ++--- x/wasm/keeper/msg_dispatcher.go | 8 ++--- x/wasm/keeper/msg_dispatcher_test.go | 50 +++++++++++++++++++--------- x/wasm/keeper/msg_server.go | 9 +++-- x/wasm/keeper/proposal_handler.go | 10 +----- x/wasm/keeper/test_common.go | 8 +++-- x/wasm/types/exported_keepers.go | 4 +-- 9 files changed, 65 insertions(+), 67 deletions(-) diff --git a/x/wasm/keeper/contract_keeper.go b/x/wasm/keeper/contract_keeper.go index e44139a903..fa4648194b 100644 --- a/x/wasm/keeper/contract_keeper.go +++ b/x/wasm/keeper/contract_keeper.go @@ -11,11 +11,11 @@ var _ types.ContractOpsKeeper = PermissionedKeeper{} type decoratedKeeper interface { create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, source string, builder string, instantiateAccess *types.AccessConfig, authZ AuthorizationPolicy) (codeID uint64, err error) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.AccAddress, initMsg []byte, label string, deposit sdk.Coins, authZ AuthorizationPolicy) (sdk.AccAddress, []byte, error) - migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte, authZ AuthorizationPolicy) (*sdk.Result, error) + migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte, authZ AuthorizationPolicy) ([]byte, error) setContractAdmin(ctx sdk.Context, contractAddress, caller, newAdmin sdk.AccAddress, authZ AuthorizationPolicy) error pinCode(ctx sdk.Context, codeID uint64) error unpinCode(ctx sdk.Context, codeID uint64) error - execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, msg []byte, coins sdk.Coins) (*sdk.Result, error) + execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, msg []byte, coins sdk.Coins) ([]byte, error) setContractInfoExtension(ctx sdk.Context, contract sdk.AccAddress, extra types.ContractInfoExtension) error setContractStatus(ctx sdk.Context, contract sdk.AccAddress, caller sdk.AccAddress, status types.ContractStatus, authZ AuthorizationPolicy) error } @@ -45,11 +45,11 @@ func (p PermissionedKeeper) Instantiate(ctx sdk.Context, codeID uint64, creator, return p.nested.instantiate(ctx, codeID, creator, admin, initMsg, label, deposit, p.authZPolicy) } -func (p PermissionedKeeper) Execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, msg []byte, coins sdk.Coins) (*sdk.Result, error) { +func (p PermissionedKeeper) Execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, msg []byte, coins sdk.Coins) ([]byte, error) { return p.nested.execute(ctx, contractAddress, caller, msg, coins) } -func (p PermissionedKeeper) Migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte) (*sdk.Result, error) { +func (p PermissionedKeeper) Migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte) ([]byte, error) { return p.nested.migrate(ctx, contractAddress, caller, newCodeID, msg, p.authZPolicy) } diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 46b85baf27..9fcb717cc3 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -331,7 +331,7 @@ func (k Keeper) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.A } // Execute executes the contract instance -func (k Keeper) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, msg []byte, coins sdk.Coins) (*sdk.Result, error) { +func (k Keeper) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, msg []byte, coins sdk.Coins) ([]byte, error) { defer func(begin time.Time) { k.metrics.ExecuteElapsedTimes.Observe(time.Since(begin).Seconds()) }(time.Now()) contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddress) if err != nil { @@ -374,13 +374,10 @@ func (k Keeper) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } - - return &sdk.Result{ - Data: data, - }, nil + return data, nil } -func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte, authZ AuthorizationPolicy) (*sdk.Result, error) { +func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte, authZ AuthorizationPolicy) ([]byte, error) { defer func(begin time.Time) { k.metrics.MigrateElapsedTimes.Observe(time.Since(begin).Seconds()) }(time.Now()) if !k.IsPinnedCode(ctx, newCodeID) { ctx.GasMeter().ConsumeGas(k.getInstanceCost(ctx), "Loading CosmWasm module: migrate") @@ -450,16 +447,13 @@ func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } - - return &sdk.Result{ - Data: data, - }, nil + return data, nil } // Sudo allows priviledged access to a contract. This can never be called by governance or external tx, but only by // another native Go module directly. Thus, the keeper doesn't place any access controls on it, that is the // responsibility or the app developer (who passes the wasm.Keeper in app.go) -func (k Keeper) Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte) (*sdk.Result, error) { +func (k Keeper) Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte) ([]byte, error) { defer func(begin time.Time) { k.metrics.SudoElapsedTimes.Observe(time.Since(begin).Seconds()) }(time.Now()) contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddress) if err != nil { @@ -491,15 +485,12 @@ func (k Keeper) Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } - - return &sdk.Result{ - Data: data, - }, nil + return data, nil } // reply is only called from keeper internal functions (dispatchSubmessages) after processing the submessage // it -func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) (*sdk.Result, error) { +func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddress) if err != nil { return nil, err @@ -535,9 +526,7 @@ func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply was if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } - return &sdk.Result{ - Data: data, - }, nil + return data, nil } // addToContractCodeSecondaryIndex adds element to the index for contracts-by-codeid queries diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index daebca3358..a944bac460 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -1051,10 +1051,9 @@ func TestMigrateWithDispatchedMessage(t *testing.T) { migMsgBz := BurnerExampleInitMsg{Payout: myPayoutAddr}.GetBytes(t) ctx = ctx.WithEventManager(sdk.NewEventManager()).WithBlockHeight(ctx.BlockHeight() + 1) - res, err := keeper.Migrate(ctx, contractAddr, fred, burnerContractID, migMsgBz) + data, err := keeper.Migrate(ctx, contractAddr, fred, burnerContractID, migMsgBz) require.NoError(t, err) - assert.Equal(t, "burnt 1 keys", string(res.Data)) - assert.Equal(t, "", res.Log) + assert.Equal(t, "burnt 1 keys", string(data)) type dict map[string]interface{} expEvents := []dict{ { @@ -1261,9 +1260,8 @@ func TestSudo(t *testing.T) { sudoMsg, err := json.Marshal(msg) require.NoError(t, err) - res, err := keepers.WasmKeeper.Sudo(ctx, addr, sudoMsg) + _, err = keepers.WasmKeeper.Sudo(ctx, addr, sudoMsg) require.NoError(t, err) - require.NotNil(t, res) // ensure community now exists and got paid comAcct = accKeeper.GetAccount(ctx, community) diff --git a/x/wasm/keeper/msg_dispatcher.go b/x/wasm/keeper/msg_dispatcher.go index 8203b4c8be..41447d9c3a 100644 --- a/x/wasm/keeper/msg_dispatcher.go +++ b/x/wasm/keeper/msg_dispatcher.go @@ -16,7 +16,7 @@ type Messenger interface { // replyer is a subset of keeper that can handle replies to submessages type replyer interface { - reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) (*sdk.Result, error) + reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) } // MessageDispatcher coordinates message sending and submessage reply/ state commits @@ -140,12 +140,12 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk // we can ignore any result returned as there is nothing to do with the data // and the events are already in the ctx.EventManager() - rData, err := d.keeper.reply(ctx, contractAddr, reply) + rspData, err := d.keeper.reply(ctx, contractAddr, reply) switch { case err != nil: return nil, sdkerrors.Wrap(err, "reply") - case rData.Data != nil: - rsp = rData.Data + case rspData != nil: + rsp = rspData } } return rsp, nil diff --git a/x/wasm/keeper/msg_dispatcher_test.go b/x/wasm/keeper/msg_dispatcher_test.go index 10617b390e..24b3f40d06 100644 --- a/x/wasm/keeper/msg_dispatcher_test.go +++ b/x/wasm/keeper/msg_dispatcher_test.go @@ -51,8 +51,8 @@ func TestDispatchSubmessages(t *testing.T) { ReplyOn: wasmvmtypes.ReplySuccess, }}, replyer: &mockReplyer{ - replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) (*sdk.Result, error) { - return &sdk.Result{Data: []byte("myReplyData")}, nil + replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { + return []byte("myReplyData"), nil }, }, msgHandler: &wasmtesting.MockMessageHandler{ @@ -68,8 +68,8 @@ func TestDispatchSubmessages(t *testing.T) { ReplyOn: wasmvmtypes.ReplyError, }}, replyer: &mockReplyer{ - replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) (*sdk.Result, error) { - return &sdk.Result{Data: []byte("myReplyData")}, nil + replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { + return []byte("myReplyData"), nil }, }, msgHandler: &wasmtesting.MockMessageHandler{ @@ -85,8 +85,8 @@ func TestDispatchSubmessages(t *testing.T) { ReplyOn: wasmvmtypes.ReplySuccess, }}, replyer: &mockReplyer{ - replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) (*sdk.Result, error) { - return &sdk.Result{Data: []byte("myReplyData")}, nil + replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { + return []byte("myReplyData"), nil }, }, msgHandler: &wasmtesting.MockMessageHandler{ @@ -107,7 +107,7 @@ func TestDispatchSubmessages(t *testing.T) { ReplyOn: wasmvmtypes.ReplySuccess, }}, replyer: &mockReplyer{ - replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) (*sdk.Result, error) { + replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { return nil, errors.New("reply failed") }, }, @@ -125,8 +125,8 @@ func TestDispatchSubmessages(t *testing.T) { ReplyOn: wasmvmtypes.ReplyError, }}, replyer: &mockReplyer{ - replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) (*sdk.Result, error) { - return &sdk.Result{Data: []byte("myReplyData")}, nil + replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { + return []byte("myReplyData"), nil }, }, msgHandler: &wasmtesting.MockMessageHandler{ @@ -155,8 +155,8 @@ func TestDispatchSubmessages(t *testing.T) { "multiple msg - last reply": { msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyError}, {ID: 2, ReplyOn: wasmvmtypes.ReplyError}}, replyer: &mockReplyer{ - replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) (*sdk.Result, error) { - return &sdk.Result{Data: []byte(fmt.Sprintf("myReplyData:%d", reply.ID))}, nil + replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { + return []byte(fmt.Sprintf("myReplyData:%d", reply.ID)), nil }, }, msgHandler: &wasmtesting.MockMessageHandler{ @@ -170,11 +170,11 @@ func TestDispatchSubmessages(t *testing.T) { "multiple msg - last reply with non nil": { msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyError}, {ID: 2, ReplyOn: wasmvmtypes.ReplyError}}, replyer: &mockReplyer{ - replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) (*sdk.Result, error) { + replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { if reply.ID == 2 { - return &sdk.Result{}, nil + return nil, nil } - return &sdk.Result{Data: []byte("myReplyData:1")}, nil + return []byte("myReplyData:1"), nil }, }, msgHandler: &wasmtesting.MockMessageHandler{ @@ -185,6 +185,24 @@ func TestDispatchSubmessages(t *testing.T) { expData: []byte("myReplyData:1"), expCommits: []bool{false, false}, }, + "multiple msg - last reply can be empty to overwrite": { + msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyError}, {ID: 2, ReplyOn: wasmvmtypes.ReplyError}}, + replyer: &mockReplyer{ + replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { + if reply.ID == 2 { + return []byte{}, nil + } + return []byte("myReplyData:1"), nil + }, + }, + msgHandler: &wasmtesting.MockMessageHandler{ + DispatchMsgFn: func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { + return nil, nil, errors.New("my error") + }, + }, + expData: []byte{}, + expCommits: []bool{false, false}, + }, "empty replyOn rejected": { msgs: []wasmvmtypes.SubMsg{{}}, replyer: noReplyCalled, @@ -226,10 +244,10 @@ func TestDispatchSubmessages(t *testing.T) { } type mockReplyer struct { - replyFn func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) (*sdk.Result, error) + replyFn func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) } -func (m mockReplyer) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) (*sdk.Result, error) { +func (m mockReplyer) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { if m.replyFn == nil { panic("not expected to be called") } diff --git a/x/wasm/keeper/msg_server.go b/x/wasm/keeper/msg_server.go index 2a2aebaa2a..30e0cb818f 100644 --- a/x/wasm/keeper/msg_server.go +++ b/x/wasm/keeper/msg_server.go @@ -144,7 +144,7 @@ func (m msgServer) ExecuteContract(goCtx context.Context, msg *types.MsgExecuteC return nil, sdkerrors.Wrap(err, "contract") } - res, err := m.keeper.Execute(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.Msg, msg.Funds) + data, err := m.keeper.Execute(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.Msg, msg.Funds) if err != nil { return nil, err } @@ -160,9 +160,8 @@ func (m msgServer) ExecuteContract(goCtx context.Context, msg *types.MsgExecuteC )) return &types.MsgExecuteContractResponse{ - Data: res.Data, + Data: data, }, nil - } func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateContract) (*types.MsgMigrateContractResponse, error) { @@ -176,7 +175,7 @@ func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateC return nil, sdkerrors.Wrap(err, "contract") } - res, err := m.keeper.Migrate(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.CodeID, msg.MigrateMsg) + data, err := m.keeper.Migrate(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.CodeID, msg.MigrateMsg) if err != nil { return nil, err } @@ -193,7 +192,7 @@ func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateC )) return &types.MsgMigrateContractResponse{ - Data: res.Data, + Data: data, }, nil } diff --git a/x/wasm/keeper/proposal_handler.go b/x/wasm/keeper/proposal_handler.go index 5051bf4aec..709e89b29f 100644 --- a/x/wasm/keeper/proposal_handler.go +++ b/x/wasm/keeper/proposal_handler.go @@ -114,7 +114,7 @@ func handleMigrateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.M if err != nil { return sdkerrors.Wrap(err, "run as address") } - res, err := k.Migrate(ctx, sdk.AccAddress(p.Contract), sdk.AccAddress(p.RunAs), p.CodeID, p.MigrateMsg) + _, err = k.Migrate(ctx, sdk.AccAddress(p.Contract), sdk.AccAddress(p.RunAs), p.CodeID, p.MigrateMsg) if err != nil { return err } @@ -124,14 +124,6 @@ func handleMigrateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.M sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", p.CodeID)), ) ctx.EventManager().EmitEvent(ourEvent) - - for _, e := range res.Events { - attr := make([]sdk.Attribute, len(e.Attributes)) - for i, a := range e.Attributes { - attr[i] = sdk.NewAttribute(string(a.Key), string(a.Value)) - } - ctx.EventManager().EmitEvent(sdk.NewEvent(e.Type, attr...)) - } return nil } diff --git a/x/wasm/keeper/test_common.go b/x/wasm/keeper/test_common.go index 0f78e3a717..c54277ced3 100644 --- a/x/wasm/keeper/test_common.go +++ b/x/wasm/keeper/test_common.go @@ -412,13 +412,15 @@ func handleExecute(ctx sdk.Context, k types.ContractOpsKeeper, msg *types.MsgExe if err != nil { return nil, sdkerrors.Wrap(err, "admin") } - res, err := k.Execute(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.Msg, msg.Funds) + data, err := k.Execute(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.Msg, msg.Funds) if err != nil { return nil, err } - res.Events = ctx.EventManager().Events().ToABCIEvents() - return res, nil + return &sdk.Result{ + Data: data, + Events: ctx.EventManager().Events().ToABCIEvents(), + }, nil } func RandomAccountAddress(_ TestingT) sdk.AccAddress { diff --git a/x/wasm/types/exported_keepers.go b/x/wasm/types/exported_keepers.go index 257bd38e42..f61d97d90f 100644 --- a/x/wasm/types/exported_keepers.go +++ b/x/wasm/types/exported_keepers.go @@ -31,10 +31,10 @@ type ContractOpsKeeper interface { Instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.AccAddress, initMsg []byte, label string, deposit sdk.Coins) (sdk.AccAddress, []byte, error) // Execute executes the contract instance - Execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, msg []byte, coins sdk.Coins) (*sdk.Result, error) + Execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, msg []byte, coins sdk.Coins) ([]byte, error) // Migrate allows to upgrade a contract to a new code with data migration. - Migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte) (*sdk.Result, error) + Migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte) ([]byte, error) // UpdateContractAdmin sets the admin value on the ContractInfo. It must be a valid address (use ClearContractAdmin to remove it) UpdateContractAdmin(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newAdmin sdk.AccAddress) error From bebb06c0ee975fd6c3c9eb38806f91071591aa73 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Fri, 11 Jun 2021 15:04:36 +0200 Subject: [PATCH 05/90] Verify converted coin --- x/wasm/keeper/handler_plugin.go | 334 +--------- x/wasm/keeper/handler_plugin_encoders.go | 312 ++++++++++ x/wasm/keeper/handler_plugin_encoders_test.go | 571 ++++++++++++++++++ x/wasm/keeper/handler_plugin_test.go | 25 +- 4 files changed, 905 insertions(+), 337 deletions(-) create mode 100644 x/wasm/keeper/handler_plugin_encoders.go create mode 100644 x/wasm/keeper/handler_plugin_encoders_test.go diff --git a/x/wasm/keeper/handler_plugin.go b/x/wasm/keeper/handler_plugin.go index 5f2952ab90..cb7c277bf2 100644 --- a/x/wasm/keeper/handler_plugin.go +++ b/x/wasm/keeper/handler_plugin.go @@ -1,70 +1,31 @@ package keeper import ( - "encoding/json" "errors" "fmt" - + "github.com/line/lbm-sdk/x/wasm/types" + wasmvmtypes "github.com/line/wasmvm/types" codectypes "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" - banktypes "github.com/line/lbm-sdk/x/bank/types" - distributiontypes "github.com/line/lbm-sdk/x/distribution/types" - ibctransfertypes "github.com/line/lbm-sdk/x/ibc/applications/transfer/types" - ibcclienttypes "github.com/line/lbm-sdk/x/ibc/core/02-client/types" channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" host "github.com/line/lbm-sdk/x/ibc/core/24-host" - stakingtypes "github.com/line/lbm-sdk/x/staking/types" - "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" ) // msgEncoder is an extension point to customize encodings type msgEncoder interface { // Encode converts wasmvm message to n cosmos message types - Encode(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg, customRouter types.Router) ([]sdk.Msg, error) + Encode(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) ([]sdk.Msg, error) } // SDKMessageHandler can handles messages that can be encoded into sdk.Message types and routed. type SDKMessageHandler struct { - router sdk.Router - encodeRouter types.Router - encoders msgEncoder -} - -type BankEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.BankMsg) ([]sdk.Msg, error) -type CustomEncoder func(sender sdk.AccAddress, msg json.RawMessage, customEncodeRouter types.Router) ([]sdk.Msg, error) -type DistributionEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.DistributionMsg) ([]sdk.Msg, error) -type StakingEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.StakingMsg) ([]sdk.Msg, error) -type StargateEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.StargateMsg) ([]sdk.Msg, error) -type WasmEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg, error) -type IBCEncoder func(ctx sdk.Context, sender sdk.AccAddress, contractIBCPortID string, msg *wasmvmtypes.IBCMsg) ([]sdk.Msg, error) - -type MessageEncoders struct { - Bank func(sender sdk.AccAddress, msg *wasmvmtypes.BankMsg) ([]sdk.Msg, error) - Custom func(sender sdk.AccAddress, msg json.RawMessage, customEncodeRouter types.Router) ([]sdk.Msg, error) - Distribution func(sender sdk.AccAddress, msg *wasmvmtypes.DistributionMsg) ([]sdk.Msg, error) - IBC func(ctx sdk.Context, sender sdk.AccAddress, contractIBCPortID string, msg *wasmvmtypes.IBCMsg) ([]sdk.Msg, error) - Staking func(sender sdk.AccAddress, msg *wasmvmtypes.StakingMsg) ([]sdk.Msg, error) - Stargate func(sender sdk.AccAddress, msg *wasmvmtypes.StargateMsg) ([]sdk.Msg, error) - Wasm func(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg, error) -} - -func DefaultEncoders(unpacker codectypes.AnyUnpacker, portSource types.ICS20TransferPortSource) MessageEncoders { - return MessageEncoders{ - Bank: EncodeBankMsg, - Custom: CustomMsg, - Distribution: EncodeDistributionMsg, - IBC: EncodeIBCMsg(portSource), - Staking: EncodeStakingMsg, - Stargate: EncodeStargateMsg(unpacker), - Wasm: EncodeWasmMsg, - } + router sdk.Router + encoders msgEncoder } func NewDefaultMessageHandler( router sdk.Router, - encodeRouter types.Router, channelKeeper types.ChannelKeeper, capabilityKeeper types.CapabilityKeeper, bankKeeper types.Burner, @@ -77,296 +38,21 @@ func NewDefaultMessageHandler( encoders = encoders.Merge(e) } return NewMessageHandlerChain( - NewSDKMessageHandler(router, encodeRouter, encoders), + NewSDKMessageHandler(router, encoders), NewIBCRawPacketHandler(channelKeeper, capabilityKeeper), NewBurnCoinMessageHandler(bankKeeper), ) } -func NewSDKMessageHandler(router sdk.Router, encodeRouter types.Router, encoders msgEncoder) SDKMessageHandler { +func NewSDKMessageHandler(router sdk.Router, encoders msgEncoder) SDKMessageHandler { return SDKMessageHandler{ - router: router, - encodeRouter: encodeRouter, - encoders: encoders, - } -} - -func (e MessageEncoders) Merge(o *MessageEncoders) MessageEncoders { - if o == nil { - return e - } - if o.Bank != nil { - e.Bank = o.Bank - } - if o.Custom != nil { - e.Custom = o.Custom - } - if o.Distribution != nil { - e.Distribution = o.Distribution - } - if o.IBC != nil { - e.IBC = o.IBC - } - if o.Staking != nil { - e.Staking = o.Staking - } - if o.Stargate != nil { - e.Stargate = o.Stargate - } - if o.Wasm != nil { - e.Wasm = o.Wasm - } - return e -} - -func (e MessageEncoders) Encode(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg, customRouter types.Router) ([]sdk.Msg, error) { - switch { - case msg.Bank != nil: - return e.Bank(contractAddr, msg.Bank) - case msg.Custom != nil: - return e.Custom(contractAddr, msg.Custom, customRouter) - case msg.Distribution != nil: - return e.Distribution(contractAddr, msg.Distribution) - case msg.IBC != nil: - return e.IBC(ctx, contractAddr, contractIBCPortID, msg.IBC) - case msg.Staking != nil: - return e.Staking(contractAddr, msg.Staking) - case msg.Stargate != nil: - return e.Stargate(contractAddr, msg.Stargate) - case msg.Wasm != nil: - return e.Wasm(contractAddr, msg.Wasm) - } - return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "unknown variant of Wasm") -} - -func EncodeBankMsg(sender sdk.AccAddress, msg *wasmvmtypes.BankMsg) ([]sdk.Msg, error) { - if msg.Send == nil { - return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "unknown variant of Bank") - } - if len(msg.Send.Amount) == 0 { - return nil, nil - } - toSend, err := convertWasmCoinsToSdkCoins(msg.Send.Amount) - if err != nil { - return nil, err - } - sdkMsg := banktypes.MsgSend{ - FromAddress: sender.String(), - ToAddress: msg.Send.ToAddress, - Amount: toSend, - } - return []sdk.Msg{&sdkMsg}, nil -} - -func CustomMsg(sender sdk.AccAddress, jsonMsg json.RawMessage, router types.Router) ([]sdk.Msg, error) { - var linkMsgWrapper types.LinkMsgWrapper - err := json.Unmarshal(jsonMsg, &linkMsgWrapper) - if err != nil { - return nil, err - } - handler := router.GetRoute(linkMsgWrapper.Module) - if handler == nil { - return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized handler: %T", linkMsgWrapper.Module) - } - return handler(linkMsgWrapper.MsgData) -} - -func EncodeDistributionMsg(sender sdk.AccAddress, msg *wasmvmtypes.DistributionMsg) ([]sdk.Msg, error) { - switch { - case msg.SetWithdrawAddress != nil: - setMsg := distributiontypes.MsgSetWithdrawAddress{ - DelegatorAddress: sender.String(), - WithdrawAddress: msg.SetWithdrawAddress.Address, - } - return []sdk.Msg{&setMsg}, nil - case msg.WithdrawDelegatorReward != nil: - withdrawMsg := distributiontypes.MsgWithdrawDelegatorReward{ - DelegatorAddress: sender.String(), - ValidatorAddress: msg.WithdrawDelegatorReward.Validator, - } - return []sdk.Msg{&withdrawMsg}, nil - default: - return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "unknown variant of Distribution") - } -} - -func EncodeStakingMsg(sender sdk.AccAddress, msg *wasmvmtypes.StakingMsg) ([]sdk.Msg, error) { - switch { - case msg.Delegate != nil: - coin, err := convertWasmCoinToSdkCoin(msg.Delegate.Amount) - if err != nil { - return nil, err - } - sdkMsg := stakingtypes.MsgDelegate{ - DelegatorAddress: sender.String(), - ValidatorAddress: msg.Delegate.Validator, - Amount: coin, - } - return []sdk.Msg{&sdkMsg}, nil - - case msg.Redelegate != nil: - coin, err := convertWasmCoinToSdkCoin(msg.Redelegate.Amount) - if err != nil { - return nil, err - } - sdkMsg := stakingtypes.MsgBeginRedelegate{ - DelegatorAddress: sender.String(), - ValidatorSrcAddress: msg.Redelegate.SrcValidator, - ValidatorDstAddress: msg.Redelegate.DstValidator, - Amount: coin, - } - return []sdk.Msg{&sdkMsg}, nil - case msg.Undelegate != nil: - coin, err := convertWasmCoinToSdkCoin(msg.Undelegate.Amount) - if err != nil { - return nil, err - } - sdkMsg := stakingtypes.MsgUndelegate{ - DelegatorAddress: sender.String(), - ValidatorAddress: msg.Undelegate.Validator, - Amount: coin, - } - return []sdk.Msg{&sdkMsg}, nil - default: - return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "unknown variant of Staking") - } -} - -func EncodeStargateMsg(unpacker codectypes.AnyUnpacker) StargateEncoder { - return func(sender sdk.AccAddress, msg *wasmvmtypes.StargateMsg) ([]sdk.Msg, error) { - any := codectypes.Any{ - TypeUrl: msg.TypeURL, - Value: msg.Value, - } - var sdkMsg sdk.Msg - if err := 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, unpacker); err != nil { - return nil, sdkerrors.Wrap(types.ErrInvalidMsg, fmt.Sprintf("UnpackInterfaces inside msg: %s", err)) - } - return []sdk.Msg{sdkMsg}, nil - } -} - -func EncodeWasmMsg(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg, error) { - switch { - case msg.Execute != nil: - coins, err := convertWasmCoinsToSdkCoins(msg.Execute.Send) - if err != nil { - return nil, err - } - - sdkMsg := types.MsgExecuteContract{ - Sender: sender.String(), - Contract: msg.Execute.ContractAddr, - Msg: msg.Execute.Msg, - Funds: coins, - } - return []sdk.Msg{&sdkMsg}, nil - case msg.Instantiate != nil: - coins, err := convertWasmCoinsToSdkCoins(msg.Instantiate.Send) - if err != nil { - return nil, err - } - - sdkMsg := types.MsgInstantiateContract{ - Sender: sender.String(), - CodeID: msg.Instantiate.CodeID, - Label: msg.Instantiate.Label, - InitMsg: msg.Instantiate.Msg, - Admin: msg.Instantiate.Admin, - Funds: coins, - } - return []sdk.Msg{&sdkMsg}, nil - case msg.Migrate != nil: - sdkMsg := types.MsgMigrateContract{ - Sender: sender.String(), - Contract: msg.Migrate.ContractAddr, - CodeID: msg.Migrate.NewCodeID, - MigrateMsg: msg.Migrate.Msg, - } - return []sdk.Msg{&sdkMsg}, nil - case msg.ClearAdmin != nil: - sdkMsg := types.MsgClearAdmin{ - Sender: sender.String(), - Contract: msg.ClearAdmin.ContractAddr, - } - return []sdk.Msg{&sdkMsg}, nil - case msg.UpdateAdmin != nil: - sdkMsg := types.MsgUpdateAdmin{ - Sender: sender.String(), - Contract: msg.UpdateAdmin.ContractAddr, - NewAdmin: msg.UpdateAdmin.Admin, - } - return []sdk.Msg{&sdkMsg}, nil - default: - return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "unknown variant of Wasm") - } -} - -func EncodeIBCMsg(portSource types.ICS20TransferPortSource) func(ctx sdk.Context, sender sdk.AccAddress, contractIBCPortID string, msg *wasmvmtypes.IBCMsg) ([]sdk.Msg, error) { - return func(ctx sdk.Context, sender sdk.AccAddress, contractIBCPortID string, msg *wasmvmtypes.IBCMsg) ([]sdk.Msg, error) { - switch { - case msg.CloseChannel != nil: - return []sdk.Msg{&channeltypes.MsgChannelCloseInit{ - PortId: PortIDForContract(sender), - ChannelId: msg.CloseChannel.ChannelID, - Signer: sender.String(), - }}, nil - case msg.Transfer != nil: - amount, err := convertWasmCoinToSdkCoin(msg.Transfer.Amount) - if err != nil { - return nil, sdkerrors.Wrap(err, "amount") - } - msg := &ibctransfertypes.MsgTransfer{ - SourcePort: portSource.GetPort(ctx), - SourceChannel: msg.Transfer.ChannelID, - Token: amount, - Sender: sender.String(), - Receiver: msg.Transfer.ToAddress, - TimeoutHeight: convertWasmIBCTimeoutHeightToCosmosHeight(msg.Transfer.Timeout.Block), - TimeoutTimestamp: msg.Transfer.Timeout.Timestamp, - } - return []sdk.Msg{msg}, nil - default: - return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "Unknown variant of IBC") - } - } -} - -func convertWasmIBCTimeoutHeightToCosmosHeight(ibcTimeoutBlock *wasmvmtypes.IBCTimeoutBlock) ibcclienttypes.Height { - if ibcTimeoutBlock == nil { - return ibcclienttypes.NewHeight(0, 0) - } - return ibcclienttypes.NewHeight(ibcTimeoutBlock.Revision, ibcTimeoutBlock.Height) -} - -func convertWasmCoinsToSdkCoins(coins []wasmvmtypes.Coin) (sdk.Coins, error) { - var toSend sdk.Coins - for _, coin := range coins { - c, err := convertWasmCoinToSdkCoin(coin) - if err != nil { - return nil, err - } - toSend = append(toSend, c) - } - return toSend, nil -} - -func convertWasmCoinToSdkCoin(coin wasmvmtypes.Coin) (sdk.Coin, error) { - amount, ok := sdk.NewIntFromString(coin.Amount) - if !ok { - return sdk.Coin{}, sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, coin.Amount+coin.Denom) + router: router, + encoders: encoders, } - return sdk.Coin{ - Denom: coin.Denom, - Amount: amount, - }, nil } func (h SDKMessageHandler) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { - sdkMsgs, err := h.encoders.Encode(ctx, contractAddr, contractIBCPortID, msg, h.encodeRouter) + sdkMsgs, err := h.encoders.Encode(ctx, contractAddr, contractIBCPortID, msg) if err != nil { return nil, nil, err } diff --git a/x/wasm/keeper/handler_plugin_encoders.go b/x/wasm/keeper/handler_plugin_encoders.go new file mode 100644 index 0000000000..a45200edc0 --- /dev/null +++ b/x/wasm/keeper/handler_plugin_encoders.go @@ -0,0 +1,312 @@ +package keeper + +import ( + "encoding/json" + "fmt" + "github.com/line/lbm-sdk/x/wasm/types" + wasmvmtypes "github.com/line/wasmvm/types" + codectypes "github.com/line/lbm-sdk/codec/types" + sdk "github.com/line/lbm-sdk/types" + sdkerrors "github.com/line/lbm-sdk/types/errors" + banktypes "github.com/line/lbm-sdk/x/bank/types" + distributiontypes "github.com/line/lbm-sdk/x/distribution/types" + ibctransfertypes "github.com/line/lbm-sdk/x/ibc/applications/transfer/types" + ibcclienttypes "github.com/line/lbm-sdk/x/ibc/core/02-client/types" + channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" + stakingtypes "github.com/line/lbm-sdk/x/staking/types" +) + +type BankEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.BankMsg) ([]sdk.Msg, error) +type CustomEncoder func(sender sdk.AccAddress, msg json.RawMessage) ([]sdk.Msg, error) +type DistributionEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.DistributionMsg) ([]sdk.Msg, error) +type StakingEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.StakingMsg) ([]sdk.Msg, error) +type StargateEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.StargateMsg) ([]sdk.Msg, error) +type WasmEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg, error) +type IBCEncoder func(ctx sdk.Context, sender sdk.AccAddress, contractIBCPortID string, msg *wasmvmtypes.IBCMsg) ([]sdk.Msg, error) + +type MessageEncoders struct { + Bank func(sender sdk.AccAddress, msg *wasmvmtypes.BankMsg) ([]sdk.Msg, error) + Custom func(sender sdk.AccAddress, msg json.RawMessage) ([]sdk.Msg, error) + Distribution func(sender sdk.AccAddress, msg *wasmvmtypes.DistributionMsg) ([]sdk.Msg, error) + IBC func(ctx sdk.Context, sender sdk.AccAddress, contractIBCPortID string, msg *wasmvmtypes.IBCMsg) ([]sdk.Msg, error) + Staking func(sender sdk.AccAddress, msg *wasmvmtypes.StakingMsg) ([]sdk.Msg, error) + Stargate func(sender sdk.AccAddress, msg *wasmvmtypes.StargateMsg) ([]sdk.Msg, error) + Wasm func(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg, error) +} + +func DefaultEncoders(unpacker codectypes.AnyUnpacker, portSource types.ICS20TransferPortSource) MessageEncoders { + return MessageEncoders{ + Bank: EncodeBankMsg, + Custom: NoCustomMsg, + Distribution: EncodeDistributionMsg, + IBC: EncodeIBCMsg(portSource), + Staking: EncodeStakingMsg, + Stargate: EncodeStargateMsg(unpacker), + Wasm: EncodeWasmMsg, + } +} + +func (e MessageEncoders) Merge(o *MessageEncoders) MessageEncoders { + if o == nil { + return e + } + if o.Bank != nil { + e.Bank = o.Bank + } + if o.Custom != nil { + e.Custom = o.Custom + } + if o.Distribution != nil { + e.Distribution = o.Distribution + } + if o.IBC != nil { + e.IBC = o.IBC + } + if o.Staking != nil { + e.Staking = o.Staking + } + if o.Stargate != nil { + e.Stargate = o.Stargate + } + if o.Wasm != nil { + e.Wasm = o.Wasm + } + return e +} + +func (e MessageEncoders) Encode(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) ([]sdk.Msg, error) { + switch { + case msg.Bank != nil: + return e.Bank(contractAddr, msg.Bank) + case msg.Custom != nil: + return e.Custom(contractAddr, msg.Custom) + case msg.Distribution != nil: + return e.Distribution(contractAddr, msg.Distribution) + case msg.IBC != nil: + return e.IBC(ctx, contractAddr, contractIBCPortID, msg.IBC) + case msg.Staking != nil: + return e.Staking(contractAddr, msg.Staking) + case msg.Stargate != nil: + return e.Stargate(contractAddr, msg.Stargate) + case msg.Wasm != nil: + return e.Wasm(contractAddr, msg.Wasm) + } + return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "unknown variant of Wasm") +} + +func EncodeBankMsg(sender sdk.AccAddress, msg *wasmvmtypes.BankMsg) ([]sdk.Msg, error) { + if msg.Send == nil { + return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "unknown variant of Bank") + } + if len(msg.Send.Amount) == 0 { + return nil, nil + } + toSend, err := convertWasmCoinsToSdkCoins(msg.Send.Amount) + if err != nil { + return nil, err + } + sdkMsg := banktypes.MsgSend{ + FromAddress: sender.String(), + ToAddress: msg.Send.ToAddress, + Amount: toSend, + } + return []sdk.Msg{&sdkMsg}, nil +} + +func NoCustomMsg(sender sdk.AccAddress, msg json.RawMessage) ([]sdk.Msg, error) { + return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "custom variant not supported") +} + +func EncodeDistributionMsg(sender sdk.AccAddress, msg *wasmvmtypes.DistributionMsg) ([]sdk.Msg, error) { + switch { + case msg.SetWithdrawAddress != nil: + setMsg := distributiontypes.MsgSetWithdrawAddress{ + DelegatorAddress: sender.String(), + WithdrawAddress: msg.SetWithdrawAddress.Address, + } + return []sdk.Msg{&setMsg}, nil + case msg.WithdrawDelegatorReward != nil: + withdrawMsg := distributiontypes.MsgWithdrawDelegatorReward{ + DelegatorAddress: sender.String(), + ValidatorAddress: msg.WithdrawDelegatorReward.Validator, + } + return []sdk.Msg{&withdrawMsg}, nil + default: + return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "unknown variant of Distribution") + } +} + +func EncodeStakingMsg(sender sdk.AccAddress, msg *wasmvmtypes.StakingMsg) ([]sdk.Msg, error) { + switch { + case msg.Delegate != nil: + coin, err := convertWasmCoinToSdkCoin(msg.Delegate.Amount) + if err != nil { + return nil, err + } + sdkMsg := stakingtypes.MsgDelegate{ + DelegatorAddress: sender.String(), + ValidatorAddress: msg.Delegate.Validator, + Amount: coin, + } + return []sdk.Msg{&sdkMsg}, nil + + case msg.Redelegate != nil: + coin, err := convertWasmCoinToSdkCoin(msg.Redelegate.Amount) + if err != nil { + return nil, err + } + sdkMsg := stakingtypes.MsgBeginRedelegate{ + DelegatorAddress: sender.String(), + ValidatorSrcAddress: msg.Redelegate.SrcValidator, + ValidatorDstAddress: msg.Redelegate.DstValidator, + Amount: coin, + } + return []sdk.Msg{&sdkMsg}, nil + case msg.Undelegate != nil: + coin, err := convertWasmCoinToSdkCoin(msg.Undelegate.Amount) + if err != nil { + return nil, err + } + sdkMsg := stakingtypes.MsgUndelegate{ + DelegatorAddress: sender.String(), + ValidatorAddress: msg.Undelegate.Validator, + Amount: coin, + } + return []sdk.Msg{&sdkMsg}, nil + default: + return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "unknown variant of Staking") + } +} + +func EncodeStargateMsg(unpacker codectypes.AnyUnpacker) StargateEncoder { + return func(sender sdk.AccAddress, msg *wasmvmtypes.StargateMsg) ([]sdk.Msg, error) { + any := codectypes.Any{ + TypeUrl: msg.TypeURL, + Value: msg.Value, + } + var sdkMsg sdk.Msg + if err := 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, unpacker); err != nil { + return nil, sdkerrors.Wrap(types.ErrInvalidMsg, fmt.Sprintf("UnpackInterfaces inside msg: %s", err)) + } + return []sdk.Msg{sdkMsg}, nil + } +} + +func EncodeWasmMsg(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg, error) { + switch { + case msg.Execute != nil: + coins, err := convertWasmCoinsToSdkCoins(msg.Execute.Send) + if err != nil { + return nil, err + } + + sdkMsg := types.MsgExecuteContract{ + Sender: sender.String(), + Contract: msg.Execute.ContractAddr, + Msg: msg.Execute.Msg, + Funds: coins, + } + return []sdk.Msg{&sdkMsg}, nil + case msg.Instantiate != nil: + coins, err := convertWasmCoinsToSdkCoins(msg.Instantiate.Send) + if err != nil { + return nil, err + } + + sdkMsg := types.MsgInstantiateContract{ + Sender: sender.String(), + CodeID: msg.Instantiate.CodeID, + Label: msg.Instantiate.Label, + InitMsg: msg.Instantiate.Msg, + Admin: msg.Instantiate.Admin, + Funds: coins, + } + return []sdk.Msg{&sdkMsg}, nil + case msg.Migrate != nil: + sdkMsg := types.MsgMigrateContract{ + Sender: sender.String(), + Contract: msg.Migrate.ContractAddr, + CodeID: msg.Migrate.NewCodeID, + MigrateMsg: msg.Migrate.Msg, + } + return []sdk.Msg{&sdkMsg}, nil + case msg.ClearAdmin != nil: + sdkMsg := types.MsgClearAdmin{ + Sender: sender.String(), + Contract: msg.ClearAdmin.ContractAddr, + } + return []sdk.Msg{&sdkMsg}, nil + case msg.UpdateAdmin != nil: + sdkMsg := types.MsgUpdateAdmin{ + Sender: sender.String(), + Contract: msg.UpdateAdmin.ContractAddr, + NewAdmin: msg.UpdateAdmin.Admin, + } + return []sdk.Msg{&sdkMsg}, nil + default: + return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "unknown variant of Wasm") + } +} + +func EncodeIBCMsg(portSource types.ICS20TransferPortSource) func(ctx sdk.Context, sender sdk.AccAddress, contractIBCPortID string, msg *wasmvmtypes.IBCMsg) ([]sdk.Msg, error) { + return func(ctx sdk.Context, sender sdk.AccAddress, contractIBCPortID string, msg *wasmvmtypes.IBCMsg) ([]sdk.Msg, error) { + switch { + case msg.CloseChannel != nil: + return []sdk.Msg{&channeltypes.MsgChannelCloseInit{ + PortId: PortIDForContract(sender), + ChannelId: msg.CloseChannel.ChannelID, + Signer: sender.String(), + }}, nil + case msg.Transfer != nil: + amount, err := convertWasmCoinToSdkCoin(msg.Transfer.Amount) + if err != nil { + return nil, sdkerrors.Wrap(err, "amount") + } + msg := &ibctransfertypes.MsgTransfer{ + SourcePort: portSource.GetPort(ctx), + SourceChannel: msg.Transfer.ChannelID, + Token: amount, + Sender: sender.String(), + Receiver: msg.Transfer.ToAddress, + TimeoutHeight: convertWasmIBCTimeoutHeightToCosmosHeight(msg.Transfer.Timeout.Block), + TimeoutTimestamp: msg.Transfer.Timeout.Timestamp, + } + return []sdk.Msg{msg}, nil + default: + return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "Unknown variant of IBC") + } + } +} +func convertWasmIBCTimeoutHeightToCosmosHeight(ibcTimeoutBlock *wasmvmtypes.IBCTimeoutBlock) ibcclienttypes.Height { + if ibcTimeoutBlock == nil { + return ibcclienttypes.NewHeight(0, 0) + } + return ibcclienttypes.NewHeight(ibcTimeoutBlock.Revision, ibcTimeoutBlock.Height) +} + +func convertWasmCoinsToSdkCoins(coins []wasmvmtypes.Coin) (sdk.Coins, error) { + var toSend sdk.Coins + for _, coin := range coins { + c, err := convertWasmCoinToSdkCoin(coin) + if err != nil { + return nil, err + } + toSend = append(toSend, c) + } + return toSend, nil +} + +func convertWasmCoinToSdkCoin(coin wasmvmtypes.Coin) (sdk.Coin, error) { + amount, ok := sdk.NewIntFromString(coin.Amount) + if !ok { + return sdk.Coin{}, sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, coin.Amount+coin.Denom) + } + r := sdk.Coin{ + Denom: coin.Denom, + Amount: amount, + } + return r, r.Validate() +} diff --git a/x/wasm/keeper/handler_plugin_encoders_test.go b/x/wasm/keeper/handler_plugin_encoders_test.go new file mode 100644 index 0000000000..9834b00a4e --- /dev/null +++ b/x/wasm/keeper/handler_plugin_encoders_test.go @@ -0,0 +1,571 @@ +package keeper + +import ( + "encoding/json" + "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" + codectypes "github.com/line/lbm-sdk/codec/types" + govtypes "github.com/line/lbm-sdk/x/gov/types" + ibctransfertypes "github.com/line/lbm-sdk/x/ibc/applications/transfer/types" + clienttypes "github.com/line/lbm-sdk/x/ibc/core/02-client/types" + channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" + "github.com/golang/protobuf/proto" + "github.com/stretchr/testify/assert" + "testing" + + "github.com/line/lbm-sdk/x/wasm/types" + wasmvmtypes "github.com/line/wasmvm/types" + sdk "github.com/line/lbm-sdk/types" + banktypes "github.com/line/lbm-sdk/x/bank/types" + distributiontypes "github.com/line/lbm-sdk/x/distribution/types" + stakingtypes "github.com/line/lbm-sdk/x/staking/types" + "github.com/stretchr/testify/require" +) + +func TestEncoding(t *testing.T) { + var ( + addr1 = RandomAccountAddress(t) + addr2 = RandomAccountAddress(t) + addr3 = RandomAccountAddress(t) + invalidAddr = "xrnd1d02kd90n38qvr3qb9qof83fn2d2" + ) + valAddr := sdk.ValAddress("foo") + valAddr2 := sdk.ValAddress("bar") + + jsonMsg := json.RawMessage(`{"foo": 123}`) + + bankMsg := &banktypes.MsgSend{ + FromAddress: addr2.String(), + ToAddress: addr1.String(), + Amount: sdk.Coins{ + sdk.NewInt64Coin("uatom", 12345), + sdk.NewInt64Coin("utgd", 54321), + }, + } + bankMsgBin, err := proto.Marshal(bankMsg) + require.NoError(t, err) + + content, err := codectypes.NewAnyWithValue(types.StoreCodeProposalFixture()) + require.NoError(t, err) + + proposalMsg := &govtypes.MsgSubmitProposal{ + Proposer: addr1.String(), + InitialDeposit: sdk.NewCoins(sdk.NewInt64Coin("uatom", 12345)), + Content: content, + } + proposalMsgBin, err := proto.Marshal(proposalMsg) + require.NoError(t, err) + + cases := map[string]struct { + sender sdk.AccAddress + srcMsg wasmvmtypes.CosmosMsg + srcContractIBCPort string + transferPortSource types.ICS20TransferPortSource + // set if valid + output []sdk.Msg + // set if invalid + isError bool + }{ + "simple send": { + sender: addr1, + srcMsg: wasmvmtypes.CosmosMsg{ + Bank: &wasmvmtypes.BankMsg{ + Send: &wasmvmtypes.SendMsg{ + ToAddress: addr2.String(), + Amount: []wasmvmtypes.Coin{ + { + Denom: "uatom", + Amount: "12345", + }, + { + Denom: "usdt", + Amount: "54321", + }, + }, + }, + }, + }, + output: []sdk.Msg{ + &banktypes.MsgSend{ + FromAddress: addr1.String(), + ToAddress: addr2.String(), + Amount: sdk.Coins{ + sdk.NewInt64Coin("uatom", 12345), + sdk.NewInt64Coin("usdt", 54321), + }, + }, + }, + }, + "invalid send amount": { + sender: addr1, + srcMsg: wasmvmtypes.CosmosMsg{ + Bank: &wasmvmtypes.BankMsg{ + Send: &wasmvmtypes.SendMsg{ + ToAddress: addr2.String(), + Amount: []wasmvmtypes.Coin{ + { + Denom: "uatom", + Amount: "123.456", + }, + }, + }, + }, + }, + isError: true, + }, + "invalid address": { + sender: addr1, + srcMsg: wasmvmtypes.CosmosMsg{ + Bank: &wasmvmtypes.BankMsg{ + Send: &wasmvmtypes.SendMsg{ + ToAddress: invalidAddr, + Amount: []wasmvmtypes.Coin{ + { + Denom: "uatom", + Amount: "7890", + }, + }, + }, + }, + }, + isError: false, // addresses are checked in the handler + output: []sdk.Msg{ + &banktypes.MsgSend{ + FromAddress: addr1.String(), + ToAddress: invalidAddr, + Amount: sdk.Coins{ + sdk.NewInt64Coin("uatom", 7890), + }, + }, + }, + }, + "wasm execute": { + sender: addr1, + srcMsg: wasmvmtypes.CosmosMsg{ + Wasm: &wasmvmtypes.WasmMsg{ + Execute: &wasmvmtypes.ExecuteMsg{ + ContractAddr: addr2.String(), + Msg: jsonMsg, + Send: []wasmvmtypes.Coin{ + wasmvmtypes.NewCoin(12, "eth"), + }, + }, + }, + }, + output: []sdk.Msg{ + &types.MsgExecuteContract{ + Sender: addr1.String(), + Contract: addr2.String(), + Msg: jsonMsg, + Funds: sdk.NewCoins(sdk.NewInt64Coin("eth", 12)), + }, + }, + }, + "wasm instantiate": { + sender: addr1, + srcMsg: wasmvmtypes.CosmosMsg{ + Wasm: &wasmvmtypes.WasmMsg{ + Instantiate: &wasmvmtypes.InstantiateMsg{ + CodeID: 7, + Msg: jsonMsg, + Send: []wasmvmtypes.Coin{ + wasmvmtypes.NewCoin(123, "eth"), + }, + Label: "myLabel", + Admin: addr2.String(), + }, + }, + }, + output: []sdk.Msg{ + &types.MsgInstantiateContract{ + Sender: addr1.String(), + CodeID: 7, + Label: "myLabel", + InitMsg: jsonMsg, + Funds: sdk.NewCoins(sdk.NewInt64Coin("eth", 123)), + Admin: addr2.String(), + }, + }, + }, + "wasm migrate": { + sender: addr2, + srcMsg: wasmvmtypes.CosmosMsg{ + Wasm: &wasmvmtypes.WasmMsg{ + Migrate: &wasmvmtypes.MigrateMsg{ + ContractAddr: addr1.String(), + NewCodeID: 12, + Msg: jsonMsg, + }, + }, + }, + output: []sdk.Msg{ + &types.MsgMigrateContract{ + Sender: addr2.String(), + Contract: addr1.String(), + CodeID: 12, + MigrateMsg: jsonMsg, + }, + }, + }, + "wasm update admin": { + sender: addr2, + srcMsg: wasmvmtypes.CosmosMsg{ + Wasm: &wasmvmtypes.WasmMsg{ + UpdateAdmin: &wasmvmtypes.UpdateAdminMsg{ + ContractAddr: addr1.String(), + Admin: addr3.String(), + }, + }, + }, + output: []sdk.Msg{ + &types.MsgUpdateAdmin{ + Sender: addr2.String(), + Contract: addr1.String(), + NewAdmin: addr3.String(), + }, + }, + }, + "wasm clear admin": { + sender: addr2, + srcMsg: wasmvmtypes.CosmosMsg{ + Wasm: &wasmvmtypes.WasmMsg{ + ClearAdmin: &wasmvmtypes.ClearAdminMsg{ + ContractAddr: addr1.String(), + }, + }, + }, + output: []sdk.Msg{ + &types.MsgClearAdmin{ + Sender: addr2.String(), + Contract: addr1.String(), + }, + }, + }, + "staking delegate": { + sender: addr1, + srcMsg: wasmvmtypes.CosmosMsg{ + Staking: &wasmvmtypes.StakingMsg{ + Delegate: &wasmvmtypes.DelegateMsg{ + Validator: valAddr.String(), + Amount: wasmvmtypes.NewCoin(777, "stake"), + }, + }, + }, + output: []sdk.Msg{ + &stakingtypes.MsgDelegate{ + DelegatorAddress: addr1.String(), + ValidatorAddress: valAddr.String(), + Amount: sdk.NewInt64Coin("stake", 777), + }, + }, + }, + "staking delegate to non-validator": { + sender: addr1, + srcMsg: wasmvmtypes.CosmosMsg{ + Staking: &wasmvmtypes.StakingMsg{ + Delegate: &wasmvmtypes.DelegateMsg{ + Validator: addr2.String(), + Amount: wasmvmtypes.NewCoin(777, "stake"), + }, + }, + }, + isError: false, // fails in the handler + output: []sdk.Msg{ + &stakingtypes.MsgDelegate{ + DelegatorAddress: addr1.String(), + ValidatorAddress: addr2.String(), + Amount: sdk.NewInt64Coin("stake", 777), + }, + }, + }, + "staking undelegate": { + sender: addr1, + srcMsg: wasmvmtypes.CosmosMsg{ + Staking: &wasmvmtypes.StakingMsg{ + Undelegate: &wasmvmtypes.UndelegateMsg{ + Validator: valAddr.String(), + Amount: wasmvmtypes.NewCoin(555, "stake"), + }, + }, + }, + output: []sdk.Msg{ + &stakingtypes.MsgUndelegate{ + DelegatorAddress: addr1.String(), + ValidatorAddress: valAddr.String(), + Amount: sdk.NewInt64Coin("stake", 555), + }, + }, + }, + "staking redelegate": { + sender: addr1, + srcMsg: wasmvmtypes.CosmosMsg{ + Staking: &wasmvmtypes.StakingMsg{ + Redelegate: &wasmvmtypes.RedelegateMsg{ + SrcValidator: valAddr.String(), + DstValidator: valAddr2.String(), + Amount: wasmvmtypes.NewCoin(222, "stake"), + }, + }, + }, + output: []sdk.Msg{ + &stakingtypes.MsgBeginRedelegate{ + DelegatorAddress: addr1.String(), + ValidatorSrcAddress: valAddr.String(), + ValidatorDstAddress: valAddr2.String(), + Amount: sdk.NewInt64Coin("stake", 222), + }, + }, + }, + "staking withdraw (explicit recipient)": { + sender: addr1, + srcMsg: wasmvmtypes.CosmosMsg{ + Distribution: &wasmvmtypes.DistributionMsg{ + WithdrawDelegatorReward: &wasmvmtypes.WithdrawDelegatorRewardMsg{ + Validator: valAddr2.String(), + }, + }, + }, + output: []sdk.Msg{ + &distributiontypes.MsgWithdrawDelegatorReward{ + DelegatorAddress: addr1.String(), + ValidatorAddress: valAddr2.String(), + }, + }, + }, + "staking set withdraw address": { + sender: addr1, + srcMsg: wasmvmtypes.CosmosMsg{ + Distribution: &wasmvmtypes.DistributionMsg{ + SetWithdrawAddress: &wasmvmtypes.SetWithdrawAddressMsg{ + Address: addr2.String(), + }, + }, + }, + output: []sdk.Msg{ + &distributiontypes.MsgSetWithdrawAddress{ + DelegatorAddress: addr1.String(), + WithdrawAddress: addr2.String(), + }, + }, + }, + "stargate encoded bank msg": { + sender: addr2, + srcMsg: wasmvmtypes.CosmosMsg{ + Stargate: &wasmvmtypes.StargateMsg{ + TypeURL: "/lbm.bank.v1.MsgSend", + Value: bankMsgBin, + }, + }, + output: []sdk.Msg{bankMsg}, + }, + "stargate encoded msg with any type": { + sender: addr2, + srcMsg: wasmvmtypes.CosmosMsg{ + Stargate: &wasmvmtypes.StargateMsg{ + TypeURL: "/lbm.gov.v1.MsgSubmitProposal", + Value: proposalMsgBin, + }, + }, + output: []sdk.Msg{proposalMsg}, + }, + "stargate encoded invalid typeUrl": { + sender: addr2, + srcMsg: wasmvmtypes.CosmosMsg{ + Stargate: &wasmvmtypes.StargateMsg{ + TypeURL: "/lbm.bank.invalidversion.MsgSend", + Value: bankMsgBin, + }, + }, + isError: true, + }, + "IBC transfer with block timeout": { + sender: addr1, + srcContractIBCPort: "myIBCPort", + srcMsg: wasmvmtypes.CosmosMsg{ + IBC: &wasmvmtypes.IBCMsg{ + Transfer: &wasmvmtypes.TransferMsg{ + ChannelID: "myChanID", + ToAddress: addr2.String(), + Amount: wasmvmtypes.Coin{ + Denom: "ALX", + Amount: "1", + }, + Timeout: wasmvmtypes.IBCTimeout{ + Block: &wasmvmtypes.IBCTimeoutBlock{Revision: 1, Height: 2}, + }, + }, + }, + }, + transferPortSource: wasmtesting.MockIBCTransferKeeper{GetPortFn: func(ctx sdk.Context) string { + return "myTransferPort" + }}, + output: []sdk.Msg{ + &ibctransfertypes.MsgTransfer{ + SourcePort: "myTransferPort", + SourceChannel: "myChanID", + Token: sdk.Coin{ + Denom: "ALX", + Amount: sdk.NewInt(1), + }, + Sender: addr1.String(), + Receiver: addr2.String(), + TimeoutHeight: clienttypes.Height{RevisionNumber: 1, RevisionHeight: 2}, + }, + }, + }, + "IBC transfer with time timeout": { + sender: addr1, + srcContractIBCPort: "myIBCPort", + srcMsg: wasmvmtypes.CosmosMsg{ + IBC: &wasmvmtypes.IBCMsg{ + Transfer: &wasmvmtypes.TransferMsg{ + ChannelID: "myChanID", + ToAddress: addr2.String(), + Amount: wasmvmtypes.Coin{ + Denom: "ALX", + Amount: "1", + }, + Timeout: wasmvmtypes.IBCTimeout{Timestamp: 100}, + }, + }, + }, + transferPortSource: wasmtesting.MockIBCTransferKeeper{GetPortFn: func(ctx sdk.Context) string { + return "transfer" + }}, + output: []sdk.Msg{ + &ibctransfertypes.MsgTransfer{ + SourcePort: "transfer", + SourceChannel: "myChanID", + Token: sdk.Coin{ + Denom: "ALX", + Amount: sdk.NewInt(1), + }, + Sender: addr1.String(), + Receiver: addr2.String(), + TimeoutTimestamp: 100, + }, + }, + }, + "IBC transfer with time and height timeout": { + sender: addr1, + srcContractIBCPort: "myIBCPort", + srcMsg: wasmvmtypes.CosmosMsg{ + IBC: &wasmvmtypes.IBCMsg{ + Transfer: &wasmvmtypes.TransferMsg{ + ChannelID: "myChanID", + ToAddress: addr2.String(), + Amount: wasmvmtypes.Coin{ + Denom: "ALX", + Amount: "1", + }, + Timeout: wasmvmtypes.IBCTimeout{Timestamp: 100, Block: &wasmvmtypes.IBCTimeoutBlock{Height: 1, Revision: 2}}, + }, + }, + }, + transferPortSource: wasmtesting.MockIBCTransferKeeper{GetPortFn: func(ctx sdk.Context) string { + return "transfer" + }}, + output: []sdk.Msg{ + &ibctransfertypes.MsgTransfer{ + SourcePort: "transfer", + SourceChannel: "myChanID", + Token: sdk.Coin{ + Denom: "ALX", + Amount: sdk.NewInt(1), + }, + Sender: addr1.String(), + Receiver: addr2.String(), + TimeoutTimestamp: 100, + TimeoutHeight: clienttypes.NewHeight(2, 1), + }, + }, + }, + "IBC close channel": { + sender: addr1, + srcContractIBCPort: "myIBCPort", + srcMsg: wasmvmtypes.CosmosMsg{ + IBC: &wasmvmtypes.IBCMsg{ + CloseChannel: &wasmvmtypes.CloseChannelMsg{ + ChannelID: "channel-1", + }, + }, + }, + output: []sdk.Msg{ + &channeltypes.MsgChannelCloseInit{ + PortId: "wasm." + addr1.String(), + ChannelId: "channel-1", + Signer: addr1.String(), + }, + }, + }, + } + encodingConfig := MakeEncodingConfig(t) + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + var ctx sdk.Context + encoder := DefaultEncoders(encodingConfig.Marshaler, tc.transferPortSource) + res, err := encoder.Encode(ctx, tc.sender, tc.srcContractIBCPort, tc.srcMsg) + if tc.isError { + require.Error(t, err) + } else { + require.NoError(t, err) + assert.Equal(t, tc.output, res) + } + }) + } +} + +func TestConvertWasmCoinToSdkCoin(t *testing.T) { + specs := map[string]struct { + src wasmvmtypes.Coin + expErr bool + expVal sdk.Coin + }{ + "all good": { + src: wasmvmtypes.Coin{ + Denom: "foo", + Amount: "1", + }, + expVal: sdk.NewCoin("foo", sdk.NewIntFromUint64(1)), + }, + "negative amount": { + src: wasmvmtypes.Coin{ + Denom: "foo", + Amount: "-1", + }, + expErr: true, + }, + "denom to short": { + src: wasmvmtypes.Coin{ + Denom: "f", + Amount: "1", + }, + expErr: true, + }, + "invalid demum char": { + src: wasmvmtypes.Coin{ + Denom: "&fff", + Amount: "1", + }, + expErr: true, + }, + "not a number amount": { + src: wasmvmtypes.Coin{ + Denom: "foo", + Amount: "bar", + }, + expErr: true, + }, + } + for name, spec := range specs { + t.Run(name, func(t *testing.T) { + gotVal, gotErr := convertWasmCoinToSdkCoin(spec.src) + if spec.expErr { + require.Error(t, gotErr) + return + } + require.NoError(t, gotErr) + assert.Equal(t, spec.expVal, gotVal) + }) + } + +} diff --git a/x/wasm/keeper/handler_plugin_test.go b/x/wasm/keeper/handler_plugin_test.go index 78fa6f4054..2926f1bd4c 100644 --- a/x/wasm/keeper/handler_plugin_test.go +++ b/x/wasm/keeper/handler_plugin_test.go @@ -2,8 +2,10 @@ package keeper import ( "encoding/json" - "testing" - + "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" + "github.com/line/lbm-sdk/x/wasm/types" + wasmvm "github.com/line/wasmvm" + wasmvmtypes "github.com/line/wasmvm/types" "github.com/line/lbm-sdk/baseapp" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" @@ -12,12 +14,9 @@ import ( clienttypes "github.com/line/lbm-sdk/x/ibc/core/02-client/types" channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" ibcexported "github.com/line/lbm-sdk/x/ibc/core/exported" - "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" - "github.com/line/lbm-sdk/x/wasm/types" - wasmvm "github.com/line/wasmvm" - wasmvmtypes "github.com/line/wasmvm/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "testing" ) func TestMessageHandlerChainDispatch(t *testing.T) { @@ -115,7 +114,7 @@ func TestSDKMessageHandlerDispatch(t *testing.T) { }{ "all good": { srcRoute: sdk.NewRoute(types.RouterKey, capturingRouteFn), - srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage, customEncodeRouter types.Router) ([]sdk.Msg, error) { + srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage) ([]sdk.Msg, error) { myMsg := types.MsgExecuteContract{ Sender: myContractAddr.String(), Contract: RandomBech32AccountAddress(t), @@ -127,7 +126,7 @@ func TestSDKMessageHandlerDispatch(t *testing.T) { }, "multiple output msgs": { srcRoute: sdk.NewRoute(types.RouterKey, capturingRouteFn), - srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage, customEncodeRouter types.Router) ([]sdk.Msg, error) { + srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage) ([]sdk.Msg, error) { first := &types.MsgExecuteContract{ Sender: myContractAddr.String(), Contract: RandomBech32AccountAddress(t), @@ -144,7 +143,7 @@ func TestSDKMessageHandlerDispatch(t *testing.T) { }, "invalid sdk message rejected": { srcRoute: sdk.NewRoute(types.RouterKey, capturingRouteFn), - srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage, customEncodeRouter types.Router) ([]sdk.Msg, error) { + srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage) ([]sdk.Msg, error) { invalidMsg := types.MsgExecuteContract{ Sender: myContractAddr.String(), Contract: RandomBech32AccountAddress(t), @@ -156,7 +155,7 @@ func TestSDKMessageHandlerDispatch(t *testing.T) { }, "invalid sender rejected": { srcRoute: sdk.NewRoute(types.RouterKey, capturingRouteFn), - srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage, customEncodeRouter types.Router) ([]sdk.Msg, error) { + srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage) ([]sdk.Msg, error) { invalidMsg := types.MsgExecuteContract{ Sender: RandomBech32AccountAddress(t), Contract: RandomBech32AccountAddress(t), @@ -168,7 +167,7 @@ func TestSDKMessageHandlerDispatch(t *testing.T) { }, "unroutable message rejected": { srcRoute: sdk.NewRoute("nothing", capturingRouteFn), - srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage, customEncodeRouter types.Router) ([]sdk.Msg, error) { + srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage) ([]sdk.Msg, error) { myMsg := types.MsgExecuteContract{ Sender: myContractAddr.String(), Contract: RandomBech32AccountAddress(t), @@ -180,7 +179,7 @@ func TestSDKMessageHandlerDispatch(t *testing.T) { }, "encoding error passed": { srcRoute: sdk.NewRoute("nothing", capturingRouteFn), - srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage, customEncodeRouter types.Router) ([]sdk.Msg, error) { + srcEncoder: func(sender sdk.AccAddress, msg json.RawMessage) ([]sdk.Msg, error) { myErr := types.ErrUnpinContractFailed return nil, myErr }, @@ -195,7 +194,7 @@ func TestSDKMessageHandlerDispatch(t *testing.T) { // when ctx := sdk.Context{} - h := NewSDKMessageHandler(router, nil, MessageEncoders{Custom: spec.srcEncoder}) + h := NewSDKMessageHandler(router, MessageEncoders{Custom: spec.srcEncoder}) gotEvents, gotData, gotErr := h.DispatchMsg(ctx, myContractAddr, "myPort", myContractMessage) // then From d11c6e9b5781e5f89a24165bad3b1459fbdd1a62 Mon Sep 17 00:00:00 2001 From: loloicci Date: Fri, 14 Jan 2022 21:03:46 +0900 Subject: [PATCH 06/90] revert 0f4ad5b90256b8b1cca6c81286124a10bde26a5c --- x/wasm/keeper/genesis_test.go | 2 +- x/wasm/keeper/keeper.go | 3 +-- x/wasm/keeper/options_test.go | 2 +- x/wasm/keeper/reflect_test.go | 2 +- x/wasm/keeper/submsg_test.go | 2 +- x/wasm/keeper/test_common.go | 1 - 6 files changed, 5 insertions(+), 7 deletions(-) diff --git a/x/wasm/keeper/genesis_test.go b/x/wasm/keeper/genesis_test.go index 96fc397289..d5f8e42655 100644 --- a/x/wasm/keeper/genesis_test.go +++ b/x/wasm/keeper/genesis_test.go @@ -669,7 +669,7 @@ func setupKeeper(t *testing.T) (*Keeper, sdk.Context, []sdk.StoreKey) { wasmConfig := wasmTypes.DefaultWasmConfig() pk := paramskeeper.NewKeeper(encodingConfig.Marshaler, encodingConfig.Amino, keyParams) - srcKeeper := NewKeeper(encodingConfig.Marshaler, keyWasm, pk.Subspace(wasmTypes.DefaultParamspace), authkeeper.AccountKeeper{}, nil, stakingkeeper.Keeper{}, distributionkeeper.Keeper{}, nil, nil, nil, nil, nil, nil, nil, tempDir, wasmConfig, SupportedFeatures, nil, nil) + srcKeeper := NewKeeper(encodingConfig.Marshaler, keyWasm, pk.Subspace(wasmTypes.DefaultParamspace), authkeeper.AccountKeeper{}, nil, stakingkeeper.Keeper{}, distributionkeeper.Keeper{}, nil, nil, nil, nil, nil, nil, tempDir, wasmConfig, SupportedFeatures, nil, nil) return &srcKeeper, ctx, []sdk.StoreKey{keyWasm, keyParams} } diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 9fcb717cc3..146d3af060 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -86,7 +86,6 @@ func NewKeeper( capabilityKeeper types.CapabilityKeeper, portSource types.ICS20TransferPortSource, router sdk.Router, - encodeRouter types.Router, queryRouter GRPCQueryRouter, homeDir string, wasmConfig types.WasmConfig, @@ -112,7 +111,7 @@ func NewKeeper( bank: NewBankCoinTransferrer(bankKeeper), portKeeper: portKeeper, capabilityKeeper: capabilityKeeper, - messenger: NewDefaultMessageHandler(router, encodeRouter, channelKeeper, capabilityKeeper, bankKeeper, cdc, portSource, customEncoders), + messenger: NewDefaultMessageHandler(router, channelKeeper, capabilityKeeper, bankKeeper, cdc, portSource, customEncoders), queryGasLimit: wasmConfig.SmartQueryGasLimit, paramSpace: paramSpace, metrics: NopMetrics(), diff --git a/x/wasm/keeper/options_test.go b/x/wasm/keeper/options_test.go index c76daa99b5..f70509550a 100644 --- a/x/wasm/keeper/options_test.go +++ b/x/wasm/keeper/options_test.go @@ -44,7 +44,7 @@ func TestConstructorOptions(t *testing.T) { } for name, spec := range specs { t.Run(name, func(t *testing.T) { - k := NewKeeper(nil, nil, paramtypes.NewSubspace(nil, nil, nil, ""), authkeeper.AccountKeeper{}, nil, stakingkeeper.Keeper{}, distributionkeeper.Keeper{}, nil, nil, nil, nil, nil, nil, nil, "tempDir", types.DefaultWasmConfig(), SupportedFeatures, nil, nil, spec.srcOpt) + k := NewKeeper(nil, nil, paramtypes.NewSubspace(nil, nil, nil, ""), authkeeper.AccountKeeper{}, nil, stakingkeeper.Keeper{}, distributionkeeper.Keeper{}, nil, nil, nil, nil, nil, nil, "tempDir", types.DefaultWasmConfig(), SupportedFeatures, nil, nil, spec.srcOpt) spec.verify(k) }) } diff --git a/x/wasm/keeper/reflect_test.go b/x/wasm/keeper/reflect_test.go index 44efbfca7a..cf41eeca50 100644 --- a/x/wasm/keeper/reflect_test.go +++ b/x/wasm/keeper/reflect_test.go @@ -555,7 +555,7 @@ func reflectEncoders(cdc codec.Marshaler) *MessageEncoders { // fromReflectRawMsg decodes msg.Data to an sdk.Msg using proto Any and json encoding. // this needs to be registered on the Encoders func fromReflectRawMsg(cdc codec.Marshaler) CustomEncoder { - return func(_sender sdk.AccAddress, msg json.RawMessage, customEncodeRouter types.Router) ([]sdk.Msg, error) { + return func(_sender sdk.AccAddress, msg json.RawMessage) ([]sdk.Msg, error) { var custom reflectCustomMsg err := json.Unmarshal(msg, &custom) if err != nil { diff --git a/x/wasm/keeper/submsg_test.go b/x/wasm/keeper/submsg_test.go index b21c80112e..932aac574a 100644 --- a/x/wasm/keeper/submsg_test.go +++ b/x/wasm/keeper/submsg_test.go @@ -388,7 +388,7 @@ func TestDispatchSubMsgEncodeToNoSdkMsg(t *testing.T) { Bank: nilEncoder, } - ctx, keepers := CreateTestInput(t, false, ReflectFeatures, nil, nil, WithMessageHandler(NewSDKMessageHandler(nil, nil, customEncoders))) + ctx, keepers := CreateTestInput(t, false, ReflectFeatures, nil, nil, WithMessageHandler(NewSDKMessageHandler(nil, customEncoders))) accKeeper, keeper, bankKeeper := keepers.AccountKeeper, keepers.WasmKeeper, keepers.BankKeeper deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) diff --git a/x/wasm/keeper/test_common.go b/x/wasm/keeper/test_common.go index c54277ced3..6ab5a64d0c 100644 --- a/x/wasm/keeper/test_common.go +++ b/x/wasm/keeper/test_common.go @@ -301,7 +301,6 @@ func createTestInput( scopedWasmKeeper, wasmtesting.MockIBCTransferKeeper{}, router, - nil, querier, tempDir, wasmConfig, From d9b2e65783305c2ef5beb603b73e42d759112e9e Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Mon, 14 Jun 2021 08:28:46 +0200 Subject: [PATCH 07/90] Empty submsg result does not overwrite --- x/wasm/keeper/msg_dispatcher.go | 2 +- x/wasm/keeper/msg_dispatcher_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x/wasm/keeper/msg_dispatcher.go b/x/wasm/keeper/msg_dispatcher.go index 41447d9c3a..26e0f78670 100644 --- a/x/wasm/keeper/msg_dispatcher.go +++ b/x/wasm/keeper/msg_dispatcher.go @@ -144,7 +144,7 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk switch { case err != nil: return nil, sdkerrors.Wrap(err, "reply") - case rspData != nil: + case len(rspData) != 0: rsp = rspData } } diff --git a/x/wasm/keeper/msg_dispatcher_test.go b/x/wasm/keeper/msg_dispatcher_test.go index 24b3f40d06..57ba7f35bb 100644 --- a/x/wasm/keeper/msg_dispatcher_test.go +++ b/x/wasm/keeper/msg_dispatcher_test.go @@ -200,7 +200,7 @@ func TestDispatchSubmessages(t *testing.T) { return nil, nil, errors.New("my error") }, }, - expData: []byte{}, + expData: []byte("myReplyData:1"), expCommits: []bool{false, false}, }, "empty replyOn rejected": { From 3d544e1716385aafdc1981eddf1ab1b094bb6da7 Mon Sep 17 00:00:00 2001 From: Alexander Peters Date: Mon, 14 Jun 2021 08:57:04 +0200 Subject: [PATCH 08/90] Store contract response in event (#535) * Store contract response in event * Review feedback --- x/wasm/keeper/msg_server.go | 6 +++++- x/wasm/keeper/proposal_handler.go | 11 ++++++++--- x/wasm/keeper/proposal_integration_test.go | 14 ++++++++++++-- x/wasm/types/events.go | 1 + 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/x/wasm/keeper/msg_server.go b/x/wasm/keeper/msg_server.go index 30e0cb818f..9b845dd6f7 100644 --- a/x/wasm/keeper/msg_server.go +++ b/x/wasm/keeper/msg_server.go @@ -2,6 +2,7 @@ package keeper import ( "context" + "encoding/hex" "fmt" sdk "github.com/line/lbm-sdk/types" @@ -75,6 +76,7 @@ func (m msgServer) InstantiateContract(goCtx context.Context, msg *types.MsgInst types.EventTypeInstantiateContract, sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", msg.CodeID)), sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()), + sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), )) return &types.MsgInstantiateContractResponse{ @@ -123,7 +125,7 @@ func (m msgServer) StoreCodeAndInstantiateContract(goCtx context.Context, ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeInstantiateContract, sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)), - sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()), + sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()), sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), )) return &types.MsgStoreCodeAndInstantiateContractResponse{ @@ -157,6 +159,7 @@ func (m msgServer) ExecuteContract(goCtx context.Context, msg *types.MsgExecuteC ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeExecuteContract, sdk.NewAttribute(types.AttributeKeyContract, msg.Contract), + sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), )) return &types.MsgExecuteContractResponse{ @@ -189,6 +192,7 @@ func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateC types.EventTypeMigrateContract, sdk.NewAttribute(types.AttributeKeyContract, msg.Contract), sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", msg.CodeID)), + sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), )) return &types.MsgMigrateContractResponse{ diff --git a/x/wasm/keeper/proposal_handler.go b/x/wasm/keeper/proposal_handler.go index 709e89b29f..2e3f519da7 100644 --- a/x/wasm/keeper/proposal_handler.go +++ b/x/wasm/keeper/proposal_handler.go @@ -1,6 +1,7 @@ package keeper import ( + "encoding/hex" "fmt" "strconv" "strings" @@ -87,7 +88,8 @@ func handleInstantiateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p typ return sdkerrors.Wrap(err, "admin") } - contractAddr, _, err := k.Instantiate(ctx, p.CodeID, sdk.AccAddress(p.RunAs), sdk.AccAddress(p.Admin), p.InitMsg, p.Label, p.Funds) + + contractAddr, data, err := k.Instantiate(ctx, p.CodeID, sdk.AccAddress(p.RunAs), sdk.AccAddress(p.Admin), p.InitMsg, p.Label, p.Funds) if err != nil { return err } @@ -96,6 +98,7 @@ func handleInstantiateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p typ types.EventTypeInstantiateContract, sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", p.CodeID)), sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()), + sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), ) ctx.EventManager().EmitEvent(ourEvent) return nil @@ -114,14 +117,16 @@ func handleMigrateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.M if err != nil { return sdkerrors.Wrap(err, "run as address") } - _, err = k.Migrate(ctx, sdk.AccAddress(p.Contract), sdk.AccAddress(p.RunAs), p.CodeID, p.MigrateMsg) + data, err := k.Migrate(ctx, sdk.AccAddress(p.Contract), sdk.AccAddress(p.RunAs), p.CodeID, p.MigrateMsg) if err != nil { return err } ourEvent := sdk.NewEvent( types.EventTypeMigrateContract, - sdk.NewAttribute(types.AttributeKeyContract, p.Contract), + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", p.CodeID)), + sdk.NewAttribute(types.AttributeKeyContract, p.Contract), + sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), ) ctx.EventManager().EmitEvent(ourEvent) return nil diff --git a/x/wasm/keeper/proposal_integration_test.go b/x/wasm/keeper/proposal_integration_test.go index a7f3d6e198..1c0dc1cad2 100644 --- a/x/wasm/keeper/proposal_integration_test.go +++ b/x/wasm/keeper/proposal_integration_test.go @@ -94,6 +94,7 @@ func TestInstantiateProposal(t *testing.T) { p.Admin = otherAddress.String() p.Label = "testing" }) + em := sdk.NewEventManager() // when stored storedProposal, err := govKeeper.SubmitProposal(ctx, src) @@ -101,7 +102,7 @@ func TestInstantiateProposal(t *testing.T) { // and proposal execute handler := govKeeper.Router().GetRoute(storedProposal.ProposalRoute()) - err = handler(ctx, storedProposal.GetContent()) + err = handler(ctx.WithEventManager(em), storedProposal.GetContent()) require.NoError(t, err) // then @@ -122,6 +123,10 @@ func TestInstantiateProposal(t *testing.T) { Msg: src.InitMsg, }} assert.Equal(t, expHistory, wasmKeeper.GetContractHistory(ctx, sdk.AccAddress(contractAddr))) + // and event + require.Len(t, em.Events(), 2, "%#v", em.Events()) + require.Len(t, em.Events()[0].Attributes, 2) + require.Len(t, em.Events()[1].Attributes, 3) } func TestMigrateProposal(t *testing.T) { @@ -174,13 +179,15 @@ func TestMigrateProposal(t *testing.T) { RunAs: otherAddress.String(), } + em := sdk.NewEventManager() + // when stored storedProposal, err := govKeeper.SubmitProposal(ctx, &src) require.NoError(t, err) // and proposal execute handler := govKeeper.Router().GetRoute(storedProposal.ProposalRoute()) - err = handler(ctx, storedProposal.GetContent()) + err = handler(ctx.WithEventManager(em), storedProposal.GetContent()) require.NoError(t, err) // then @@ -201,6 +208,9 @@ func TestMigrateProposal(t *testing.T) { Msg: src.MigrateMsg, }} assert.Equal(t, expHistory, wasmKeeper.GetContractHistory(ctx, contractAddr)) + // and events emitted + require.Len(t, em.Events(), 2) + require.Len(t, em.Events()[1].Attributes, 4) } func TestAdminProposals(t *testing.T) { diff --git a/x/wasm/types/events.go b/x/wasm/types/events.go index 8007cd978b..88c9d1c703 100644 --- a/x/wasm/types/events.go +++ b/x/wasm/types/events.go @@ -15,6 +15,7 @@ const ( // event attributes AttributeKeyContract = "contract_address" AttributeKeyCodeID = "code_id" AttributeKeySigner = "signer" + AttributeResultDataHex = "result" AttributeKeyCodeIDs = "code_ids" AttributeKeyContractStatus = "contract_status" ) From 06a4dd7210868f76761ea933989096ba54126e01 Mon Sep 17 00:00:00 2001 From: Alexander Peters Date: Mon, 14 Jun 2021 09:57:59 +0200 Subject: [PATCH 09/90] Add cli alias (#536) * Add cli alias * Review feedback --- x/wasm/client/cli/new_tx.go | 21 +++++++++-------- x/wasm/client/cli/query.go | 46 +++++++++++++++++++++---------------- x/wasm/client/cli/tx.go | 21 +++++++++-------- 3 files changed, 50 insertions(+), 38 deletions(-) diff --git a/x/wasm/client/cli/new_tx.go b/x/wasm/client/cli/new_tx.go index 07133d9108..a6717d35bf 100644 --- a/x/wasm/client/cli/new_tx.go +++ b/x/wasm/client/cli/new_tx.go @@ -14,9 +14,10 @@ import ( // MigrateContractCmd will migrate a contract to a new code version func MigrateContractCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "migrate [contract_addr_bech32] [new_code_id_int64] [json_encoded_migration_args]", - Short: "Migrate a wasm contract to a new code version", - Args: cobra.ExactArgs(3), + Use: "migrate [contract_addr_bech32] [new_code_id_int64] [json_encoded_migration_args]", + Short: "Migrate a wasm contract to a new code version", + Aliases: []string{"update", "mig", "m"}, + Args: cobra.ExactArgs(3), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, _ := client.GetClientTxContext(cmd) @@ -55,9 +56,10 @@ func parseMigrateContractArgs(args []string, cliCtx client.Context) (types.MsgMi // UpdateContractAdminCmd sets an new admin for a contract func UpdateContractAdminCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "set-contract-admin [contract_addr_bech32] [new_admin_addr_bech32]", - Short: "Set new admin for a contract", - Args: cobra.ExactArgs(2), + Use: "set-contract-admin [contract_addr_bech32] [new_admin_addr_bech32]", + Short: "Set new admin for a contract", + Aliases: []string{"new-admin", "admin", "set-adm", "sa"}, + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientTxContext(cmd) if err != nil { @@ -91,9 +93,10 @@ func parseUpdateContractAdminArgs(args []string, cliCtx client.Context) (types.M // ClearContractAdminCmd clears an admin for a contract func ClearContractAdminCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "clear-contract-admin [contract_addr_bech32]", - Short: "Clears admin for a contract to prevent further migrations", - Args: cobra.ExactArgs(1), + Use: "clear-contract-admin [contract_addr_bech32]", + Short: "Clears admin for a contract to prevent further migrations", + Aliases: []string{"clear-admin", "clr-adm"}, + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientTxContext(cmd) if err != nil { diff --git a/x/wasm/client/cli/query.go b/x/wasm/client/cli/query.go index 3ab7d4bd11..9d09385683 100644 --- a/x/wasm/client/cli/query.go +++ b/x/wasm/client/cli/query.go @@ -40,10 +40,11 @@ func GetQueryCmd() *cobra.Command { // GetCmdListCode lists all wasm code uploaded func GetCmdListCode() *cobra.Command { cmd := &cobra.Command{ - Use: "list-code", - Short: "List all wasm bytecode on the chain", - Long: "List all wasm bytecode on the chain", - Args: cobra.ExactArgs(0), + Use: "list-code", + Short: "List all wasm bytecode on the chain", + Long: "List all wasm bytecode on the chain", + Aliases: []string{"list-codes", "codes", "lco"}, + Args: cobra.ExactArgs(0), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) if err != nil { @@ -75,10 +76,11 @@ func GetCmdListCode() *cobra.Command { // GetCmdListContractByCode lists all wasm code uploaded for given code id func GetCmdListContractByCode() *cobra.Command { cmd := &cobra.Command{ - Use: "list-contract-by-code [code_id]", - Short: "List wasm all bytecode on the chain for given code id", - Long: "List wasm all bytecode on the chain for given code id", - Args: cobra.ExactArgs(1), + Use: "list-contract-by-code [code_id]", + Short: "List wasm all bytecode on the chain for given code id", + Long: "List wasm all bytecode on the chain for given code id", + Aliases: []string{"list-contracts-by-code", "list-contracts", "contracts", "lca"}, + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) if err != nil { @@ -116,10 +118,11 @@ func GetCmdListContractByCode() *cobra.Command { // GetCmdQueryCode returns the bytecode for a given contract func GetCmdQueryCode() *cobra.Command { cmd := &cobra.Command{ - Use: "code [code_id] [output filename]", - Short: "Downloads wasm bytecode for given code id", - Long: "Downloads wasm bytecode for given code id", - Args: cobra.ExactArgs(2), + Use: "code [code_id] [output filename]", + Short: "Downloads wasm bytecode for given code id", + Long: "Downloads wasm bytecode for given code id", + Aliases: []string{"source-code", "source"}, + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) if err != nil { @@ -156,10 +159,11 @@ func GetCmdQueryCode() *cobra.Command { // GetCmdGetContractInfo gets details about a given contract func GetCmdGetContractInfo() *cobra.Command { cmd := &cobra.Command{ - Use: "contract [bech32_address]", - Short: "Prints out metadata of a contract given its address", - Long: "Prints out metadata of a contract given its address", - Args: cobra.ExactArgs(1), + Use: "contract [bech32_address]", + Short: "Prints out metadata of a contract given its address", + Long: "Prints out metadata of a contract given its address", + Aliases: []string{"meta", "c"}, + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) @@ -193,6 +197,7 @@ func GetCmdGetContractState() *cobra.Command { cmd := &cobra.Command{ Use: "contract-state", Short: "Querying commands for the wasm module", + Aliases: []string{"state", "cs", "s"}, DisableFlagParsing: true, SuggestionsMinimumDistance: 2, RunE: client.ValidateCmd, @@ -338,10 +343,11 @@ func GetCmdGetContractStateSmart() *cobra.Command { // GetCmdGetContractHistory prints the code history for a given contract func GetCmdGetContractHistory() *cobra.Command { cmd := &cobra.Command{ - Use: "contract-history [bech32_address]", - Short: "Prints out the code history for a contract given its address", - Long: "Prints out the code history for a contract given its address", - Args: cobra.ExactArgs(1), + Use: "contract-history [bech32_address]", + Short: "Prints out the code history for a contract given its address", + Long: "Prints out the code history for a contract given its address", + Aliases: []string{"history", "hist", "ch"}, + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientQueryContext(cmd) if err != nil { diff --git a/x/wasm/client/cli/tx.go b/x/wasm/client/cli/tx.go index 283ee7c8a6..b9937921b8 100644 --- a/x/wasm/client/cli/tx.go +++ b/x/wasm/client/cli/tx.go @@ -54,9 +54,10 @@ func GetTxCmd() *cobra.Command { // StoreCodeCmd will upload code to be reused. func StoreCodeCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "store [wasm file] --source [source] --builder [builder]", - Short: "Upload a wasm binary", - Args: cobra.ExactArgs(1), + Use: "store [wasm file] --source [source] --builder [builder]", + Short: "Upload a wasm binary", + Aliases: []string{"upload", "st", "s"}, + Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientTxContext(cmd) if err != nil { @@ -149,9 +150,10 @@ func parseStoreCodeArgs(file string, sender sdk.AccAddress, flags *flag.FlagSet) // InstantiateContractCmd will instantiate a contract from previously uploaded code. func InstantiateContractCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "instantiate [code_id_int64] [json_encoded_init_args] --label [text] --admin [address,optional] --amount [coins,optional]", - Short: "Instantiate a wasm contract", - Args: cobra.ExactArgs(2), + Use: "instantiate [code_id_int64] [json_encoded_init_args] --label [text] --admin [address,optional] --amount [coins,optional]", + Short: "Instantiate a wasm contract", + Aliases: []string{"start", "init", "inst", "i"}, + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientTxContext(cmd) @@ -340,9 +342,10 @@ func parseStoreCodeAndInstantiateContractArgs(file string, initMsg string, sende // ExecuteContractCmd will instantiate a contract from previously uploaded code. func ExecuteContractCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "execute [contract_addr_bech32] [json_encoded_send_args] --amount [coins,optional]", - Short: "Execute a command on a wasm contract", - Args: cobra.ExactArgs(2), + Use: "execute [contract_addr_bech32] [json_encoded_send_args] --amount [coins,optional]", + Short: "Execute a command on a wasm contract", + Aliases: []string{"run", "call", "exec", "ex", "e"}, + Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { clientCtx, err := client.GetClientTxContext(cmd) if err != nil { From c92fd6dd9f85d0948e2ee9b613b9d04d957670ab Mon Sep 17 00:00:00 2001 From: Alexander Peters Date: Fri, 25 Jun 2021 10:00:46 +0200 Subject: [PATCH 10/90] Charge gas for custom event attributes and messages (#539) * Charge gas for custom event attributes * Introduce gas register for gas costs * Review feedback * Tests and minor updates * Godoc --- x/wasm/keeper/api.go | 6 +- x/wasm/keeper/gas_register.go | 92 ++++++++++++ x/wasm/keeper/keeper.go | 229 ++++++++++++++++++++---------- x/wasm/keeper/keeper_test.go | 4 +- x/wasm/keeper/msg_server.go | 14 +- x/wasm/keeper/options.go | 9 ++ x/wasm/keeper/proposal_handler.go | 12 +- x/wasm/keeper/query_plugins.go | 6 +- x/wasm/keeper/recurse_test.go | 15 +- x/wasm/keeper/relay.go | 75 ++++------ x/wasm/keeper/relay_test.go | 208 ++++++++++++++------------- x/wasm/types/events.go | 4 +- x/wasm/types/types.go | 6 +- 13 files changed, 423 insertions(+), 257 deletions(-) create mode 100644 x/wasm/keeper/gas_register.go diff --git a/x/wasm/keeper/api.go b/x/wasm/keeper/api.go index b893036e6d..7e3b1860d2 100644 --- a/x/wasm/keeper/api.go +++ b/x/wasm/keeper/api.go @@ -8,11 +8,11 @@ import ( ) type cosmwasmAPIImpl struct { - gasMultiplier uint64 + gasMultiplier GasMultiplier } func (a cosmwasmAPIImpl) humanAddress(canon []byte) (string, uint64, error) { - gas := 5 * a.gasMultiplier + gas := a.gasMultiplier.FromWasmVMGas(5) if len(canon) != sdk.BytesAddrLen { //nolint:stylecheck return "", gas, fmt.Errorf("expected %d byte address", sdk.BytesAddrLen) @@ -23,7 +23,7 @@ func (a cosmwasmAPIImpl) humanAddress(canon []byte) (string, uint64, error) { func (a cosmwasmAPIImpl) canonicalAddress(human string) ([]byte, uint64, error) { bz, err := sdk.AccAddressToBytes(human) - return bz, 4 * a.gasMultiplier, err + return bz, a.gasMultiplier.ToWasmVMGas(4), err } func (k Keeper) cosmwasmAPI(ctx sdk.Context) wasmvm.GoAPI { diff --git a/x/wasm/keeper/gas_register.go b/x/wasm/keeper/gas_register.go new file mode 100644 index 0000000000..15ed0ebba5 --- /dev/null +++ b/x/wasm/keeper/gas_register.go @@ -0,0 +1,92 @@ +package keeper + +import ( + wasmvmtypes "github.com/line/wasmvm/types" + sdk "github.com/line/lbm-sdk/types" +) + +const ( + // DefaultEventAttributeDataCost is how much SDK gas is charged *per byte* for attribute data in events. + // This is used with len(key) + len(value) + DefaultEventAttributeDataCost uint64 = 1 + // DefaultContractMessageDataCost is how much SDK gas is charged *per byte* of the message that goes to the contract + // This is used with len(msg) + DefaultContractMessageDataCost uint64 = 1 + // DefaultPerAttributeCost is how much SDK gas we charge per attribute count. + DefaultPerAttributeCost uint64 = 10 + // DefaultEventAttributeDataFreeTier number of bytes of total attribute data we do not charge. + DefaultEventAttributeDataFreeTier = 100 +) + +// GasRegister abstract source for gas costs +type GasRegister interface { + // NewContractInstanceCosts costs to crate a new contract instance from code + // EventCosts costs to persist an event + EventCosts(evts []wasmvmtypes.EventAttribute) sdk.Gas +} + +// WasmGasRegisterConfig config type +type WasmGasRegisterConfig struct { + // EventPerAttributeCost is how much SDK gas is charged *per byte* for attribute data in events. + // This is used with len(key) + len(value) + EventPerAttributeCost sdk.Gas + // EventAttributeDataCost is how much SDK gas is charged *per byte* for attribute data in events. + // This is used with len(key) + len(value) + EventAttributeDataCost sdk.Gas + // EventAttributeDataFreeTier number of bytes of total attribute data that is free of charge + EventAttributeDataFreeTier int + // ContractMessageDataCost SDK gas charged *per byte* of the message that goes to the contract + // This is used with len(msg) + ContractMessageDataCost sdk.Gas +} + +// DefaultGasRegisterConfig default values +func DefaultGasRegisterConfig() WasmGasRegisterConfig { + return WasmGasRegisterConfig{ + EventPerAttributeCost: DefaultPerAttributeCost, + EventAttributeDataCost: DefaultEventAttributeDataCost, + EventAttributeDataFreeTier: DefaultEventAttributeDataFreeTier, + ContractMessageDataCost: DefaultContractMessageDataCost, + } +} + +// WasmGasRegister implements GasRegister interface +type WasmGasRegister struct { + c WasmGasRegisterConfig +} + +// NewDefaultWasmGasRegister creates instance with default values +func NewDefaultWasmGasRegister() WasmGasRegister { + return NewWasmGasRegister(DefaultGasRegisterConfig()) +} + +// NewWasmGasRegister constructor +func NewWasmGasRegister(c WasmGasRegisterConfig) WasmGasRegister { + return WasmGasRegister{ + c: c, + } +} + +// EventCosts costs to persist an event +func (g WasmGasRegister) EventCosts(evts []wasmvmtypes.EventAttribute) sdk.Gas { + if len(evts) == 0 { + return 0 + } + var storedBytes int + for _, l := range evts { + storedBytes += len(l.Key) + len(l.Value) + } + // apply free tier + if storedBytes <= g.c.EventAttributeDataFreeTier { + storedBytes = 0 + } else { + storedBytes -= g.c.EventAttributeDataFreeTier + } + // total Length * costs + attribute count * costs + r := sdk.NewIntFromUint64(g.c.EventAttributeDataCost).Mul(sdk.NewIntFromUint64(uint64(storedBytes))). + Add(sdk.NewIntFromUint64(g.c.EventPerAttributeCost).Mul(sdk.NewIntFromUint64(uint64(len(evts))))) + if !r.IsUint64() { + panic(sdk.ErrorOutOfGas{Descriptor: "overflow"}) + } + return r.Uint64() +} diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 146d3af060..a14c240de4 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -10,6 +10,7 @@ import ( "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/store/prefix" + storetypes "github.com/line/lbm-sdk/store/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" paramtypes "github.com/line/lbm-sdk/x/params/types" @@ -69,6 +70,7 @@ type Keeper struct { // queryGasLimit is the max wasmvm gas that can be spent on executing a query with a contract queryGasLimit uint64 paramSpace *paramtypes.Subspace + gasRegister WasmGasRegister } // NewKeeper creates a new contract Keeper instance @@ -115,6 +117,7 @@ func NewKeeper( queryGasLimit: wasmConfig.SmartQueryGasLimit, paramSpace: paramSpace, metrics: NopMetrics(), + gasRegister: NewDefaultWasmGasRegister(), } keeper.wasmVMQueryHandler = DefaultQueryPlugins(bankKeeper, stakingKeeper, distKeeper, channelKeeper, queryRouter, keeper).Merge(customPlugins) @@ -150,10 +153,10 @@ func (k Keeper) getMaxWasmCodeSize(ctx sdk.Context) uint64 { return a } -func (k Keeper) getGasMultiplier(ctx sdk.Context) uint64 { +func (k Keeper) getGasMultiplier(ctx sdk.Context) GasMultiplier { var a uint64 k.paramSpace.Get(ctx, types.ParamStoreKeyGasMultiplier, &a) - return a + return NewGasMultiplier(a) } func (k Keeper) getInstanceCost(ctx sdk.Context) uint64 { @@ -162,12 +165,54 @@ func (k Keeper) getInstanceCost(ctx sdk.Context) uint64 { return a } +// NewContractInstanceCosts costs to crate a new contract instance from code +func (k Keeper) newContractInstanceCosts(g WasmGasRegister, ctx sdk.Context, pinned bool, msgLen int) storetypes.Gas { + return k.instantiateContractCosts(g, ctx, pinned, msgLen) +} + +// InstantiateContractCosts costs when interacting with a wasm contract +func (k Keeper) instantiateContractCosts(g WasmGasRegister, ctx sdk.Context, pinned bool, msgLen int) sdk.Gas { + if msgLen < 0 { + panic(sdkerrors.Wrap(types.ErrInvalid, "negative length")) + } + dataCosts := sdk.Gas(msgLen) * g.c.ContractMessageDataCost + if pinned { + return dataCosts + } + return k.getInstanceCost(ctx) + dataCosts +} + +// ReplyCosts costs to to handle a message reply +func (k Keeper) replyCosts(g WasmGasRegister, ctx sdk.Context, pinned bool, reply wasmvmtypes.Reply) sdk.Gas { + var eventGas sdk.Gas + msgLen := len(reply.Result.Err) + if reply.Result.Ok != nil { + msgLen += len(reply.Result.Ok.Data) + var attrs []wasmvmtypes.EventAttribute + for _, e := range reply.Result.Ok.Events { + msgLen += len(e.Type) + attrs = append(e.Attributes) + } + // apply free tier on the whole set not per event + eventGas += g.EventCosts(attrs) + } + return eventGas + k.instantiateContractCosts(g, ctx, pinned, msgLen) +} + func (k Keeper) getCompileCost(ctx sdk.Context) uint64 { var a uint64 k.paramSpace.Get(ctx, types.ParamStoreKeyCompileCost, &a) return a } +// CompileCosts costs to persist and "compile" a new wasm contract +func (k Keeper) compileCosts(ctx sdk.Context, byteLength int) storetypes.Gas { + if byteLength < 0 { + panic(sdkerrors.Wrap(types.ErrInvalid, "negative length")) + } + return k.getCompileCost(ctx) * uint64(byteLength) +} + // GetParams returns the total set of wasm parameters. func (k Keeper) GetParams(ctx sdk.Context) types.Params { var params types.Params @@ -187,7 +232,7 @@ func (k Keeper) create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, if err != nil { return 0, sdkerrors.Wrap(types.ErrCreateFailed, err.Error()) } - ctx.GasMeter().ConsumeGas(k.getCompileCost(ctx)*uint64(len(wasmCode)), "Compiling WASM Bytecode") + ctx.GasMeter().ConsumeGas(k.compileCosts(ctx, len(wasmCode)), "Compiling WASM Bytecode") codeHash, err := k.wasmVM.Create(wasmCode) if err != nil { @@ -234,9 +279,9 @@ func (k Keeper) importCode(ctx sdk.Context, codeID uint64, codeInfo types.CodeIn func (k Keeper) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.AccAddress, initMsg []byte, label string, deposit sdk.Coins, authZ AuthorizationPolicy) (sdk.AccAddress, []byte, error) { defer func(begin time.Time) { k.metrics.InstantiateElapsedTimes.Observe(time.Since(begin).Seconds()) }(time.Now()) - if !k.IsPinnedCode(ctx, codeID) { - ctx.GasMeter().ConsumeGas(k.getInstanceCost(ctx), "Loading CosmWasm module: instantiate") - } + + instanceCosts := k.newContractInstanceCosts(k.gasRegister, ctx, k.IsPinnedCode(ctx, codeID), len(initMsg)) + ctx.GasMeter().ConsumeGas(instanceCosts, "Loading CosmWasm module: instantiate") // create contract address contractAddress := k.generateContractAddress(ctx, codeID) @@ -282,20 +327,17 @@ func (k Keeper) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.A wasmStore := types.NewWasmStore(prefixStore) // prepare querier - querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddress, k.getGasMultiplier(ctx)) + querier := k.newQueryHandler(ctx, contractAddress) // instantiate wasm contract - gas := gasForContract(ctx, k.getGasMultiplier(ctx)) + gas := k.runtimeGasForContract(ctx) res, gasUsed, err := k.wasmVM.Instantiate(codeInfo.CodeHash, env, info, initMsg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas) - k.consumeGas(ctx, gasUsed) + k.consumeRuntimeGas(ctx, gasUsed) + if err != nil { return contractAddress, nil, sdkerrors.Wrap(types.ErrInstantiateFailed, err.Error()) } - // emit all events from this contract itself - events := types.ParseEvents(res.Attributes, contractAddress) - ctx.EventManager().EmitEvents(events) - // persist instance first createdAt := types.NewAbsoluteTxPosition(ctx) contractInfo := types.NewContractInfo(codeID, creator, admin, label, createdAt, types.ContractStatusActive) @@ -321,7 +363,7 @@ func (k Keeper) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.A k.storeContractInfo(ctx, contractAddress, &contractInfo) // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Data) if err != nil { return "", nil, sdkerrors.Wrap(err, "dispatch") } @@ -340,9 +382,8 @@ func (k Keeper) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller return nil, sdkerrors.Wrap(types.ErrInvalid, "inactive contract") } - if !k.IsPinnedCode(ctx, contractInfo.CodeID) { - ctx.GasMeter().ConsumeGas(k.getInstanceCost(ctx), "Loading CosmWasm module: execute") - } + executeCosts := k.instantiateContractCosts(k.gasRegister, ctx, k.IsPinnedCode(ctx, contractInfo.CodeID), len(msg)) + ctx.GasMeter().ConsumeGas(executeCosts, "Loading CosmWasm module: execute") // add more funds if !coins.IsZero() { @@ -355,21 +396,18 @@ func (k Keeper) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller info := types.NewInfo(caller, coins) // prepare querier - querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddress, k.getGasMultiplier(ctx)) - gas := gasForContract(ctx, k.getGasMultiplier(ctx)) + querier := k.newQueryHandler(ctx, contractAddress) + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) res, gasUsed, execErr := k.wasmVM.Execute(codeInfo.CodeHash, env, info, msg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas) - k.consumeGas(ctx, gasUsed) + k.consumeRuntimeGas(ctx, gasUsed) + if execErr != nil { return nil, sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - // emit all events from this contract itself - events := types.ParseEvents(res.Attributes, contractAddress) - ctx.EventManager().EmitEvents(events) - // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Data) if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } @@ -378,9 +416,8 @@ func (k Keeper) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte, authZ AuthorizationPolicy) ([]byte, error) { defer func(begin time.Time) { k.metrics.MigrateElapsedTimes.Observe(time.Since(begin).Seconds()) }(time.Now()) - if !k.IsPinnedCode(ctx, newCodeID) { - ctx.GasMeter().ConsumeGas(k.getInstanceCost(ctx), "Loading CosmWasm module: migrate") - } + migrateSetupCosts := k.instantiateContractCosts(k.gasRegister, ctx, k.IsPinnedCode(ctx, newCodeID), len(msg)) + ctx.GasMeter().ConsumeGas(migrateSetupCosts, "Loading CosmWasm module: migrate") contractInfo := k.GetContractInfo(ctx, contractAddress) if contractInfo == nil { @@ -417,22 +454,19 @@ func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller env := types.NewEnv(ctx, contractAddress) // prepare querier - querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddress, k.getGasMultiplier(ctx)) + querier := k.newQueryHandler(ctx, contractAddress) prefixStoreKey := types.GetContractStorePrefix(contractAddress) prefixStore := prefix.NewStore(ctx.KVStore(k.storeKey), prefixStoreKey) - gas := gasForContract(ctx, k.getGasMultiplier(ctx)) + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) res, gasUsed, err := k.wasmVM.Migrate(newCodeInfo.CodeHash, env, msg, &wasmStore, k.cosmwasmAPI(ctx), &querier, k.gasMeter(ctx), gas) - k.consumeGas(ctx, gasUsed) + k.consumeRuntimeGas(ctx, gasUsed) + if err != nil { return nil, sdkerrors.Wrap(types.ErrMigrationFailed, err.Error()) } - // emit all events from this contract migration itself - events := types.ParseEvents(res.Attributes, contractAddress) - ctx.EventManager().EmitEvents(events) - // delete old secondary index entry k.removeFromContractCodeSecondaryIndex(ctx, contractAddress, k.getLastContractHistoryEntry(ctx, contractAddress)) // persist migration updates @@ -442,7 +476,7 @@ func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller k.storeContractInfo(ctx, contractAddress, contractInfo) // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Data) if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } @@ -459,28 +493,23 @@ func (k Keeper) Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte return nil, err } - if !k.IsPinnedCode(ctx, contractInfo.CodeID) { - ctx.GasMeter().ConsumeGas(k.getInstanceCost(ctx), "Loading CosmWasm module: sudo") - } + sudoSetupCosts := k.instantiateContractCosts(k.gasRegister, ctx, k.IsPinnedCode(ctx, contractInfo.CodeID), len(msg)) + ctx.GasMeter().ConsumeGas(sudoSetupCosts, "Loading CosmWasm module: sudo") env := types.NewEnv(ctx, contractAddress) // prepare querier - querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddress, k.getGasMultiplier(ctx)) - gas := gasForContract(ctx, k.getGasMultiplier(ctx)) + querier := k.newQueryHandler(ctx, contractAddress) wasmStore := types.NewWasmStore(prefixStore) + gas := k.runtimeGasForContract(ctx) res, gasUsed, execErr := k.wasmVM.Sudo(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas) - k.consumeGas(ctx, gasUsed) + k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { return nil, sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - // emit all events from this contract itself - events := types.ParseEvents(res.Attributes, contractAddress) - ctx.EventManager().EmitEvents(events) - // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Data) if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } @@ -495,10 +524,8 @@ func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply was return nil, err } - // current thought is to charge gas like a fresh run, we can revisit whether to give it a discount later - if !k.IsPinnedCode(ctx, contractInfo.CodeID) { - ctx.GasMeter().ConsumeGas(k.getInstanceCost(ctx), "Loading CosmWasm module: reply") - } + replyCosts := k.replyCosts(k.gasRegister, ctx, k.IsPinnedCode(ctx, contractInfo.CodeID), reply) + ctx.GasMeter().ConsumeGas(replyCosts, "Loading CosmWasm module: reply") env := types.NewEnv(ctx, contractAddress) @@ -508,20 +535,17 @@ func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply was Plugins: k.wasmVMQueryHandler, GasMultiplier: k.getGasMultiplier(ctx), } - gas := gasForContract(ctx, k.getGasMultiplier(ctx)) + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) res, gasUsed, execErr := k.wasmVM.Reply(codeInfo.CodeHash, env, reply, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas) - k.consumeGas(ctx, gasUsed) + k.consumeRuntimeGas(ctx, gasUsed) + if execErr != nil { return nil, sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - // emit all events from this contract itself - events := types.ParseEvents(res.Attributes, contractAddress) - ctx.EventManager().EmitEvents(events) - // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Data) if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } @@ -630,17 +654,18 @@ func (k Keeper) QuerySmart(ctx sdk.Context, contractAddr sdk.AccAddress, req []b if err != nil { return nil, err } - if !k.IsPinnedCode(ctx, contractInfo.CodeID) { - ctx.GasMeter().ConsumeGas(k.getInstanceCost(ctx), "Loading CosmWasm module: query") - } + + smartQuerySetupCosts := k.instantiateContractCosts(k.gasRegister, ctx, k.IsPinnedCode(ctx, contractInfo.CodeID), len(req)) + ctx.GasMeter().ConsumeGas(smartQuerySetupCosts, "Loading CosmWasm module: query") // prepare querier - querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) + querier := k.newQueryHandler(ctx, contractAddr) env := types.NewEnv(ctx, contractAddr) wasmStore := types.NewWasmStore(prefixStore) - queryResult, gasUsed, qErr := k.wasmVM.Query(codeInfo.CodeHash, env, req, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gasForContract(ctx, k.getGasMultiplier(ctx))) - k.consumeGas(ctx, gasUsed) + queryResult, gasUsed, qErr := k.wasmVM.Query(codeInfo.CodeHash, env, req, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), k.runtimeGasForContract(ctx)) + k.consumeRuntimeGas(ctx, gasUsed) + if qErr != nil { return nil, sdkerrors.Wrap(types.ErrQueryFailed, qErr.Error()) } @@ -841,22 +866,39 @@ func (k Keeper) setContractInfoExtension(ctx sdk.Context, contractAddr sdk.AccAd return nil } -// handleContractResponse processes the contract response -func (k *Keeper) handleContractResponse(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, res *wasmvmtypes.Response) ([]byte, error) { - return k.wasmVMResponseHandler.Handle(ctx, contractAddr, ibcPort, res.Submessages, res.Messages, res.Data) +// handleContractResponse processes the contract response data by emitting events and sending sub-/messages. +func (k *Keeper) handleContractResponse( + ctx sdk.Context, + contractAddr sdk.AccAddress, + ibcPort string, + subMsg []wasmvmtypes.SubMsg, + msgs []wasmvmtypes.CosmosMsg, + attrs []wasmvmtypes.EventAttribute, + data []byte, +) ([]byte, error) { + attributeGasCost := k.gasRegister.EventCosts(attrs) + ctx.GasMeter().ConsumeGas(attributeGasCost, "Custom contract event attributes") + // emit all events from this contract itself + events := types.ParseEvents(attrs, contractAddr) + ctx.EventManager().EmitEvents(events) + return k.wasmVMResponseHandler.Handle(ctx, contractAddr, ibcPort, subMsg, msgs, data) } -func gasForContract(ctx sdk.Context, gasMultiplier uint64) uint64 { +func (k Keeper) runtimeGasForContract(ctx sdk.Context) uint64 { meter := ctx.GasMeter() if meter.IsOutOfGas() { return 0 } - remaining := (meter.Limit() - meter.GasConsumedToLimit()) * gasMultiplier - return remaining + + if meter.Limit() == 0 { // infinite gas meter with limit=0 and not out of gas + return math.MaxUint64 + } + + return k.getGasMultiplier(ctx).ToWasmVMGas(meter.Limit() - meter.GasConsumedToLimit()) } -func (k Keeper) consumeGas(ctx sdk.Context, gas uint64) { - consumed := gas / k.getGasMultiplier(ctx) +func (k Keeper) consumeRuntimeGas(ctx sdk.Context, gas uint64) { + consumed := k.getGasMultiplier(ctx).FromWasmVMGas(gas) ctx.GasMeter().ConsumeGas(consumed, "wasm contract") // throw OutOfGas error if we ran out (got exactly to zero due to better limit enforcing) if ctx.GasMeter().IsOutOfGas() { @@ -941,6 +983,10 @@ func (k Keeper) importContract(ctx sdk.Context, contractAddr sdk.AccAddress, c * return k.importContractState(ctx, contractAddr, state) } +func (k Keeper) newQueryHandler(ctx sdk.Context, contractAddress sdk.AccAddress) QueryHandler { + return NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddress, k.getGasMultiplier(ctx)) +} + func addrFromUint64(id uint64) sdk.AccAddress { addr := make([]byte, 20) addr[0] = 'C' @@ -948,23 +994,50 @@ func addrFromUint64(id uint64) sdk.AccAddress { return sdk.BytesToAccAddress(crypto.AddressHash(addr)) } +type GasMultiplier struct { + multiplier uint64 +} + +func NewGasMultiplier(multiplier uint64) GasMultiplier { + if multiplier == 0 { + panic(sdkerrors.Wrap(sdkerrors.ErrLogic, "GasMultiplier can not be 0")) + } + + return GasMultiplier{multiplier: multiplier} +} + +// ToWasmVMGas convert to wasmVM contract runtime gas unit +func (m GasMultiplier) ToWasmVMGas(source storetypes.Gas) uint64 { + x := source * m.multiplier + if x < source { + panic(sdk.ErrorOutOfGas{Descriptor: "overflow"}) + } + return x +} + +// FromWasmVMGas converts to SDK gas unit +func (m GasMultiplier) FromWasmVMGas(source uint64) sdk.Gas { + return source / m.multiplier +} + // MultipliedGasMeter wraps the GasMeter from context and multiplies all reads by out defined multiplier type MultipliedGasMeter struct { originalMeter sdk.GasMeter - gasMultiplier uint64 + GasMultiplier GasMultiplier +} + +func NewMultipliedGasMeter(originalMeter sdk.GasMeter, m GasMultiplier) MultipliedGasMeter { + return MultipliedGasMeter{originalMeter: originalMeter, GasMultiplier: m} } var _ wasmvm.GasMeter = MultipliedGasMeter{} func (m MultipliedGasMeter) GasConsumed() sdk.Gas { - return m.originalMeter.GasConsumed() * m.gasMultiplier + return m.GasMultiplier.ToWasmVMGas(m.originalMeter.GasConsumed()) } func (k Keeper) gasMeter(ctx sdk.Context) MultipliedGasMeter { - return MultipliedGasMeter{ - originalMeter: ctx.GasMeter(), - gasMultiplier: k.getGasMultiplier(ctx), - } + return NewMultipliedGasMeter(ctx.GasMeter(), k.getGasMultiplier(ctx)) } // Logger returns a module-specific logger. diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index a944bac460..766c6e93de 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -288,7 +288,7 @@ func TestInstantiate(t *testing.T) { gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x1115c), gasAfter-gasBefore) + require.Equal(t, uint64(0x111dc), gasAfter-gasBefore) } // ensure it is stored properly @@ -522,7 +522,7 @@ func TestExecute(t *testing.T) { // make sure gas is properly deducted from ctx gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x107b7), gasAfter-gasBefore) + require.Equal(t, uint64(0x107d9), gasAfter-gasBefore) } // ensure bob now exists and got both payments released bobAcct = accKeeper.GetAccount(ctx, bob) diff --git a/x/wasm/keeper/msg_server.go b/x/wasm/keeper/msg_server.go index 9b845dd6f7..70e0d61adf 100644 --- a/x/wasm/keeper/msg_server.go +++ b/x/wasm/keeper/msg_server.go @@ -75,7 +75,7 @@ func (m msgServer) InstantiateContract(goCtx context.Context, msg *types.MsgInst ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeInstantiateContract, sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", msg.CodeID)), - sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()), + sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddr.String()), sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), )) @@ -125,7 +125,7 @@ func (m msgServer) StoreCodeAndInstantiateContract(goCtx context.Context, ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeInstantiateContract, sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)), - sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()), sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), + sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddr.String()), sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), )) return &types.MsgStoreCodeAndInstantiateContractResponse{ @@ -158,7 +158,7 @@ func (m msgServer) ExecuteContract(goCtx context.Context, msg *types.MsgExecuteC )) ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeExecuteContract, - sdk.NewAttribute(types.AttributeKeyContract, msg.Contract), + sdk.NewAttribute(types.AttributeKeyContractAddr, msg.Contract), sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), )) @@ -190,7 +190,7 @@ func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateC )) ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeMigrateContract, - sdk.NewAttribute(types.AttributeKeyContract, msg.Contract), + sdk.NewAttribute(types.AttributeKeyContractAddr, msg.Contract), sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", msg.CodeID)), sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), )) @@ -227,7 +227,7 @@ func (m msgServer) UpdateAdmin(goCtx context.Context, msg *types.MsgUpdateAdmin) )) ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeUpdateAdmin, - sdk.NewAttribute(types.AttributeKeyContract, msg.Contract), + sdk.NewAttribute(types.AttributeKeyContractAddr, msg.Contract), )) return &types.MsgUpdateAdminResponse{}, nil @@ -255,7 +255,7 @@ func (m msgServer) ClearAdmin(goCtx context.Context, msg *types.MsgClearAdmin) ( )) ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeClearAdmin, - sdk.NewAttribute(types.AttributeKeyContract, msg.Contract), + sdk.NewAttribute(types.AttributeKeyContractAddr, msg.Contract), )) return &types.MsgClearAdminResponse{}, nil @@ -287,7 +287,7 @@ func (m msgServer) UpdateContractStatus(goCtx context.Context, msg *types.MsgUpd ), sdk.NewEvent( types.EventTypeUpdateContractStatus, - sdk.NewAttribute(types.AttributeKeyContract, msg.Contract), + sdk.NewAttribute(types.AttributeKeyContractAddr, msg.Contract), sdk.NewAttribute(types.AttributeKeyContractStatus, msg.Status.String()), ), }) diff --git a/x/wasm/keeper/options.go b/x/wasm/keeper/options.go index 87b46a28a1..c0aca444d9 100644 --- a/x/wasm/keeper/options.go +++ b/x/wasm/keeper/options.go @@ -88,3 +88,12 @@ func WithVMMetrics(provider MetricsProvider) Option { k.metrics = provider() }) } + +// WithGasRegister set a new gas register to implement custom gas costs. +// When the "gas multiplier" for wasmvm gas convertion is modified inside the new register, +// make sure to also use `WithApiCosts` option for non default values +func WithGasRegister(x WasmGasRegister) Option { + return optsFn(func(k *Keeper) { + k.gasRegister = x + }) +} diff --git a/x/wasm/keeper/proposal_handler.go b/x/wasm/keeper/proposal_handler.go index 2e3f519da7..46b1b98eaa 100644 --- a/x/wasm/keeper/proposal_handler.go +++ b/x/wasm/keeper/proposal_handler.go @@ -97,7 +97,7 @@ func handleInstantiateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p typ ourEvent := sdk.NewEvent( types.EventTypeInstantiateContract, sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", p.CodeID)), - sdk.NewAttribute(types.AttributeKeyContract, contractAddr.String()), + sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddr.String()), sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), ) ctx.EventManager().EmitEvent(ourEvent) @@ -125,7 +125,7 @@ func handleMigrateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.M types.EventTypeMigrateContract, sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", p.CodeID)), - sdk.NewAttribute(types.AttributeKeyContract, p.Contract), + sdk.NewAttribute(types.AttributeKeyContractAddr, p.Contract), sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), ) ctx.EventManager().EmitEvent(ourEvent) @@ -151,7 +151,8 @@ func handleUpdateAdminProposal(ctx sdk.Context, k types.ContractOpsKeeper, p typ ourEvent := sdk.NewEvent( types.EventTypeUpdateAdmin, - sdk.NewAttribute(types.AttributeKeyContract, p.Contract), + sdk.NewAttribute(types.AttributeKeyContractAddr, p.Contract), + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), ) ctx.EventManager().EmitEvent(ourEvent) return nil @@ -172,7 +173,8 @@ func handleClearAdminProposal(ctx sdk.Context, k types.ContractOpsKeeper, p type ourEvent := sdk.NewEvent( types.EventTypeClearAdmin, - sdk.NewAttribute(types.AttributeKeyContract, p.Contract), + sdk.NewAttribute(types.AttributeKeyContractAddr, p.Contract), + sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), ) ctx.EventManager().EmitEvent(ourEvent) return nil @@ -248,7 +250,7 @@ func handleUpdateContractStatusProposal(ctx sdk.Context, k types.ContractOpsKeep ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeUpdateContractStatus, - sdk.NewAttribute(types.AttributeKeyContract, p.Contract), + sdk.NewAttribute(types.AttributeKeyContractAddr, p.Contract), sdk.NewAttribute(types.AttributeKeyContractStatus, p.Status.String()), )) return nil diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index d9692bd6cd..3178fdc7e1 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -19,10 +19,10 @@ type QueryHandler struct { Ctx sdk.Context Plugins WasmVMQueryHandler Caller sdk.AccAddress - GasMultiplier uint64 + GasMultiplier GasMultiplier } -func NewQueryHandler(ctx sdk.Context, vmQueryHandler WasmVMQueryHandler, caller sdk.AccAddress, gasMultiplier uint64) QueryHandler { +func NewQueryHandler(ctx sdk.Context, vmQueryHandler WasmVMQueryHandler, caller sdk.AccAddress, gasMultiplier GasMultiplier) QueryHandler { return QueryHandler{ Ctx: ctx, Plugins: vmQueryHandler, @@ -47,7 +47,7 @@ var _ wasmvmtypes.Querier = QueryHandler{} func (q QueryHandler) Query(request wasmvmtypes.QueryRequest, gasLimit uint64) ([]byte, error) { // set a limit for a subctx - sdkGas := gasLimit / q.GasMultiplier + sdkGas := q.GasMultiplier.FromWasmVMGas(gasLimit) subctx := q.Ctx.WithGasMeter(sdk.NewGasMeter(sdkGas)) // make sure we charge the higher level context even on panic diff --git a/x/wasm/keeper/recurse_test.go b/x/wasm/keeper/recurse_test.go index 7acbe2dd52..ae8c2669a9 100644 --- a/x/wasm/keeper/recurse_test.go +++ b/x/wasm/keeper/recurse_test.go @@ -58,12 +58,12 @@ func initRecurseContract(t *testing.T) (contract sdk.AccAddress, creator sdk.Acc func TestGasCostOnQuery(t *testing.T) { const ( - GasNoWork uint64 = 44_058 + GasNoWork uint64 = 44_147 // Note: about 100 SDK gas (10k wasmer gas) for each round of sha256 - GasWork50 uint64 = 49_749 // this is a little shy of 50k gas - to keep an eye on the limit + GasWork50 uint64 = 49_839 // this is a little shy of 50k gas - to keep an eye on the limit - GasReturnUnhashed uint64 = 279 - GasReturnHashed uint64 = 256 + GasReturnUnhashed uint64 = 222 + GasReturnHashed uint64 = 199 ) cases := map[string]struct { @@ -222,9 +222,10 @@ func TestLimitRecursiveQueryGas(t *testing.T) { const ( // Note: about 100 SDK gas (10k wasmer gas) for each round of sha256 - GasWork2k uint64 = 273_552 // = InstanceCost + x // we have 6x gas used in cpu than in the instance + GasWork2k uint64 = 273_644 // = InstanceCost + x // we have 6x gas used in cpu than in the instance + // This is overhead for calling into a sub-contract - GasReturnHashed uint64 = 262 + GasReturnHashed uint64 = 203 ) cases := map[string]struct { @@ -251,7 +252,7 @@ func TestLimitRecursiveQueryGas(t *testing.T) { }, expectQueriesFromContract: 5, // FIXME: why -3 ... confused a bit by calculations, seems like rounding issues - expectedGas: GasWork2k + 5*(GasWork2k+GasReturnHashed) - 8, + expectedGas: GasWork2k + 5*(GasWork2k+GasReturnHashed) + 2, }, // this is where we expect an error... // it has enough gas to run 4 times and die on the 5th (4th time dispatching to sub-contract) diff --git a/x/wasm/keeper/relay.go b/x/wasm/keeper/relay.go index 1028eca5d3..880a1dfb07 100644 --- a/x/wasm/keeper/relay.go +++ b/x/wasm/keeper/relay.go @@ -30,10 +30,11 @@ func (k Keeper) OnOpenChannel( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - gas := gasForContract(ctx, k.getGasMultiplier(ctx)) + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) gasUsed, execErr := k.wasmVM.IBCChannelOpen(codeInfo.CodeHash, env, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) - k.consumeGas(ctx, gasUsed) + k.consumeRuntimeGas(ctx, gasUsed) + if execErr != nil { return sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } @@ -62,22 +63,16 @@ func (k Keeper) OnConnectChannel( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - gas := gasForContract(ctx, k.getGasMultiplier(ctx)) + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) res, gasUsed, execErr := k.wasmVM.IBCChannelConnect(codeInfo.CodeHash, env, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) - k.consumeGas(ctx, gasUsed) + k.consumeRuntimeGas(ctx, gasUsed) + if execErr != nil { return sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - // emit all events from this contract itself - events := types.ParseEvents(res.Attributes, contractAddr) - ctx.EventManager().EmitEvents(events) - - if _, err := k.wasmVMResponseHandler.Handle(ctx, contractAddr, contractInfo.IBCPortID, res.Submessages, res.Messages, nil); err != nil { - return err - } - return nil + return k.handleIBCBasicContractResponse(ctx, contractAddr, contractInfo.IBCPortID, res) } // OnCloseChannel calls the contract to let it know the IBC channel is closed. @@ -101,22 +96,16 @@ func (k Keeper) OnCloseChannel( params := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - gas := gasForContract(ctx, k.getGasMultiplier(ctx)) + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) res, gasUsed, execErr := k.wasmVM.IBCChannelClose(codeInfo.CodeHash, params, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) - k.consumeGas(ctx, gasUsed) + k.consumeRuntimeGas(ctx, gasUsed) + if execErr != nil { return sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - // emit all events from this contract itself - events := types.ParseEvents(res.Attributes, contractAddr) - ctx.EventManager().EmitEvents(events) - - if _, err := k.wasmVMResponseHandler.Handle(ctx, contractAddr, contractInfo.IBCPortID, res.Submessages, res.Messages, nil); err != nil { - return err - } - return nil + return k.handleIBCBasicContractResponse(ctx, contractAddr, contractInfo.IBCPortID, res) } // OnRecvPacket calls the contract to process the incoming IBC packet. The contract fully owns the data processing and @@ -139,18 +128,16 @@ func (k Keeper) OnRecvPacket( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - gas := gasForContract(ctx, k.getGasMultiplier(ctx)) + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) res, gasUsed, execErr := k.wasmVM.IBCPacketReceive(codeInfo.CodeHash, env, packet, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) - k.consumeGas(ctx, gasUsed) + k.consumeRuntimeGas(ctx, gasUsed) + if execErr != nil { return nil, sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - // emit all events from this contract itself - events := types.ParseEvents(res.Attributes, contractAddr) - ctx.EventManager().EmitEvents(events) - return k.wasmVMResponseHandler.Handle(ctx, contractAddr, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Acknowledgement) + return k.handleContractResponse(ctx, contractAddr, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Acknowledgement) } // OnAckPacket calls the contract to handle the "acknowledgement" data which can contain success or failure of a packet @@ -174,22 +161,15 @@ func (k Keeper) OnAckPacket( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - gas := gasForContract(ctx, k.getGasMultiplier(ctx)) + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) res, gasUsed, execErr := k.wasmVM.IBCPacketAck(codeInfo.CodeHash, env, acknowledgement, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) - k.consumeGas(ctx, gasUsed) + k.consumeRuntimeGas(ctx, gasUsed) + if execErr != nil { return sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - - // emit all events from this contract itself - events := types.ParseEvents(res.Attributes, contractAddr) - ctx.EventManager().EmitEvents(events) - - if _, err := k.wasmVMResponseHandler.Handle(ctx, contractAddr, contractInfo.IBCPortID, res.Submessages, res.Messages, nil); err != nil { - return err - } - return nil + return k.handleIBCBasicContractResponse(ctx, contractAddr, contractInfo.IBCPortID, res) } // OnTimeoutPacket calls the contract to let it know the packet was never received on the destination chain within @@ -210,20 +190,19 @@ func (k Keeper) OnTimeoutPacket( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - gas := gasForContract(ctx, k.getGasMultiplier(ctx)) + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) res, gasUsed, execErr := k.wasmVM.IBCPacketTimeout(codeInfo.CodeHash, env, packet, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) - k.consumeGas(ctx, gasUsed) + k.consumeRuntimeGas(ctx, gasUsed) + if execErr != nil { return sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - // emit all events from this contract itself - events := types.ParseEvents(res.Attributes, contractAddr) - ctx.EventManager().EmitEvents(events) + return k.handleIBCBasicContractResponse(ctx, contractAddr, contractInfo.IBCPortID, res) +} - if _, err := k.wasmVMResponseHandler.Handle(ctx, contractAddr, contractInfo.IBCPortID, res.Submessages, res.Messages, nil); err != nil { - return err - } - return nil +func (k Keeper) handleIBCBasicContractResponse(ctx sdk.Context, addr sdk.AccAddress, id string, res *wasmvmtypes.IBCBasicResponse) error { + _, err := k.handleContractResponse(ctx, addr, id, res.Submessages, res.Messages, res.Attributes, nil) + return err } diff --git a/x/wasm/keeper/relay_test.go b/x/wasm/keeper/relay_test.go index 4c4968eb51..6ceadf714a 100644 --- a/x/wasm/keeper/relay_test.go +++ b/x/wasm/keeper/relay_test.go @@ -21,24 +21,28 @@ func TestOnOpenChannel(t *testing.T) { var messenger = &wasmtesting.MockMessageHandler{} parentCtx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil, WithMessageHandler(messenger)) example := SeedNewContractInstance(t, parentCtx, keepers, &m) + const myContractGas = 40 specs := map[string]struct { contractAddr sdk.AccAddress contractGas sdk.Gas contractErr error + expGas uint64 expErr bool }{ "consume contract gas": { contractAddr: example.Contract, - contractGas: 10, + contractGas: myContractGas, + expGas: myContractGas, }, "consume max gas": { contractAddr: example.Contract, contractGas: math.MaxUint64 / types.DefaultGasMultiplier, + expGas: math.MaxUint64 / types.DefaultGasMultiplier, }, "consume gas on error": { contractAddr: example.Contract, - contractGas: 20, + contractGas: myContractGas, contractErr: errors.New("test, ignore"), expErr: true, }, @@ -55,8 +59,7 @@ func TestOnOpenChannel(t *testing.T) { return spec.contractGas * types.DefaultGasMultiplier, spec.contractErr } - ctx, cancel := parentCtx.CacheContext() - defer cancel() + ctx, _ := parentCtx.CacheContext() before := ctx.GasMeter().GasConsumed() // when @@ -70,7 +73,7 @@ func TestOnOpenChannel(t *testing.T) { require.NoError(t, err) // verify gas consumed const storageCosts = sdk.Gas(0xa8b) - assert.Equal(t, spec.contractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) + assert.Equal(t, spec.expGas, ctx.GasMeter().GasConsumed()-before-storageCosts) }) } } @@ -81,26 +84,27 @@ func TestOnConnectChannel(t *testing.T) { var messenger = &wasmtesting.MockMessageHandler{} parentCtx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil, WithMessageHandler(messenger)) example := SeedNewContractInstance(t, parentCtx, keepers, &m) + const myContractGas = 40 specs := map[string]struct { contractAddr sdk.AccAddress - contractGas sdk.Gas contractResp *wasmvmtypes.IBCBasicResponse contractErr error overwriteMessenger *wasmtesting.MockMessageHandler + expContractGas sdk.Gas expErr bool expContractEventAttrs int expNoEvents bool }{ "consume contract gas": { - contractAddr: example.Contract, - contractGas: 16, - contractResp: &wasmvmtypes.IBCBasicResponse{}, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCBasicResponse{}, }, "consume gas on error, ignore events + messages": { - contractAddr: example.Contract, - contractGas: 26, - contractResp: &wasmvmtypes.IBCBasicResponse{ + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, @@ -109,24 +113,24 @@ func TestOnConnectChannel(t *testing.T) { expNoEvents: true, }, "dispatch contract messages on success": { - contractAddr: example.Contract, - contractGas: 36, - contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCBasicResponse{ + Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, }, }, "emit contract events on success": { - contractAddr: example.Contract, - contractGas: 46, - contractResp: &wasmvmtypes.IBCBasicResponse{ + contractAddr: example.Contract, + expContractGas: myContractGas + 10, + contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, expContractEventAttrs: 1, }, "messenger errors returned, events stored": { - contractAddr: example.Contract, - contractGas: 56, - contractResp: &wasmvmtypes.IBCBasicResponse{ + contractAddr: example.Contract, + expContractGas: myContractGas + 10, + contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, @@ -145,12 +149,12 @@ func TestOnConnectChannel(t *testing.T) { myChannel := wasmvmtypes.IBCChannel{Version: "my test channel"} m.IBCChannelConnectFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.IBCBasicResponse, uint64, error) { assert.Equal(t, channel, myChannel) - return spec.contractResp, spec.contractGas * types.DefaultGasMultiplier, spec.contractErr + return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } - ctx, cancel := parentCtx.CacheContext() + ctx, _ := parentCtx.CacheContext() ctx = ctx.WithEventManager(sdk.NewEventManager()) - defer cancel() + before := ctx.GasMeter().GasConsumed() msger, capturedMsgs := wasmtesting.NewCapturingMessageHandler() *messenger = *msger @@ -175,9 +179,11 @@ func TestOnConnectChannel(t *testing.T) { return } require.NoError(t, err) + // verify gas consumed const storageCosts = sdk.Gas(0xa8b) - assert.Equal(t, spec.contractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) + assert.Equal(t, spec.expContractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) + // verify msgs dispatched assert.Equal(t, spec.contractResp.Messages, *capturedMsgs) assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) @@ -191,25 +197,26 @@ func TestOnCloseChannel(t *testing.T) { var messenger = &wasmtesting.MockMessageHandler{} parentCtx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil, WithMessageHandler(messenger)) example := SeedNewContractInstance(t, parentCtx, keepers, &m) + const myContractGas = 40 specs := map[string]struct { contractAddr sdk.AccAddress - contractGas sdk.Gas contractResp *wasmvmtypes.IBCBasicResponse contractErr error overwriteMessenger *wasmtesting.MockMessageHandler + expContractGas sdk.Gas expErr bool expContractEventAttrs int expNoEvents bool }{ "consume contract gas": { - contractAddr: example.Contract, - contractGas: 16, - contractResp: &wasmvmtypes.IBCBasicResponse{}, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCBasicResponse{}, }, "consume gas on error, ignore events + messages": { - contractAddr: example.Contract, - contractGas: 20, + contractAddr: example.Contract, + expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, @@ -219,24 +226,24 @@ func TestOnCloseChannel(t *testing.T) { expNoEvents: true, }, "dispatch contract messages on success": { - contractAddr: example.Contract, - contractGas: 36, - contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCBasicResponse{ + Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, }, }, "emit contract events on success": { - contractAddr: example.Contract, - contractGas: 46, - contractResp: &wasmvmtypes.IBCBasicResponse{ + contractAddr: example.Contract, + expContractGas: myContractGas + 10, + contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, expContractEventAttrs: 1, }, "messenger errors returned, events stored": { - contractAddr: example.Contract, - contractGas: 50, - contractResp: &wasmvmtypes.IBCBasicResponse{ + contractAddr: example.Contract, + expContractGas: myContractGas + 10, + contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, @@ -255,11 +262,10 @@ func TestOnCloseChannel(t *testing.T) { myChannel := wasmvmtypes.IBCChannel{Version: "my test channel"} m.IBCChannelCloseFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.IBCBasicResponse, uint64, error) { assert.Equal(t, channel, myChannel) - return spec.contractResp, spec.contractGas * types.DefaultGasMultiplier, spec.contractErr + return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } - ctx, cancel := parentCtx.CacheContext() - defer cancel() + ctx, _ := parentCtx.CacheContext() before := ctx.GasMeter().GasConsumed() msger, capturedMsgs := wasmtesting.NewCapturingMessageHandler() *messenger = *msger @@ -287,7 +293,8 @@ func TestOnCloseChannel(t *testing.T) { require.NoError(t, err) // verify gas consumed const storageCosts = sdk.Gas(0xa8b) - assert.Equal(t, spec.contractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) + assert.Equal(t, spec.expContractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) + // verify msgs dispatched assert.Equal(t, spec.contractResp.Messages, *capturedMsgs) require.Len(t, events, 1) @@ -302,32 +309,33 @@ func TestOnRecvPacket(t *testing.T) { var messenger = &wasmtesting.MockMessageHandler{} parentCtx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil, WithMessageHandler(messenger)) example := SeedNewContractInstance(t, parentCtx, keepers, &m) + const myContractGas = 40 specs := map[string]struct { contractAddr sdk.AccAddress - contractGas sdk.Gas contractResp *wasmvmtypes.IBCReceiveResponse contractErr error overwriteMessenger *wasmtesting.MockMessageHandler + expContractGas sdk.Gas expErr bool expContractEventAttrs int expNoEvents bool }{ "consume contract gas": { - contractAddr: example.Contract, - contractGas: 10, + contractAddr: example.Contract, + expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), }, }, "can return empty ack": { - contractAddr: example.Contract, - contractGas: 10, - contractResp: &wasmvmtypes.IBCReceiveResponse{}, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCReceiveResponse{}, }, "consume gas on error, ignore events + messages": { - contractAddr: example.Contract, - contractGas: 20, + contractAddr: example.Contract, + expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}}, @@ -338,16 +346,16 @@ func TestOnRecvPacket(t *testing.T) { expNoEvents: true, }, "dispatch contract messages on success": { - contractAddr: example.Contract, - contractGas: 30, + contractAddr: example.Contract, + expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, }, }, "emit contract events on success": { - contractAddr: example.Contract, - contractGas: 40, + contractAddr: example.Contract, + expContractGas: myContractGas + 10, contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, @@ -355,8 +363,8 @@ func TestOnRecvPacket(t *testing.T) { expContractEventAttrs: 1, }, "messenger errors returned, events stored": { - contractAddr: example.Contract, - contractGas: 50, + contractAddr: example.Contract, + expContractGas: myContractGas + 10, contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, @@ -378,11 +386,10 @@ func TestOnRecvPacket(t *testing.T) { m.IBCPacketReceiveFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.IBCReceiveResponse, uint64, error) { assert.Equal(t, myPacket, packet) - return spec.contractResp, spec.contractGas * types.DefaultGasMultiplier, spec.contractErr + return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } - ctx, cancel := parentCtx.CacheContext() - defer cancel() + ctx, _ := parentCtx.CacheContext() before := ctx.GasMeter().GasConsumed() msger, capturedMsgs := wasmtesting.NewCapturingMessageHandler() @@ -413,7 +420,8 @@ func TestOnRecvPacket(t *testing.T) { // verify gas consumed const storageCosts = sdk.Gas(0xa8b) - assert.Equal(t, spec.contractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) + assert.Equal(t, spec.expContractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) + // verify msgs dispatched assert.Equal(t, spec.contractResp.Messages, *capturedMsgs) require.Len(t, events, 1) @@ -428,25 +436,26 @@ func TestOnAckPacket(t *testing.T) { var messenger = &wasmtesting.MockMessageHandler{} parentCtx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil, WithMessageHandler(messenger)) example := SeedNewContractInstance(t, parentCtx, keepers, &m) + const myContractGas = 40 specs := map[string]struct { contractAddr sdk.AccAddress - contractGas sdk.Gas contractResp *wasmvmtypes.IBCBasicResponse contractErr error overwriteMessenger *wasmtesting.MockMessageHandler + expContractGas sdk.Gas expErr bool expContractEventAttrs int expNoEvents bool }{ "consume contract gas": { - contractAddr: example.Contract, - contractGas: 16, - contractResp: &wasmvmtypes.IBCBasicResponse{}, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCBasicResponse{}, }, "consume gas on error, ignore events + messages": { - contractAddr: example.Contract, - contractGas: 20, + contractAddr: example.Contract, + expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, @@ -456,23 +465,23 @@ func TestOnAckPacket(t *testing.T) { expNoEvents: true, }, "dispatch contract messages on success": { - contractAddr: example.Contract, - contractGas: 36, - contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCBasicResponse{ + Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, }, }, "emit contract events on success": { - contractAddr: example.Contract, - contractGas: 46, - contractResp: &wasmvmtypes.IBCBasicResponse{ + contractAddr: example.Contract, + expContractGas: myContractGas + 10, + contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, expContractEventAttrs: 1, }, "messenger errors returned, events stored": { - contractAddr: example.Contract, - contractGas: 50, + contractAddr: example.Contract, + expContractGas: myContractGas + 10, contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, @@ -493,11 +502,10 @@ func TestOnAckPacket(t *testing.T) { myAck := wasmvmtypes.IBCAcknowledgement{Acknowledgement: []byte("myAck")} m.IBCPacketAckFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, ack wasmvmtypes.IBCAcknowledgement, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.IBCBasicResponse, uint64, error) { assert.Equal(t, myAck, ack) - return spec.contractResp, spec.contractGas * types.DefaultGasMultiplier, spec.contractErr + return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } - ctx, cancel := parentCtx.CacheContext() - defer cancel() + ctx, _ := parentCtx.CacheContext() before := ctx.GasMeter().GasConsumed() msger, capturedMsgs := wasmtesting.NewCapturingMessageHandler() *messenger = *msger @@ -523,9 +531,11 @@ func TestOnAckPacket(t *testing.T) { return } require.NoError(t, err) + // verify gas consumed const storageCosts = sdk.Gas(0xa8b) - assert.Equal(t, spec.contractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) + assert.Equal(t, spec.expContractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) + // verify msgs dispatched assert.Equal(t, spec.contractResp.Messages, *capturedMsgs) require.Len(t, events, 1) @@ -540,25 +550,26 @@ func TestOnTimeoutPacket(t *testing.T) { var messenger = &wasmtesting.MockMessageHandler{} parentCtx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil, WithMessageHandler(messenger)) example := SeedNewContractInstance(t, parentCtx, keepers, &m) + const myContractGas = 40 specs := map[string]struct { contractAddr sdk.AccAddress - contractGas sdk.Gas contractResp *wasmvmtypes.IBCBasicResponse contractErr error overwriteMessenger *wasmtesting.MockMessageHandler + expContractGas sdk.Gas expErr bool expContractEventAttrs int expNoEvents bool }{ "consume contract gas": { - contractAddr: example.Contract, - contractGas: 22, - contractResp: &wasmvmtypes.IBCBasicResponse{}, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCBasicResponse{}, }, "consume gas on error, ignore events + messages": { - contractAddr: example.Contract, - contractGas: 20, + contractAddr: example.Contract, + expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, @@ -569,22 +580,23 @@ func TestOnTimeoutPacket(t *testing.T) { }, "dispatch contract messages on success": { contractAddr: example.Contract, - contractGas: 42, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, }, }, "emit contract events on success": { - contractAddr: example.Contract, - contractGas: 40, + contractAddr: example.Contract, + expContractGas: myContractGas + 10, contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, expContractEventAttrs: 1, }, "messenger errors returned, events stored": { - contractAddr: example.Contract, - contractGas: 50, + contractAddr: example.Contract, + expContractGas: myContractGas + 10, contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, @@ -604,11 +616,10 @@ func TestOnTimeoutPacket(t *testing.T) { myPacket := wasmvmtypes.IBCPacket{Data: []byte("my test packet")} m.IBCPacketTimeoutFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.IBCBasicResponse, uint64, error) { assert.Equal(t, myPacket, packet) - return spec.contractResp, spec.contractGas * types.DefaultGasMultiplier, spec.contractErr + return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } - ctx, cancel := parentCtx.CacheContext() - defer cancel() + ctx, _ := parentCtx.CacheContext() before := ctx.GasMeter().GasConsumed() msger, capturedMsgs := wasmtesting.NewCapturingMessageHandler() *messenger = *msger @@ -636,7 +647,8 @@ func TestOnTimeoutPacket(t *testing.T) { require.NoError(t, err) // verify gas consumed const storageCosts = sdk.Gas(0xa8b) - assert.Equal(t, spec.contractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) + assert.Equal(t, spec.expContractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) + // verify msgs dispatched assert.Equal(t, spec.contractResp.Messages, *capturedMsgs) require.Len(t, events, 1) diff --git a/x/wasm/types/events.go b/x/wasm/types/events.go index 88c9d1c703..5d6b947e02 100644 --- a/x/wasm/types/events.go +++ b/x/wasm/types/events.go @@ -10,9 +10,11 @@ const ( EventTypePinCode = "pin_code" EventTypeUnpinCode = "unpin_code" EventTypeUpdateContractStatus = "update_contract_status" + CustomEventType = "wasm" ) + const ( // event attributes - AttributeKeyContract = "contract_address" + AttributeKeyContractAddr = "contract_address" AttributeKeyCodeID = "code_id" AttributeKeySigner = "signer" AttributeResultDataHex = "result" diff --git a/x/wasm/types/types.go b/x/wasm/types/types.go index 33650acaec..dd913b37b3 100644 --- a/x/wasm/types/types.go +++ b/x/wasm/types/types.go @@ -346,14 +346,10 @@ func NewWasmCoins(cosmosCoins sdk.Coins) (wasmCoins []wasmvmtypes.Coin) { return wasmCoins } -const CustomEventType = "wasm" -const AttributeKeyContractAddr = "contract_address" - -// ParseEvents converts wasm LogAttributes into an sdk.Events +// ParseEvents converts wasm LogAttributes into an sdk.Events. Returns events and number of bytes for custom attributes func ParseEvents(wasmOutputAttrs []wasmvmtypes.EventAttribute, contractAddr sdk.AccAddress) sdk.Events { // we always tag with the contract address issuing this event attrs := []sdk.Attribute{sdk.NewAttribute(AttributeKeyContractAddr, contractAddr.String())} - // append attributes from wasm to the sdk.Event for _, l := range wasmOutputAttrs { // and reserve the contract_address key for our use (not contract) From bef9c35ced98e5fac765858b1528c3454c01db00 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Fri, 25 Jun 2021 10:44:39 +0200 Subject: [PATCH 11/90] Empty (non nil) reply data can overwrites response --- x/wasm/keeper/msg_dispatcher.go | 2 +- x/wasm/keeper/msg_dispatcher_test.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/x/wasm/keeper/msg_dispatcher.go b/x/wasm/keeper/msg_dispatcher.go index 26e0f78670..41447d9c3a 100644 --- a/x/wasm/keeper/msg_dispatcher.go +++ b/x/wasm/keeper/msg_dispatcher.go @@ -144,7 +144,7 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk switch { case err != nil: return nil, sdkerrors.Wrap(err, "reply") - case len(rspData) != 0: + case rspData != nil: rsp = rspData } } diff --git a/x/wasm/keeper/msg_dispatcher_test.go b/x/wasm/keeper/msg_dispatcher_test.go index 57ba7f35bb..6f60b9d97c 100644 --- a/x/wasm/keeper/msg_dispatcher_test.go +++ b/x/wasm/keeper/msg_dispatcher_test.go @@ -167,7 +167,7 @@ func TestDispatchSubmessages(t *testing.T) { expData: []byte("myReplyData:2"), expCommits: []bool{false, false}, }, - "multiple msg - last reply with non nil": { + "multiple msg - last non nil reply to overwrite responose": { msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyError}, {ID: 2, ReplyOn: wasmvmtypes.ReplyError}}, replyer: &mockReplyer{ replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { @@ -185,7 +185,7 @@ func TestDispatchSubmessages(t *testing.T) { expData: []byte("myReplyData:1"), expCommits: []bool{false, false}, }, - "multiple msg - last reply can be empty to overwrite": { + "multiple msg - empty reply can overwrite result": { msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyError}, {ID: 2, ReplyOn: wasmvmtypes.ReplyError}}, replyer: &mockReplyer{ replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { @@ -200,7 +200,7 @@ func TestDispatchSubmessages(t *testing.T) { return nil, nil, errors.New("my error") }, }, - expData: []byte("myReplyData:1"), + expData: []byte{}, expCommits: []bool{false, false}, }, "empty replyOn rejected": { From fd0a847e61f75cd41ca9d7b8bf2fdc1801510c24 Mon Sep 17 00:00:00 2001 From: orkunkl Date: Fri, 2 Jul 2021 11:50:40 +0300 Subject: [PATCH 12/90] Multiply default wasm size by 2 --- x/wasm/types/params.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/wasm/types/params.go b/x/wasm/types/params.go index 3ce1a6cf7c..4a38a08d06 100644 --- a/x/wasm/types/params.go +++ b/x/wasm/types/params.go @@ -16,7 +16,7 @@ const ( // DefaultParamspace for params keeper DefaultParamspace = ModuleName // DefaultMaxWasmCodeSize limit max bytes read to prevent gzip bombs - DefaultMaxWasmCodeSize = 600 * 1024 + DefaultMaxWasmCodeSize = 600 * 1024 * 2 // GasMultiplier is how many cosmwasm gas points = 1 sdk gas point // SDK reference costs is defined in x/store/types/gas.go KVGasConfig() // https://github.com/line/lbm-sdk/blob/main/store/types/gas.go From ce08ba19802063b7dce62b51c182ceadd36b9149 Mon Sep 17 00:00:00 2001 From: orkunkl Date: Fri, 2 Jul 2021 12:00:09 +0300 Subject: [PATCH 13/90] Fix test --- x/wasm/types/params_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/wasm/types/params_test.go b/x/wasm/types/params_test.go index 5cb46caa60..2337b2f697 100644 --- a/x/wasm/types/params_test.go +++ b/x/wasm/types/params_test.go @@ -302,7 +302,7 @@ func TestParamsUnmarshalJson(t *testing.T) { src: `{"code_upload_access": {"permission": "Everybody"}, "instantiate_default_permission": "Everybody", "contract_status_access": {"permission": "Nobody"}, - "max_wasm_code_size": 614400, + "max_wasm_code_size": 1228800, "gas_multiplier": 100, "instance_cost": 40000, "compile_cost": 2}`, From b310fcf858e90a74638abaaf253f8a475ea48247 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Fri, 25 Jun 2021 15:51:37 +0200 Subject: [PATCH 14/90] Upgrade wasmvm v0.15.x (cherry-pick: tests are not done before upgrading wasmvm v0.16.x) --- go.mod | 2 + go.sum | 10 +- x/wasm/alias.go | 3 +- x/wasm/ibc.go | 10 +- x/wasm/keeper/api.go | 14 ++ x/wasm/keeper/events.go | 59 +++++++ x/wasm/keeper/events_test.go | 160 ++++++++++++++++++ x/wasm/keeper/gas_register.go | 53 ++++-- x/wasm/keeper/handler_plugin_encoders.go | 33 +++- x/wasm/keeper/handler_plugin_encoders_test.go | 68 +++++++- x/wasm/keeper/handler_plugin_test.go | 6 +- x/wasm/keeper/keeper.go | 58 +++---- x/wasm/keeper/keeper_test.go | 35 +--- x/wasm/keeper/msg_dispatcher.go | 14 +- x/wasm/keeper/msg_dispatcher_test.go | 82 +++++++-- x/wasm/keeper/querier_test.go | 2 +- x/wasm/keeper/recurse_test.go | 2 +- x/wasm/keeper/reflect_test.go | 16 +- x/wasm/keeper/relay.go | 20 +-- x/wasm/keeper/relay_test.go | 109 ++++++++---- x/wasm/keeper/submsg_test.go | 16 +- x/wasm/keeper/testdata/burner.wasm | Bin 146222 -> 125699 bytes x/wasm/keeper/testdata/download_releases.sh | 4 +- x/wasm/keeper/testdata/hackatom.wasm | Bin 200997 -> 177717 bytes x/wasm/keeper/testdata/hackatom.wasm.gzip | Bin 65202 -> 62090 bytes x/wasm/keeper/testdata/ibc_reflect.wasm | Bin 290806 -> 261488 bytes x/wasm/keeper/testdata/ibc_reflect_send.wasm | Bin 293145 -> 268093 bytes x/wasm/keeper/testdata/reflect.wasm | Bin 298196 -> 272896 bytes x/wasm/keeper/testdata/staking.wasm | Bin 260303 -> 233880 bytes x/wasm/keeper/wasmtesting/messenger.go | 3 + x/wasm/keeper/wasmtesting/mock_engine.go | 93 +++++----- x/wasm/keeper/wasmtesting/msg_dispatcher.go | 8 - x/wasm/module_test.go | 20 ++- x/wasm/types/events.go | 6 + x/wasm/types/exported_keepers.go | 15 +- x/wasm/types/types.go | 17 -- x/wasm/types/wasmer_engine.go | 35 ++-- 37 files changed, 702 insertions(+), 271 deletions(-) create mode 100644 x/wasm/keeper/events.go create mode 100644 x/wasm/keeper/events_test.go diff --git a/go.mod b/go.mod index 2185cac9b7..d640ad5a45 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ module github.com/line/lbm-sdk require ( github.com/99designs/keyring v1.1.6 + github.com/CosmWasm/wasmvm v0.16.3 // indirect github.com/DataDog/zstd v1.4.5 // indirect github.com/VictoriaMetrics/fastcache v1.7.0 github.com/armon/go-metrics v0.3.10 @@ -58,5 +59,6 @@ require ( replace ( github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + github.com/line/wasmvm => github.com/CosmWasm/wasmvm v0.15.1 google.golang.org/grpc => google.golang.org/grpc v1.33.2 ) diff --git a/go.sum b/go.sum index 035d46cf66..21c51b7b3a 100644 --- a/go.sum +++ b/go.sum @@ -53,6 +53,10 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/CosmWasm/wasmvm v0.15.1 h1:5hPBqPzHzVGtISJy/Mr89PbNIe+a3Q6qaFbnOFu/m64= +github.com/CosmWasm/wasmvm v0.15.1/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= +github.com/CosmWasm/wasmvm v0.16.3 h1:hUf33EHRmyyvKMhwVl7nMaAOY0vYJVB4bhU+HPfHfBM= +github.com/CosmWasm/wasmvm v0.16.3/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= @@ -504,8 +508,6 @@ github.com/line/tm-db/v2 v2.0.0-init.1.0.20210413083915-5bb60e117524/go.mod h1:w github.com/line/tm-db/v2 v2.0.0-init.1.0.20210824011847-fcfa67dd3c70/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= github.com/line/tm-db/v2 v2.0.0-init.1.0.20211202001648-945e88fd2edf h1:Pg6wSHMii2zYusYbCHkaeozDgFqfJZWnkjjHPNG9BgA= github.com/line/tm-db/v2 v2.0.0-init.1.0.20211202001648-945e88fd2edf/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= -github.com/line/wasmvm v0.14.0-0.8.0 h1:zWzyFLB3xRFSP3j9JWeTjzRHpLXNyTP7g1mmt3srKDw= -github.com/line/wasmvm v0.14.0-0.8.0/go.mod h1:cgsILoCDigfQ2XplFI4rOo2ImOLEZH/OM8sulxGoKUA= github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -771,8 +773,8 @@ github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RM github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tm-db v0.6.0 h1:Us30k7H1UDcdqoSPhmP8ztAW/SWV6c6OfsfeCiboTC4= -github.com/tendermint/tm-db v0.6.0/go.mod h1:xj3AWJ08kBDlCHKijnhJ7mTcDMOikT1r8Poxy2pJn7Q= +github.com/tendermint/tm-db v0.5.1 h1:H9HDq8UEA7Eeg13kdYckkgwwkQLBnJGgX4PgLJRhieY= +github.com/tendermint/tm-db v0.5.1/go.mod h1:g92zWjHpCYlEvQXvy9M168Su8V1IBEeawpXVVBaK4f4= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= diff --git a/x/wasm/alias.go b/x/wasm/alias.go index 7b4bde6056..376536e00e 100644 --- a/x/wasm/alias.go +++ b/x/wasm/alias.go @@ -18,7 +18,7 @@ const ( MaxLabelSize = types.MaxLabelSize BuildTagRegexp = types.BuildTagRegexp MaxBuildTagSize = types.MaxBuildTagSize - CustomEventType = types.CustomEventType + CustomEventType = types.WasmModuleEventType AttributeKeyContractAddr = types.AttributeKeyContractAddr ProposalTypeStoreCode = types.ProposalTypeStoreCode ProposalTypeInstantiateContract = types.ProposalTypeInstantiateContract @@ -49,7 +49,6 @@ var ( NewContractInfo = types.NewContractInfo NewEnv = types.NewEnv NewWasmCoins = types.NewWasmCoins - ParseEvents = types.ParseEvents DefaultWasmConfig = types.DefaultWasmConfig DefaultParams = types.DefaultParams InitGenesis = keeper.InitGenesis diff --git a/x/wasm/ibc.go b/x/wasm/ibc.go index 4655c53612..929e5328cc 100644 --- a/x/wasm/ibc.go +++ b/x/wasm/ibc.go @@ -196,14 +196,14 @@ func (i IBCHandler) OnRecvPacket( if err != nil { return nil, nil, sdkerrors.Wrapf(err, "contract port id") } - msgBz, err := i.keeper.OnRecvPacket(ctx, contractAddr, newIBCPacket(packet)) + ack, err := i.keeper.OnRecvPacket(ctx, contractAddr, newIBCPacket(packet)) if err != nil { return nil, nil, err } - return &sdk.Result{ + return &sdk.Result{ // the response is ignored Events: ctx.EventManager().Events().ToABCIEvents(), - }, msgBz, nil + }, ack, nil } // OnAcknowledgementPacket implements the IBCModule interface @@ -213,8 +213,8 @@ func (i IBCHandler) OnAcknowledgementPacket(ctx sdk.Context, packet channeltypes return nil, sdkerrors.Wrapf(err, "contract port id") } - err = i.keeper.OnAckPacket(ctx, contractAddr, wasmvmtypes.IBCAcknowledgement{ - Acknowledgement: acknowledgement, + err = i.keeper.OnAckPacket(ctx, contractAddr, wasmvmtypes.IBCAcknowledgementWithPacket{ + Acknowledgement: wasmvmtypes.IBCAcknowledgement{Data: acknowledgement}, OriginalPacket: newIBCPacket(packet), }) if err != nil { diff --git a/x/wasm/keeper/api.go b/x/wasm/keeper/api.go index 7e3b1860d2..4565da7ef8 100644 --- a/x/wasm/keeper/api.go +++ b/x/wasm/keeper/api.go @@ -4,6 +4,8 @@ import ( "fmt" sdk "github.com/line/lbm-sdk/types" + types "github.com/line/lbm-sdk/x/wasm/types" + wasmvmtypes "github.com/line/wasmvm/types" wasmvm "github.com/line/wasmvm" ) @@ -11,6 +13,18 @@ type cosmwasmAPIImpl struct { gasMultiplier GasMultiplier } +const ( + // DefaultDeserializationCostPerByte The formular should be `len(data) * deserializationCostPerByte` + DefaultDeserializationCostPerByte = 1 +) + +var ( + costJsonDeserialization = wasmvmtypes.UFraction{ + Numerator: DefaultDeserializationCostPerByte * types.DefaultGasMultiplier, + Denominator: 1, + } +) + func (a cosmwasmAPIImpl) humanAddress(canon []byte) (string, uint64, error) { gas := a.gasMultiplier.FromWasmVMGas(5) if len(canon) != sdk.BytesAddrLen { diff --git a/x/wasm/keeper/events.go b/x/wasm/keeper/events.go new file mode 100644 index 0000000000..9c615d0ff6 --- /dev/null +++ b/x/wasm/keeper/events.go @@ -0,0 +1,59 @@ +package keeper + +import ( + "fmt" + "github.com/line/lbm-sdk/x/wasm/types" + wasmvmtypes "github.com/line/wasmvm/types" + sdk "github.com/line/lbm-sdk/types" +) + +// newWasmModuleEvent creates with wasm module event for interacting with the given contract. Adds custom attributes +// to this event. +func newWasmModuleEvent(customAttributes []wasmvmtypes.EventAttribute, contractAddr sdk.AccAddress) sdk.Events { + attrs := contractSDKEventAttributes(customAttributes, contractAddr) + + // each wasm invocation always returns one sdk.Event + return sdk.Events{sdk.NewEvent(types.WasmModuleEventType, attrs...)} +} + +// returns true when a wasm module event was emitted for this contract already +func hasWasmModuleEvent(ctx sdk.Context, contractAddr sdk.AccAddress) bool { + for _, e := range ctx.EventManager().Events() { + if e.Type == types.WasmModuleEventType { + for _, a := range e.Attributes { + if string(a.Key) == types.AttributeKeyContractAddr && string(a.Value) == contractAddr.String() { + return true + } + } + } + } + return false +} + +const eventTypeMinLength = 2 + +// newCustomEvents converts wasmvm events from a contract response to sdk type events +func newCustomEvents(evts wasmvmtypes.Events, contractAddr sdk.AccAddress) sdk.Events { + events := make(sdk.Events, 0, len(evts)) + for _, e := range evts { + if len(e.Type) <= eventTypeMinLength { + continue + } + attributes := contractSDKEventAttributes(e.Attributes, contractAddr) + events = append(events, sdk.NewEvent(fmt.Sprintf("%s%s", types.CustomContractEventPrefix, e.Type), attributes...)) + } + return events +} + +// convert and add contract address issuing this event +func contractSDKEventAttributes(customAttributes []wasmvmtypes.EventAttribute, contractAddr sdk.AccAddress) []sdk.Attribute { + attrs := []sdk.Attribute{sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddr.String())} + // append attributes from wasm to the sdk.Event + for _, l := range customAttributes { + // and reserve the contract_address key for our use (not contract) + if l.Key != types.AttributeKeyContractAddr { + attrs = append(attrs, sdk.NewAttribute(l.Key, l.Value)) + } + } + return attrs +} diff --git a/x/wasm/keeper/events_test.go b/x/wasm/keeper/events_test.go new file mode 100644 index 0000000000..b8ff63c888 --- /dev/null +++ b/x/wasm/keeper/events_test.go @@ -0,0 +1,160 @@ +package keeper + +import ( + "context" + "github.com/line/lbm-sdk/x/wasm/types" + wasmvmtypes "github.com/line/wasmvm/types" + sdk "github.com/line/lbm-sdk/types" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestHasWasmModuleEvent(t *testing.T) { + myContractAddr := RandomAccountAddress(t) + specs := map[string]struct { + srcEvents []sdk.Event + exp bool + }{ + "event found": { + srcEvents: []sdk.Event{ + sdk.NewEvent(types.WasmModuleEventType, sdk.NewAttribute("contract_address", myContractAddr.String())), + }, + exp: true, + }, + "different event: not found": { + srcEvents: []sdk.Event{ + sdk.NewEvent(types.CustomContractEventPrefix, sdk.NewAttribute("contract_address", myContractAddr.String())), + }, + exp: false, + }, + "event with different address: not found": { + srcEvents: []sdk.Event{ + sdk.NewEvent(types.WasmModuleEventType, sdk.NewAttribute("contract_address", RandomBech32AccountAddress(t))), + }, + exp: false, + }, + "no event": { + srcEvents: []sdk.Event{}, + exp: false, + }, + } + for name, spec := range specs { + t.Run(name, func(t *testing.T) { + em := sdk.NewEventManager() + em.EmitEvents(spec.srcEvents) + ctx := sdk.Context{}.WithContext(context.Background()).WithEventManager(em) + + got := hasWasmModuleEvent(ctx, myContractAddr) + assert.Equal(t, spec.exp, got) + }) + } +} + +func TestNewCustomEvents(t *testing.T) { + myContract := RandomAccountAddress(t) + specs := map[string]struct { + src wasmvmtypes.Events + exp sdk.Events + }{ + "all good": { + src: wasmvmtypes.Events{{ + Type: "foo", + Attributes: []wasmvmtypes.EventAttribute{{Key: "myKey", Value: "myVal"}}, + }}, + exp: sdk.Events{sdk.NewEvent("wasm-foo", + sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("myKey", "myVal"))}, + }, + "multiple attributes": { + src: wasmvmtypes.Events{{ + Type: "foo", + Attributes: []wasmvmtypes.EventAttribute{{Key: "myKey", Value: "myVal"}, + {Key: "myOtherKey", Value: "myOtherVal"}}, + }}, + exp: sdk.Events{sdk.NewEvent("wasm-foo", + sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("myKey", "myVal"), + sdk.NewAttribute("myOtherKey", "myOtherVal"))}, + }, + "multiple events": { + src: wasmvmtypes.Events{{ + Type: "foo", + Attributes: []wasmvmtypes.EventAttribute{{Key: "myKey", Value: "myVal"}}, + }, { + Type: "bar", + Attributes: []wasmvmtypes.EventAttribute{{Key: "otherKey", Value: "otherVal"}}, + }}, + exp: sdk.Events{sdk.NewEvent("wasm-foo", + sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("myKey", "myVal")), + sdk.NewEvent("wasm-bar", + sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("otherKey", "otherVal"))}, + }, + "without attributes": { + src: wasmvmtypes.Events{{ + Type: "foo", + }}, + exp: sdk.Events{sdk.NewEvent("wasm-foo", + sdk.NewAttribute("contract_address", myContract.String()))}, + }, + "min length not reached": { + src: wasmvmtypes.Events{{ + Type: "f", + }}, + exp: sdk.Events{}, + }, + "overwrite contract_address": { + src: wasmvmtypes.Events{{ + Type: "foo", + Attributes: []wasmvmtypes.EventAttribute{{Key: "contract_address", Value: RandomBech32AccountAddress(t)}}, + }}, + exp: sdk.Events{sdk.NewEvent("wasm-foo", + sdk.NewAttribute("contract_address", myContract.String()))}, + }, + } + for name, spec := range specs { + t.Run(name, func(t *testing.T) { + gotEvent := newCustomEvents(spec.src, myContract) + assert.Equal(t, spec.exp, gotEvent) + }) + } +} + +func TestNewWasmModuleEvent(t *testing.T) { + myContract := RandomAccountAddress(t) + specs := map[string]struct { + src []wasmvmtypes.EventAttribute + exp sdk.Events + }{ + "all good": { + src: []wasmvmtypes.EventAttribute{{Key: "myKey", Value: "myVal"}}, + exp: sdk.Events{sdk.NewEvent("wasm", + sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("myKey", "myVal"))}, + }, + "multiple attributes": { + src: []wasmvmtypes.EventAttribute{{Key: "myKey", Value: "myVal"}, + {Key: "myOtherKey", Value: "myOtherVal"}}, + exp: sdk.Events{sdk.NewEvent("wasm", + sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("myKey", "myVal"), + sdk.NewAttribute("myOtherKey", "myOtherVal"))}, + }, + "without attributes": { + exp: sdk.Events{sdk.NewEvent("wasm", + sdk.NewAttribute("contract_address", myContract.String()))}, + }, + "overwrite contract_address": { + src: []wasmvmtypes.EventAttribute{{Key: "contract_address", Value: RandomBech32AccountAddress(t)}}, + exp: sdk.Events{sdk.NewEvent("wasm", + sdk.NewAttribute("contract_address", myContract.String()))}, + }, + } + for name, spec := range specs { + t.Run(name, func(t *testing.T) { + gotEvent := newWasmModuleEvent(spec.src, myContract) + assert.Equal(t, spec.exp, gotEvent) + }) + } +} diff --git a/x/wasm/keeper/gas_register.go b/x/wasm/keeper/gas_register.go index 15ed0ebba5..0362b97105 100644 --- a/x/wasm/keeper/gas_register.go +++ b/x/wasm/keeper/gas_register.go @@ -14,6 +14,8 @@ const ( DefaultContractMessageDataCost uint64 = 1 // DefaultPerAttributeCost is how much SDK gas we charge per attribute count. DefaultPerAttributeCost uint64 = 10 + // DefaultPerCustomEventCost is how much SDK gas we charge per event count. + DefaultPerCustomEventCost uint64 = 20 // DefaultEventAttributeDataFreeTier number of bytes of total attribute data we do not charge. DefaultEventAttributeDataFreeTier = 100 ) @@ -22,7 +24,7 @@ const ( type GasRegister interface { // NewContractInstanceCosts costs to crate a new contract instance from code // EventCosts costs to persist an event - EventCosts(evts []wasmvmtypes.EventAttribute) sdk.Gas + EventCosts(attrs []wasmvmtypes.EventAttribute, events wasmvmtypes.Events) sdk.Gas } // WasmGasRegisterConfig config type @@ -34,16 +36,19 @@ type WasmGasRegisterConfig struct { // This is used with len(key) + len(value) EventAttributeDataCost sdk.Gas // EventAttributeDataFreeTier number of bytes of total attribute data that is free of charge - EventAttributeDataFreeTier int + EventAttributeDataFreeTier uint64 // ContractMessageDataCost SDK gas charged *per byte* of the message that goes to the contract // This is used with len(msg) ContractMessageDataCost sdk.Gas + // CustomEventCost cost per custom event + CustomEventCost uint64 } // DefaultGasRegisterConfig default values func DefaultGasRegisterConfig() WasmGasRegisterConfig { return WasmGasRegisterConfig{ EventPerAttributeCost: DefaultPerAttributeCost, + CustomEventCost: DefaultPerCustomEventCost, EventAttributeDataCost: DefaultEventAttributeDataCost, EventAttributeDataFreeTier: DefaultEventAttributeDataFreeTier, ContractMessageDataCost: DefaultContractMessageDataCost, @@ -68,25 +73,41 @@ func NewWasmGasRegister(c WasmGasRegisterConfig) WasmGasRegister { } // EventCosts costs to persist an event -func (g WasmGasRegister) EventCosts(evts []wasmvmtypes.EventAttribute) sdk.Gas { - if len(evts) == 0 { - return 0 +func (g WasmGasRegister) EventCosts(attrs []wasmvmtypes.EventAttribute, events wasmvmtypes.Events) sdk.Gas { + gas, remainingFreeTier := g.eventAttributeCosts(attrs, g.c.EventAttributeDataFreeTier) + for _, e := range events { + gas += g.c.CustomEventCost + gas += sdk.Gas(len(e.Type)) * g.c.EventAttributeDataCost // no free tier with event type + var attrCost sdk.Gas + attrCost, remainingFreeTier = g.eventAttributeCosts(e.Attributes, remainingFreeTier) + gas += attrCost } - var storedBytes int - for _, l := range evts { - storedBytes += len(l.Key) + len(l.Value) + return gas +} + +func (g WasmGasRegister) eventAttributeCosts(attrs []wasmvmtypes.EventAttribute, freeTier uint64) (sdk.Gas, uint64) { + if len(attrs) == 0 { + return 0, freeTier } - // apply free tier - if storedBytes <= g.c.EventAttributeDataFreeTier { - storedBytes = 0 - } else { - storedBytes -= g.c.EventAttributeDataFreeTier + var storedBytes uint64 + for _, l := range attrs { + storedBytes += uint64(len(l.Key)) + uint64(len(l.Value)) } + storedBytes, freeTier = calcWithFreeTier(storedBytes, freeTier) // total Length * costs + attribute count * costs - r := sdk.NewIntFromUint64(g.c.EventAttributeDataCost).Mul(sdk.NewIntFromUint64(uint64(storedBytes))). - Add(sdk.NewIntFromUint64(g.c.EventPerAttributeCost).Mul(sdk.NewIntFromUint64(uint64(len(evts))))) + r := sdk.NewIntFromUint64(g.c.EventAttributeDataCost).Mul(sdk.NewIntFromUint64(storedBytes)). + Add(sdk.NewIntFromUint64(g.c.EventPerAttributeCost).Mul(sdk.NewIntFromUint64(uint64(len(attrs))))) if !r.IsUint64() { panic(sdk.ErrorOutOfGas{Descriptor: "overflow"}) } - return r.Uint64() + return r.Uint64(), freeTier +} + +// apply free tier +func calcWithFreeTier(storedBytes uint64, freeTier uint64) (uint64, uint64) { + if storedBytes <= freeTier { + return 0, freeTier - storedBytes + } + storedBytes -= freeTier + return storedBytes, 0 } diff --git a/x/wasm/keeper/handler_plugin_encoders.go b/x/wasm/keeper/handler_plugin_encoders.go index a45200edc0..94754d3697 100644 --- a/x/wasm/keeper/handler_plugin_encoders.go +++ b/x/wasm/keeper/handler_plugin_encoders.go @@ -10,6 +10,7 @@ import ( sdkerrors "github.com/line/lbm-sdk/types/errors" banktypes "github.com/line/lbm-sdk/x/bank/types" distributiontypes "github.com/line/lbm-sdk/x/distribution/types" + govtypes "github.com/line/lbm-sdk/x/gov/types" ibctransfertypes "github.com/line/lbm-sdk/x/ibc/applications/transfer/types" ibcclienttypes "github.com/line/lbm-sdk/x/ibc/core/02-client/types" channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" @@ -32,6 +33,7 @@ type MessageEncoders struct { Staking func(sender sdk.AccAddress, msg *wasmvmtypes.StakingMsg) ([]sdk.Msg, error) Stargate func(sender sdk.AccAddress, msg *wasmvmtypes.StargateMsg) ([]sdk.Msg, error) Wasm func(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg, error) + Gov func(sender sdk.AccAddress, msg *wasmvmtypes.GovMsg) ([]sdk.Msg, error) } func DefaultEncoders(unpacker codectypes.AnyUnpacker, portSource types.ICS20TransferPortSource) MessageEncoders { @@ -43,6 +45,7 @@ func DefaultEncoders(unpacker codectypes.AnyUnpacker, portSource types.ICS20Tran Staking: EncodeStakingMsg, Stargate: EncodeStargateMsg(unpacker), Wasm: EncodeWasmMsg, + Gov: EncodeGovMsg, } } @@ -71,6 +74,9 @@ func (e MessageEncoders) Merge(o *MessageEncoders) MessageEncoders { if o.Wasm != nil { e.Wasm = o.Wasm } + if o.Gov != nil { + e.Gov = o.Gov + } return e } @@ -90,6 +96,8 @@ func (e MessageEncoders) Encode(ctx sdk.Context, contractAddr sdk.AccAddress, co return e.Stargate(contractAddr, msg.Stargate) case msg.Wasm != nil: return e.Wasm(contractAddr, msg.Wasm) + case msg.Gov != nil: + return EncodeGovMsg(contractAddr, msg.Gov) } return nil, sdkerrors.Wrap(types.ErrUnknownMsg, "unknown variant of Wasm") } @@ -198,7 +206,7 @@ func EncodeStargateMsg(unpacker codectypes.AnyUnpacker) StargateEncoder { func EncodeWasmMsg(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg, error) { switch { case msg.Execute != nil: - coins, err := convertWasmCoinsToSdkCoins(msg.Execute.Send) + coins, err := convertWasmCoinsToSdkCoins(msg.Execute.Funds) if err != nil { return nil, err } @@ -211,7 +219,7 @@ func EncodeWasmMsg(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg, } return []sdk.Msg{&sdkMsg}, nil case msg.Instantiate != nil: - coins, err := convertWasmCoinsToSdkCoins(msg.Instantiate.Send) + coins, err := convertWasmCoinsToSdkCoins(msg.Instantiate.Funds) if err != nil { return nil, err } @@ -280,6 +288,27 @@ func EncodeIBCMsg(portSource types.ICS20TransferPortSource) func(ctx sdk.Context } } } + +func EncodeGovMsg(sender sdk.AccAddress, msg *wasmvmtypes.GovMsg) ([]sdk.Msg, error) { + var option govtypes.VoteOption + switch msg.Vote.Vote { + case wasmvmtypes.Yes: + option = govtypes.OptionYes + case wasmvmtypes.No: + option = govtypes.OptionNo + case wasmvmtypes.NoWithVeto: + option = govtypes.OptionNoWithVeto + case wasmvmtypes.Abstain: + option = govtypes.OptionAbstain + } + vote := &govtypes.MsgVote{ + ProposalId: msg.Vote.ProposalId, + Voter: sender.String(), + Option: option, + } + return []sdk.Msg{vote}, nil +} + func convertWasmIBCTimeoutHeightToCosmosHeight(ibcTimeoutBlock *wasmvmtypes.IBCTimeoutBlock) ibcclienttypes.Height { if ibcTimeoutBlock == nil { return ibcclienttypes.NewHeight(0, 0) diff --git a/x/wasm/keeper/handler_plugin_encoders_test.go b/x/wasm/keeper/handler_plugin_encoders_test.go index 9834b00a4e..f176bd1dbd 100644 --- a/x/wasm/keeper/handler_plugin_encoders_test.go +++ b/x/wasm/keeper/handler_plugin_encoders_test.go @@ -145,7 +145,7 @@ func TestEncoding(t *testing.T) { Execute: &wasmvmtypes.ExecuteMsg{ ContractAddr: addr2.String(), Msg: jsonMsg, - Send: []wasmvmtypes.Coin{ + Funds: []wasmvmtypes.Coin{ wasmvmtypes.NewCoin(12, "eth"), }, }, @@ -167,7 +167,7 @@ func TestEncoding(t *testing.T) { Instantiate: &wasmvmtypes.InstantiateMsg{ CodeID: 7, Msg: jsonMsg, - Send: []wasmvmtypes.Coin{ + Funds: []wasmvmtypes.Coin{ wasmvmtypes.NewCoin(123, "eth"), }, Label: "myLabel", @@ -497,6 +497,70 @@ func TestEncoding(t *testing.T) { }, }, }, + "Gov vote: yes": { + sender: addr1, + srcContractIBCPort: "myIBCPort", + srcMsg: wasmvmtypes.CosmosMsg{ + Gov: &wasmvmtypes.GovMsg{ + Vote: &wasmvmtypes.VoteMsg{ProposalId: 1, Vote: wasmvmtypes.Yes}, + }, + }, + output: []sdk.Msg{ + &govtypes.MsgVote{ + ProposalId: 1, + Voter: addr1.String(), + Option: govtypes.OptionYes, + }, + }, + }, + "Gov vote: No": { + sender: addr1, + srcContractIBCPort: "myIBCPort", + srcMsg: wasmvmtypes.CosmosMsg{ + Gov: &wasmvmtypes.GovMsg{ + Vote: &wasmvmtypes.VoteMsg{ProposalId: 1, Vote: wasmvmtypes.No}, + }, + }, + output: []sdk.Msg{ + &govtypes.MsgVote{ + ProposalId: 1, + Voter: addr1.String(), + Option: govtypes.OptionNo, + }, + }, + }, + "Gov vote: Abstain": { + sender: addr1, + srcContractIBCPort: "myIBCPort", + srcMsg: wasmvmtypes.CosmosMsg{ + Gov: &wasmvmtypes.GovMsg{ + Vote: &wasmvmtypes.VoteMsg{ProposalId: 10, Vote: wasmvmtypes.Abstain}, + }, + }, + output: []sdk.Msg{ + &govtypes.MsgVote{ + ProposalId: 10, + Voter: addr1.String(), + Option: govtypes.OptionAbstain, + }, + }, + }, + "Gov vote: No with veto": { + sender: addr1, + srcContractIBCPort: "myIBCPort", + srcMsg: wasmvmtypes.CosmosMsg{ + Gov: &wasmvmtypes.GovMsg{ + Vote: &wasmvmtypes.VoteMsg{ProposalId: 1, Vote: wasmvmtypes.NoWithVeto}, + }, + }, + output: []sdk.Msg{ + &govtypes.MsgVote{ + ProposalId: 1, + Voter: addr1.String(), + Option: govtypes.OptionNoWithVeto, + }, + }, + }, } encodingConfig := MakeEncodingConfig(t) for name, tc := range cases { diff --git a/x/wasm/keeper/handler_plugin_test.go b/x/wasm/keeper/handler_plugin_test.go index 2926f1bd4c..3bf124b546 100644 --- a/x/wasm/keeper/handler_plugin_test.go +++ b/x/wasm/keeper/handler_plugin_test.go @@ -364,9 +364,9 @@ func TestBurnCoinMessageHandlerIntegration(t *testing.T) { for name, spec := range specs { t.Run(name, func(t *testing.T) { ctx, _ = parentCtx.CacheContext() - k.wasmVM = &wasmtesting.MockWasmer{ExecuteFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, info wasmvmtypes.MessageInfo, executeMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.Response, uint64, error) { - return &wasmvmtypes.Response{Messages: []wasmvmtypes.CosmosMsg{ - {Bank: &wasmvmtypes.BankMsg{Burn: &spec.msg}}, + k.wasmVM = &wasmtesting.MockWasmer{ExecuteFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, info wasmvmtypes.MessageInfo, executeMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { + return &wasmvmtypes.Response{Messages: []wasmvmtypes.SubMsg{ + {Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{Burn: &spec.msg}}, ReplyOn: wasmvmtypes.ReplyNever}, }, }, 0, nil }} diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index a14c240de4..8eed533f7f 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -48,8 +48,7 @@ type WasmVMResponseHandler interface { ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, - submessages []wasmvmtypes.SubMsg, - messages []wasmvmtypes.CosmosMsg, + messages []wasmvmtypes.SubMsg, origRspData []byte, ) ([]byte, error) } @@ -194,7 +193,7 @@ func (k Keeper) replyCosts(g WasmGasRegister, ctx sdk.Context, pinned bool, repl attrs = append(e.Attributes) } // apply free tier on the whole set not per event - eventGas += g.EventCosts(attrs) + eventGas += g.EventCosts(attrs, nil) } return eventGas + k.instantiateContractCosts(g, ctx, pinned, msgLen) } @@ -331,7 +330,7 @@ func (k Keeper) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.A // instantiate wasm contract gas := k.runtimeGasForContract(ctx) - res, gasUsed, err := k.wasmVM.Instantiate(codeInfo.CodeHash, env, info, initMsg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas) + res, gasUsed, err := k.wasmVM.Instantiate(codeInfo.CodeHash, env, info, initMsg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if err != nil { @@ -363,7 +362,7 @@ func (k Keeper) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.A k.storeContractInfo(ctx, contractAddress, &contractInfo) // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Data) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) if err != nil { return "", nil, sdkerrors.Wrap(err, "dispatch") } @@ -399,7 +398,7 @@ func (k Keeper) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller querier := k.newQueryHandler(ctx, contractAddress) gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.Execute(codeInfo.CodeHash, env, info, msg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas) + res, gasUsed, execErr := k.wasmVM.Execute(codeInfo.CodeHash, env, info, msg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -407,7 +406,7 @@ func (k Keeper) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller } // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Data) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } @@ -460,7 +459,7 @@ func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller prefixStore := prefix.NewStore(ctx.KVStore(k.storeKey), prefixStoreKey) gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, err := k.wasmVM.Migrate(newCodeInfo.CodeHash, env, msg, &wasmStore, k.cosmwasmAPI(ctx), &querier, k.gasMeter(ctx), gas) + res, gasUsed, err := k.wasmVM.Migrate(newCodeInfo.CodeHash, env, msg, &wasmStore, k.cosmwasmAPI(ctx), &querier, k.gasMeter(ctx), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if err != nil { @@ -476,7 +475,7 @@ func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller k.storeContractInfo(ctx, contractAddress, contractInfo) // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Data) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } @@ -502,14 +501,14 @@ func (k Keeper) Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte querier := k.newQueryHandler(ctx, contractAddress) wasmStore := types.NewWasmStore(prefixStore) gas := k.runtimeGasForContract(ctx) - res, gasUsed, execErr := k.wasmVM.Sudo(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas) + res, gasUsed, execErr := k.wasmVM.Sudo(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { return nil, sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Data) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } @@ -537,7 +536,7 @@ func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply was } gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.Reply(codeInfo.CodeHash, env, reply, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas) + res, gasUsed, execErr := k.wasmVM.Reply(codeInfo.CodeHash, env, reply, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -545,7 +544,7 @@ func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply was } // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Data) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } @@ -663,7 +662,7 @@ func (k Keeper) QuerySmart(ctx sdk.Context, contractAddr sdk.AccAddress, req []b env := types.NewEnv(ctx, contractAddr) wasmStore := types.NewWasmStore(prefixStore) - queryResult, gasUsed, qErr := k.wasmVM.Query(codeInfo.CodeHash, env, req, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), k.runtimeGasForContract(ctx)) + queryResult, gasUsed, qErr := k.wasmVM.Query(codeInfo.CodeHash, env, req, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), k.runtimeGasForContract(ctx), costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if qErr != nil { @@ -871,17 +870,21 @@ func (k *Keeper) handleContractResponse( ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, - subMsg []wasmvmtypes.SubMsg, - msgs []wasmvmtypes.CosmosMsg, + msgs []wasmvmtypes.SubMsg, attrs []wasmvmtypes.EventAttribute, data []byte, + evts wasmvmtypes.Events, ) ([]byte, error) { - attributeGasCost := k.gasRegister.EventCosts(attrs) + attributeGasCost := k.gasRegister.EventCosts(attrs, evts) ctx.GasMeter().ConsumeGas(attributeGasCost, "Custom contract event attributes") // emit all events from this contract itself - events := types.ParseEvents(attrs, contractAddr) - ctx.EventManager().EmitEvents(events) - return k.wasmVMResponseHandler.Handle(ctx, contractAddr, ibcPort, subMsg, msgs, data) + if len(attrs) != 0 || !hasWasmModuleEvent(ctx, contractAddr) { + ctx.EventManager().EmitEvents(newWasmModuleEvent(attrs, contractAddr)) + } + if len(evts) > 0 { + ctx.EventManager().EmitEvents(newCustomEvents(evts, contractAddr)) + } + return k.wasmVMResponseHandler.Handle(ctx, contractAddr, ibcPort, msgs, data) } func (k Keeper) runtimeGasForContract(ctx sdk.Context) uint64 { @@ -1089,7 +1092,6 @@ func (c BankCoinTransferrer) TransferCoins(ctx sdk.Context, fromAddr sdk.AccAddr } type msgDispatcher interface { - DispatchMessages(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.CosmosMsg) error DispatchSubmessages(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.SubMsg) ([]byte, error) } @@ -1105,21 +1107,13 @@ func NewDefaultWasmVMContractResponseHandler(md msgDispatcher) *DefaultWasmVMCon } // Handle processes the data returned by a contract invocation. -func (h DefaultWasmVMContractResponseHandler) Handle( - ctx sdk.Context, - contractAddr sdk.AccAddress, - ibcPort string, - submessages []wasmvmtypes.SubMsg, - messages []wasmvmtypes.CosmosMsg, - origRspData []byte, -) ([]byte, error) { +func (h DefaultWasmVMContractResponseHandler) Handle(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, messages []wasmvmtypes.SubMsg, origRspData []byte) ([]byte, error) { result := origRspData - switch rsp, err := h.md.DispatchSubmessages(ctx, contractAddr, ibcPort, submessages); { + switch rsp, err := h.md.DispatchSubmessages(ctx, contractAddr, ibcPort, messages); { case err != nil: return nil, sdkerrors.Wrap(err, "submessages") case rsp != nil: result = rsp } - // then dispatch all the normal messages - return result, sdkerrors.Wrap(h.md.DispatchMessages(ctx, contractAddr, ibcPort, messages), "messages") + return result, nil } diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 766c6e93de..a2ba0a0a25 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -288,7 +288,7 @@ func TestInstantiate(t *testing.T) { gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x111dc), gasAfter-gasBefore) + require.Equal(t, uint64(0x12361), gasAfter-gasBefore) } // ensure it is stored properly @@ -448,7 +448,7 @@ func TestInstantiateWithContractDataResponse(t *testing.T) { ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) wasmerMock := &wasmtesting.MockWasmer{ - InstantiateFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, info wasmvmtypes.MessageInfo, initMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.Response, uint64, error) { + InstantiateFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, info wasmvmtypes.MessageInfo, initMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { return &wasmvmtypes.Response{Data: []byte("my-response-data")}, 0, nil }, AnalyzeCodeFn: wasmtesting.WithoutIBCAnalyzeFn, @@ -522,7 +522,7 @@ func TestExecute(t *testing.T) { // make sure gas is properly deducted from ctx gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x107d9), gasAfter-gasBefore) + require.Equal(t, uint64(0x12afd), gasAfter-gasBefore) } // ensure bob now exists and got both payments released bobAcct = accKeeper.GetAccount(ctx, bob) @@ -1175,7 +1175,7 @@ func TestIterateContractsByCode(t *testing.T) { func TestIterateContractsByCodeWithMigration(t *testing.T) { // mock migration so that it does not fail when migrate example1 to example2.codeID - mockWasmVM := wasmtesting.MockWasmer{MigrateFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.Response, uint64, error) { + mockWasmVM := wasmtesting.MockWasmer{MigrateFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, migrateMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { return &wasmvmtypes.Response{}, 1, nil }} wasmtesting.MakeInstantiable(&mockWasmVM) @@ -1657,10 +1657,10 @@ func TestPinnedContractLoops(t *testing.T) { require.NoError(t, k.pinCode(ctx, example.CodeID)) var loops int anyMsg := []byte(`{}`) - mock.ExecuteFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, info wasmvmtypes.MessageInfo, executeMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.Response, uint64, error) { + mock.ExecuteFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, info wasmvmtypes.MessageInfo, executeMsg []byte, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { loops++ return &wasmvmtypes.Response{ - Submessages: []wasmvmtypes.SubMsg{ + Messages: []wasmvmtypes.SubMsg{ { ID: 1, ReplyOn: wasmvmtypes.ReplyError, @@ -1686,10 +1686,6 @@ func TestPinnedContractLoops(t *testing.T) { } func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { - noopDMsgs := func(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.CosmosMsg) error { - return nil - } - specs := map[string]struct { srcData []byte setup func(m *wasmtesting.MockMsgDispatcher) @@ -1702,7 +1698,6 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { m.DispatchSubmessagesFn = func(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.SubMsg) ([]byte, error) { return []byte("mySubMsgData"), nil } - m.DispatchMessagesFn = noopDMsgs }, expErr: false, expData: []byte("mySubMsgData"), @@ -1713,7 +1708,6 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { m.DispatchSubmessagesFn = func(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.SubMsg) ([]byte, error) { return []byte(""), nil } - m.DispatchMessagesFn = noopDMsgs }, expErr: false, expData: []byte(""), @@ -1724,7 +1718,6 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { m.DispatchSubmessagesFn = func(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.SubMsg) ([]byte, error) { return nil, nil } - m.DispatchMessagesFn = noopDMsgs }, expErr: false, expData: []byte("otherData"), @@ -1737,30 +1730,18 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { }, expErr: true, }, - "message error aborts process": { - setup: func(m *wasmtesting.MockMsgDispatcher) { - m.DispatchSubmessagesFn = func(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.SubMsg) ([]byte, error) { - return []byte("mySubMsgData"), nil - } - m.DispatchMessagesFn = func(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.CosmosMsg) error { - return errors.New("test - ignore") - } - }, - expErr: true, - }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { var ( - subMsgs []wasmvmtypes.SubMsg - msgs []wasmvmtypes.CosmosMsg + msgs []wasmvmtypes.SubMsg ) var mock wasmtesting.MockMsgDispatcher spec.setup(&mock) d := NewDefaultWasmVMContractResponseHandler(&mock) // when - gotData, gotErr := d.Handle(sdk.Context{}, RandomAccountAddress(t), "ibc-port", subMsgs, msgs, spec.srcData) + gotData, gotErr := d.Handle(sdk.Context{}, RandomAccountAddress(t), "ibc-port", msgs, spec.srcData) if spec.expErr { require.Error(t, gotErr) return diff --git a/x/wasm/keeper/msg_dispatcher.go b/x/wasm/keeper/msg_dispatcher.go index 41447d9c3a..ae4b589955 100644 --- a/x/wasm/keeper/msg_dispatcher.go +++ b/x/wasm/keeper/msg_dispatcher.go @@ -76,12 +76,14 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk var rsp []byte for _, msg := range msgs { switch msg.ReplyOn { - case wasmvmtypes.ReplySuccess, wasmvmtypes.ReplyError, wasmvmtypes.ReplyAlways: + case wasmvmtypes.ReplySuccess, wasmvmtypes.ReplyError, wasmvmtypes.ReplyAlways, wasmvmtypes.ReplyNever: default: return nil, sdkerrors.Wrap(types.ErrInvalid, "replyOn value") } // first, we build a sub-context which we can use inside the submessages subCtx, commit := ctx.CacheContext() + em := sdk.NewEventManager() + subCtx = subCtx.WithEventManager(em) // check how much gas left locally, optionally wrap the gas meter gasRemaining := ctx.GasMeter().Limit() - ctx.GasMeter().GasConsumed() @@ -99,15 +101,15 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk // if it succeeds, commit state changes from submessage, and pass on events to Event Manager if err == nil { commit() + ctx.EventManager().EmitEvents(em.Events()) ctx.EventManager().EmitEvents(events) - } - // on failure, revert state from sandbox, and ignore events (just skip doing the above) + } // on failure, revert state from sandbox, and ignore events (just skip doing the above) - // we only callback if requested. Short-circuit here the two cases we don't want to - if msg.ReplyOn == wasmvmtypes.ReplySuccess && err != nil { + // we only callback if requested. Short-circuit here the cases we don't want to + if (msg.ReplyOn == wasmvmtypes.ReplySuccess || msg.ReplyOn == wasmvmtypes.ReplyNever) && err != nil { return nil, err } - if msg.ReplyOn == wasmvmtypes.ReplyError && err == nil { + if msg.ReplyOn == wasmvmtypes.ReplyNever || (msg.ReplyOn == wasmvmtypes.ReplyError && err == nil) { continue } diff --git a/x/wasm/keeper/msg_dispatcher_test.go b/x/wasm/keeper/msg_dispatcher_test.go index 6f60b9d97c..eaf518e9c8 100644 --- a/x/wasm/keeper/msg_dispatcher_test.go +++ b/x/wasm/keeper/msg_dispatcher_test.go @@ -102,6 +102,39 @@ func TestDispatchSubmessages(t *testing.T) { Attributes: []abci.EventAttribute{{Key: []byte("foo"), Value: []byte("bar")}}, }}, }, + "with context events - released on commit": { + msgs: []wasmvmtypes.SubMsg{{ + ReplyOn: wasmvmtypes.ReplyNever, + }}, + replyer: &mockReplyer{}, + msgHandler: &wasmtesting.MockMessageHandler{ + DispatchMsgFn: func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { + myEvents := []sdk.Event{{Type: "myEvent", Attributes: []abci.EventAttribute{{Key: []byte("foo"), Value: []byte("bar")}}}} + ctx.EventManager().EmitEvents(myEvents) + return nil, nil, nil + }, + }, + expCommits: []bool{true}, + expEvents: []sdk.Event{{ + Type: "myEvent", + Attributes: []abci.EventAttribute{{Key: []byte("foo"), Value: []byte("bar")}}, + }}, + }, + "with context events - discarded on failure": { + msgs: []wasmvmtypes.SubMsg{{ + ReplyOn: wasmvmtypes.ReplyNever, + }}, + replyer: &mockReplyer{}, + msgHandler: &wasmtesting.MockMessageHandler{ + DispatchMsgFn: func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { + myEvents := []sdk.Event{{Type: "myEvent", Attributes: []abci.EventAttribute{{Key: []byte("foo"), Value: []byte("bar")}}}} + ctx.EventManager().EmitEvents(myEvents) + return nil, nil, errors.New("testing") + }, + }, + expCommits: []bool{false}, + expErr: true, + }, "reply returns error": { msgs: []wasmvmtypes.SubMsg{{ ReplyOn: wasmvmtypes.ReplySuccess, @@ -152,7 +185,38 @@ func TestDispatchSubmessages(t *testing.T) { }, expCommits: []bool{true}, }, - "multiple msg - last reply": { + "never reply - with nil response": { + msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyNever}, {ID: 2, ReplyOn: wasmvmtypes.ReplyNever}}, + replyer: &mockReplyer{}, + msgHandler: &wasmtesting.MockMessageHandler{ + DispatchMsgFn: func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { + return nil, [][]byte{nil}, nil + }, + }, + expCommits: []bool{true, true}, + }, + "never reply - with any non nil response": { + msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyNever}, {ID: 2, ReplyOn: wasmvmtypes.ReplyNever}}, + replyer: &mockReplyer{}, + msgHandler: &wasmtesting.MockMessageHandler{ + DispatchMsgFn: func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { + return nil, [][]byte{{}}, nil + }, + }, + expCommits: []bool{true, true}, + }, + "never reply - with error": { + msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyNever}, {ID: 2, ReplyOn: wasmvmtypes.ReplyNever}}, + replyer: &mockReplyer{}, + msgHandler: &wasmtesting.MockMessageHandler{ + DispatchMsgFn: func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { + return nil, [][]byte{{}}, errors.New("testing") + }, + }, + expCommits: []bool{false, false}, + expErr: true, + }, + "multiple msg - last reply returned": { msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyError}, {ID: 2, ReplyOn: wasmvmtypes.ReplyError}}, replyer: &mockReplyer{ replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { @@ -167,7 +231,7 @@ func TestDispatchSubmessages(t *testing.T) { expData: []byte("myReplyData:2"), expCommits: []bool{false, false}, }, - "multiple msg - last non nil reply to overwrite responose": { + "multiple msg - last non nil reply returned": { msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyError}, {ID: 2, ReplyOn: wasmvmtypes.ReplyError}}, replyer: &mockReplyer{ replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { @@ -203,19 +267,6 @@ func TestDispatchSubmessages(t *testing.T) { expData: []byte{}, expCommits: []bool{false, false}, }, - "empty replyOn rejected": { - msgs: []wasmvmtypes.SubMsg{{}}, - replyer: noReplyCalled, - msgHandler: &wasmtesting.MockMessageHandler{}, - expErr: true, - }, - "invalid replyOn rejected": { - msgs: []wasmvmtypes.SubMsg{{ReplyOn: "invalid"}}, - replyer: noReplyCalled, - msgHandler: &wasmtesting.MockMessageHandler{}, - expCommits: []bool{false}, - expErr: true, - }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { @@ -228,6 +279,7 @@ func TestDispatchSubmessages(t *testing.T) { gotData, gotErr := d.DispatchSubmessages(ctx, RandomAccountAddress(t), "any_port", spec.msgs) if spec.expErr { require.Error(t, gotErr) + assert.Empty(t, em.Events()) return } else { require.NoError(t, gotErr) diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index f1c2ac2fa1..07579e1e3b 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -183,7 +183,7 @@ func TestQuerySmartContractPanics(t *testing.T) { } for msg, spec := range specs { t.Run(msg, func(t *testing.T) { - keepers.WasmKeeper.wasmVM = &wasmtesting.MockWasmer{QueryFn: func(checksum cosmwasm.Checksum, env wasmvmtypes.Env, queryMsg []byte, store cosmwasm.KVStore, goapi cosmwasm.GoAPI, querier cosmwasm.Querier, gasMeter cosmwasm.GasMeter, gasLimit uint64) ([]byte, uint64, error) { + keepers.WasmKeeper.wasmVM = &wasmtesting.MockWasmer{QueryFn: func(checksum cosmwasm.Checksum, env wasmvmtypes.Env, queryMsg []byte, store cosmwasm.KVStore, goapi cosmwasm.GoAPI, querier cosmwasm.Querier, gasMeter cosmwasm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) ([]byte, uint64, error) { spec.doInContract() return nil, 0, nil }} diff --git a/x/wasm/keeper/recurse_test.go b/x/wasm/keeper/recurse_test.go index ae8c2669a9..cfd1066a80 100644 --- a/x/wasm/keeper/recurse_test.go +++ b/x/wasm/keeper/recurse_test.go @@ -225,7 +225,7 @@ func TestLimitRecursiveQueryGas(t *testing.T) { GasWork2k uint64 = 273_644 // = InstanceCost + x // we have 6x gas used in cpu than in the instance // This is overhead for calling into a sub-contract - GasReturnHashed uint64 = 203 + GasReturnHashed uint64 = 177 ) cases := map[string]struct { diff --git a/x/wasm/keeper/reflect_test.go b/x/wasm/keeper/reflect_test.go index cf41eeca50..7d4a3ab20b 100644 --- a/x/wasm/keeper/reflect_test.go +++ b/x/wasm/keeper/reflect_test.go @@ -25,9 +25,9 @@ import ( // ReflectHandleMsg is used to encode handle messages type ReflectHandleMsg struct { - Reflect *reflectPayload `json:"reflect_msg,omitempty"` - ReflectSubCall *reflectSubPayload `json:"reflect_sub_call,omitempty"` - Change *ownerPayload `json:"change_owner,omitempty"` + Reflect *reflectPayload `json:"reflect_msg,omitempty"` + ReflectSubMsg *reflectSubPayload `json:"reflect_sub_msg,omitempty"` + Change *ownerPayload `json:"change_owner,omitempty"` } type ownerPayload struct { @@ -44,10 +44,10 @@ type reflectSubPayload struct { // ReflectQueryMsg is used to encode query messages type ReflectQueryMsg struct { - Owner *struct{} `json:"owner,omitempty"` - Capitalized *Text `json:"capitalized,omitempty"` - Chain *ChainQuery `json:"chain,omitempty"` - SubCallResult *SubCall `json:"sub_call_result,omitempty"` + Owner *struct{} `json:"owner,omitempty"` + Capitalized *Text `json:"capitalized,omitempty"` + Chain *ChainQuery `json:"chain,omitempty"` + SubMsgResult *SubCall `json:"sub_msg_result,omitempty"` } type ChainQuery struct { @@ -140,7 +140,7 @@ func TestReflectContractSend(t *testing.T) { Execute: &wasmvmtypes.ExecuteMsg{ ContractAddr: escrowAddr.String(), Msg: approveMsg, - Send: []wasmvmtypes.Coin{{ + Funds: []wasmvmtypes.Coin{{ Denom: "denom", Amount: "14000", }}, diff --git a/x/wasm/keeper/relay.go b/x/wasm/keeper/relay.go index 880a1dfb07..46b081962d 100644 --- a/x/wasm/keeper/relay.go +++ b/x/wasm/keeper/relay.go @@ -32,7 +32,7 @@ func (k Keeper) OnOpenChannel( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - gasUsed, execErr := k.wasmVM.IBCChannelOpen(codeInfo.CodeHash, env, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) + gasUsed, execErr := k.wasmVM.IBCChannelOpen(codeInfo.CodeHash, env, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -65,7 +65,7 @@ func (k Keeper) OnConnectChannel( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCChannelConnect(codeInfo.CodeHash, env, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) + res, gasUsed, execErr := k.wasmVM.IBCChannelConnect(codeInfo.CodeHash, env, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -98,7 +98,7 @@ func (k Keeper) OnCloseChannel( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCChannelClose(codeInfo.CodeHash, params, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) + res, gasUsed, execErr := k.wasmVM.IBCChannelClose(codeInfo.CodeHash, params, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -130,14 +130,14 @@ func (k Keeper) OnRecvPacket( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCPacketReceive(codeInfo.CodeHash, env, packet, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) + res, gasUsed, execErr := k.wasmVM.IBCPacketReceive(codeInfo.CodeHash, env, packet, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { return nil, sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - - return k.handleContractResponse(ctx, contractAddr, contractInfo.IBCPortID, res.Submessages, res.Messages, res.Attributes, res.Acknowledgement) + // note submessage reply results can overwrite the `Acknowledgement` data + return k.handleContractResponse(ctx, contractAddr, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Acknowledgement, nil) } // OnAckPacket calls the contract to handle the "acknowledgement" data which can contain success or failure of a packet @@ -150,7 +150,7 @@ func (k Keeper) OnRecvPacket( func (k Keeper) OnAckPacket( ctx sdk.Context, contractAddr sdk.AccAddress, - acknowledgement wasmvmtypes.IBCAcknowledgement, + acknowledgement wasmvmtypes.IBCAcknowledgementWithPacket, ) error { defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-ack-packet") contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddr) @@ -163,7 +163,7 @@ func (k Keeper) OnAckPacket( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCPacketAck(codeInfo.CodeHash, env, acknowledgement, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) + res, gasUsed, execErr := k.wasmVM.IBCPacketAck(codeInfo.CodeHash, env, acknowledgement, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -192,7 +192,7 @@ func (k Keeper) OnTimeoutPacket( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCPacketTimeout(codeInfo.CodeHash, env, packet, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas) + res, gasUsed, execErr := k.wasmVM.IBCPacketTimeout(codeInfo.CodeHash, env, packet, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -203,6 +203,6 @@ func (k Keeper) OnTimeoutPacket( } func (k Keeper) handleIBCBasicContractResponse(ctx sdk.Context, addr sdk.AccAddress, id string, res *wasmvmtypes.IBCBasicResponse) error { - _, err := k.handleContractResponse(ctx, addr, id, res.Submessages, res.Messages, res.Attributes, nil) + _, err := k.handleContractResponse(ctx, addr, id, res.Messages, res.Attributes, nil, nil) return err } diff --git a/x/wasm/keeper/relay_test.go b/x/wasm/keeper/relay_test.go index 6ceadf714a..d87c3e99fd 100644 --- a/x/wasm/keeper/relay_test.go +++ b/x/wasm/keeper/relay_test.go @@ -54,7 +54,7 @@ func TestOnOpenChannel(t *testing.T) { for name, spec := range specs { t.Run(name, func(t *testing.T) { myChannel := wasmvmtypes.IBCChannel{Version: "my test channel"} - m.IBCChannelOpenFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (uint64, error) { + m.IBCChannelOpenFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (uint64, error) { assert.Equal(t, myChannel, channel) return spec.contractGas * types.DefaultGasMultiplier, spec.contractErr } @@ -104,8 +104,8 @@ func TestOnConnectChannel(t *testing.T) { "consume gas on error, ignore events + messages": { contractAddr: example.Contract, expContractGas: myContractGas, - contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}}, + contractResp: &wasmvmtypes.IBCBasicResponse{ + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, contractErr: errors.New("test, ignore"), @@ -115,8 +115,8 @@ func TestOnConnectChannel(t *testing.T) { "dispatch contract messages on success": { contractAddr: example.Contract, expContractGas: myContractGas, - contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + contractResp: &wasmvmtypes.IBCBasicResponse{ + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, }, }, "emit contract events on success": { @@ -130,8 +130,8 @@ func TestOnConnectChannel(t *testing.T) { "messenger errors returned, events stored": { contractAddr: example.Contract, expContractGas: myContractGas + 10, - contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + contractResp: &wasmvmtypes.IBCBasicResponse{ + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, overwriteMessenger: wasmtesting.NewErroringMessageHandler(), @@ -147,7 +147,7 @@ func TestOnConnectChannel(t *testing.T) { for name, spec := range specs { t.Run(name, func(t *testing.T) { myChannel := wasmvmtypes.IBCChannel{Version: "my test channel"} - m.IBCChannelConnectFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.IBCBasicResponse, uint64, error) { + m.IBCChannelConnectFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { assert.Equal(t, channel, myChannel) return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } @@ -185,7 +185,12 @@ func TestOnConnectChannel(t *testing.T) { assert.Equal(t, spec.expContractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) // verify msgs dispatched - assert.Equal(t, spec.contractResp.Messages, *capturedMsgs) + require.Len(t, *capturedMsgs, len(spec.contractResp.Messages)) + for i, m := range spec.contractResp.Messages { + assert.Equal(t, (*capturedMsgs)[i], m.Msg) + } + // verify events + require.Len(t, events, 1) assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) }) } @@ -218,7 +223,7 @@ func TestOnCloseChannel(t *testing.T) { contractAddr: example.Contract, expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}}, + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, contractErr: errors.New("test, ignore"), @@ -228,8 +233,8 @@ func TestOnCloseChannel(t *testing.T) { "dispatch contract messages on success": { contractAddr: example.Contract, expContractGas: myContractGas, - contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + contractResp: &wasmvmtypes.IBCBasicResponse{ + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, }, }, "emit contract events on success": { @@ -243,8 +248,8 @@ func TestOnCloseChannel(t *testing.T) { "messenger errors returned, events stored": { contractAddr: example.Contract, expContractGas: myContractGas + 10, - contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + contractResp: &wasmvmtypes.IBCBasicResponse{ + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, overwriteMessenger: wasmtesting.NewErroringMessageHandler(), @@ -260,7 +265,7 @@ func TestOnCloseChannel(t *testing.T) { for name, spec := range specs { t.Run(name, func(t *testing.T) { myChannel := wasmvmtypes.IBCChannel{Version: "my test channel"} - m.IBCChannelCloseFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.IBCBasicResponse, uint64, error) { + m.IBCChannelCloseFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { assert.Equal(t, channel, myChannel) return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } @@ -296,7 +301,10 @@ func TestOnCloseChannel(t *testing.T) { assert.Equal(t, spec.expContractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) // verify msgs dispatched - assert.Equal(t, spec.contractResp.Messages, *capturedMsgs) + require.Len(t, *capturedMsgs, len(spec.contractResp.Messages)) + for i, m := range spec.contractResp.Messages { + assert.Equal(t, (*capturedMsgs)[i], m.Msg) + } require.Len(t, events, 1) assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) }) @@ -316,7 +324,9 @@ func TestOnRecvPacket(t *testing.T) { contractResp *wasmvmtypes.IBCReceiveResponse contractErr error overwriteMessenger *wasmtesting.MockMessageHandler + mockReplyFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) expContractGas sdk.Gas + expAck []byte expErr bool expContractEventAttrs int expNoEvents bool @@ -327,6 +337,7 @@ func TestOnRecvPacket(t *testing.T) { contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), }, + expAck: []byte("myAck"), }, "can return empty ack": { contractAddr: example.Contract, @@ -338,7 +349,7 @@ func TestOnRecvPacket(t *testing.T) { expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}}, + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, contractErr: errors.New("test, ignore"), @@ -350,8 +361,9 @@ func TestOnRecvPacket(t *testing.T) { expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, }, + expAck: []byte("myAck"), }, "emit contract events on success": { contractAddr: example.Contract, @@ -361,19 +373,32 @@ func TestOnRecvPacket(t *testing.T) { Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, expContractEventAttrs: 1, + expAck: []byte("myAck"), }, "messenger errors returned, events stored": { contractAddr: example.Contract, expContractGas: myContractGas + 10, contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, overwriteMessenger: wasmtesting.NewErroringMessageHandler(), expErr: true, expContractEventAttrs: 1, }, + "submessage reply can overwrite ack data": { + contractAddr: example.Contract, + expContractGas: myContractGas + 10 + DefaultInstanceCost + 3708, + contractResp: &wasmvmtypes.IBCReceiveResponse{ + Acknowledgement: []byte("myAck"), + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyAlways, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}}, + }, + mockReplyFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { + return &wasmvmtypes.Response{Data: []byte("myBetterAck")}, 0, nil + }, + expAck: []byte("myBetterAck"), + }, "unknown contract address": { contractAddr: RandomAccountAddress(t), expErr: true, @@ -384,10 +409,16 @@ func TestOnRecvPacket(t *testing.T) { t.Run(name, func(t *testing.T) { myPacket := wasmvmtypes.IBCPacket{Data: []byte("my data")} - m.IBCPacketReceiveFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.IBCReceiveResponse, uint64, error) { + m.IBCPacketReceiveFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCReceiveResponse, uint64, error) { assert.Equal(t, myPacket, packet) return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } + if spec.mockReplyFn != nil { + m.ReplyFn = spec.mockReplyFn + h, ok := keepers.WasmKeeper.wasmVMResponseHandler.(*DefaultWasmVMContractResponseHandler) + require.True(t, ok) + h.md = NewMessageDispatcher(messenger, keepers.WasmKeeper) + } ctx, _ := parentCtx.CacheContext() before := ctx.GasMeter().GasConsumed() @@ -416,14 +447,17 @@ func TestOnRecvPacket(t *testing.T) { return } require.NoError(t, err) - require.Equal(t, spec.contractResp.Acknowledgement, gotAck) + require.Equal(t, spec.expAck, gotAck) // verify gas consumed const storageCosts = sdk.Gas(0xa8b) assert.Equal(t, spec.expContractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) // verify msgs dispatched - assert.Equal(t, spec.contractResp.Messages, *capturedMsgs) + require.Len(t, *capturedMsgs, len(spec.contractResp.Messages)) + for i, m := range spec.contractResp.Messages { + assert.Equal(t, (*capturedMsgs)[i], m.Msg) + } require.Len(t, events, 1) assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) }) @@ -457,7 +491,7 @@ func TestOnAckPacket(t *testing.T) { contractAddr: example.Contract, expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}}, + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, contractErr: errors.New("test, ignore"), @@ -467,8 +501,8 @@ func TestOnAckPacket(t *testing.T) { "dispatch contract messages on success": { contractAddr: example.Contract, expContractGas: myContractGas, - contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + contractResp: &wasmvmtypes.IBCBasicResponse{ + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, }, }, "emit contract events on success": { @@ -483,7 +517,7 @@ func TestOnAckPacket(t *testing.T) { contractAddr: example.Contract, expContractGas: myContractGas + 10, contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, overwriteMessenger: wasmtesting.NewErroringMessageHandler(), @@ -499,8 +533,8 @@ func TestOnAckPacket(t *testing.T) { for name, spec := range specs { t.Run(name, func(t *testing.T) { - myAck := wasmvmtypes.IBCAcknowledgement{Acknowledgement: []byte("myAck")} - m.IBCPacketAckFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, ack wasmvmtypes.IBCAcknowledgement, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.IBCBasicResponse, uint64, error) { + myAck := wasmvmtypes.IBCAcknowledgementWithPacket{Acknowledgement: wasmvmtypes.IBCAcknowledgement{Data: []byte("myAck")}} + m.IBCPacketAckFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, ack wasmvmtypes.IBCAcknowledgementWithPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { assert.Equal(t, myAck, ack) return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } @@ -537,7 +571,11 @@ func TestOnAckPacket(t *testing.T) { assert.Equal(t, spec.expContractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) // verify msgs dispatched - assert.Equal(t, spec.contractResp.Messages, *capturedMsgs) + require.Len(t, *capturedMsgs, len(spec.contractResp.Messages)) + for i, m := range spec.contractResp.Messages { + assert.Equal(t, (*capturedMsgs)[i], m.Msg) + } + require.Len(t, events, 1) assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) }) @@ -571,7 +609,7 @@ func TestOnTimeoutPacket(t *testing.T) { contractAddr: example.Contract, expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}}, + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, contractErr: errors.New("test, ignore"), @@ -583,7 +621,7 @@ func TestOnTimeoutPacket(t *testing.T) { expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, }, }, "emit contract events on success": { @@ -598,7 +636,7 @@ func TestOnTimeoutPacket(t *testing.T) { contractAddr: example.Contract, expContractGas: myContractGas + 10, contractResp: &wasmvmtypes.IBCBasicResponse{ - Messages: []wasmvmtypes.CosmosMsg{{Bank: &wasmvmtypes.BankMsg{}}, {Custom: json.RawMessage(`{"foo":"bar"}`)}}, + Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, overwriteMessenger: wasmtesting.NewErroringMessageHandler(), @@ -614,7 +652,7 @@ func TestOnTimeoutPacket(t *testing.T) { for name, spec := range specs { t.Run(name, func(t *testing.T) { myPacket := wasmvmtypes.IBCPacket{Data: []byte("my test packet")} - m.IBCPacketTimeoutFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64) (*wasmvmtypes.IBCBasicResponse, uint64, error) { + m.IBCPacketTimeoutFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { assert.Equal(t, myPacket, packet) return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } @@ -650,7 +688,10 @@ func TestOnTimeoutPacket(t *testing.T) { assert.Equal(t, spec.expContractGas, ctx.GasMeter().GasConsumed()-before-storageCosts) // verify msgs dispatched - assert.Equal(t, spec.contractResp.Messages, *capturedMsgs) + require.Len(t, *capturedMsgs, len(spec.contractResp.Messages)) + for i, m := range spec.contractResp.Messages { + assert.Equal(t, (*capturedMsgs)[i], m.Msg) + } require.Len(t, events, 1) assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) }) diff --git a/x/wasm/keeper/submsg_test.go b/x/wasm/keeper/submsg_test.go index 932aac574a..0ec6d3ed58 100644 --- a/x/wasm/keeper/submsg_test.go +++ b/x/wasm/keeper/submsg_test.go @@ -58,7 +58,7 @@ func TestDispatchSubMsgSuccessCase(t *testing.T) { }, } reflectSend := ReflectHandleMsg{ - ReflectSubCall: &reflectSubPayload{ + ReflectSubMsg: &reflectSubPayload{ Msgs: []wasmvmtypes.SubMsg{{ ID: 7, Msg: msg, @@ -79,7 +79,7 @@ func TestDispatchSubMsgSuccessCase(t *testing.T) { // query the reflect state to ensure the result was stored query := ReflectQueryMsg{ - SubCallResult: &SubCall{ID: 7}, + SubMsgResult: &SubCall{ID: 7}, } queryBz, err := json.Marshal(query) require.NoError(t, err) @@ -318,7 +318,7 @@ func TestDispatchSubMsgErrorHandling(t *testing.T) { msg := tc.msg(contractAddr.String(), empty.String()) reflectSend := ReflectHandleMsg{ - ReflectSubCall: &reflectSubPayload{ + ReflectSubMsg: &reflectSubPayload{ Msgs: []wasmvmtypes.SubMsg{{ ID: tc.submsgID, Msg: msg, @@ -349,7 +349,7 @@ func TestDispatchSubMsgErrorHandling(t *testing.T) { // query the reply query := ReflectQueryMsg{ - SubCallResult: &SubCall{ID: tc.submsgID}, + SubMsgResult: &SubCall{ID: tc.submsgID}, } queryBz, err := json.Marshal(query) require.NoError(t, err) @@ -421,7 +421,7 @@ func TestDispatchSubMsgEncodeToNoSdkMsg(t *testing.T) { }, } reflectSend := ReflectHandleMsg{ - ReflectSubCall: &reflectSubPayload{ + ReflectSubMsg: &reflectSubPayload{ Msgs: []wasmvmtypes.SubMsg{{ ID: 7, Msg: msg, @@ -436,7 +436,7 @@ func TestDispatchSubMsgEncodeToNoSdkMsg(t *testing.T) { // query the reflect state to ensure the result was stored query := ReflectQueryMsg{ - SubCallResult: &SubCall{ID: 7}, + SubMsgResult: &SubCall{ID: 7}, } queryBz, err := json.Marshal(query) require.NoError(t, err) @@ -547,7 +547,7 @@ func TestDispatchSubMsgConditionalReplyOn(t *testing.T) { } reflectSend := ReflectHandleMsg{ - ReflectSubCall: &reflectSubPayload{ + ReflectSubMsg: &reflectSubPayload{ Msgs: []wasmvmtypes.SubMsg{subMsg}, }, } @@ -563,7 +563,7 @@ func TestDispatchSubMsgConditionalReplyOn(t *testing.T) { // query the reflect state to check if the result was stored query := ReflectQueryMsg{ - SubCallResult: &SubCall{ID: id}, + SubMsgResult: &SubCall{ID: id}, } queryBz, err := json.Marshal(query) require.NoError(t, err) diff --git a/x/wasm/keeper/testdata/burner.wasm b/x/wasm/keeper/testdata/burner.wasm index a060cb5a645c5acaf6a3656d0fcf1392696f3e56..376de569a4709afa9a15cbd4becb921fe4adfdc8 100644 GIT binary patch literal 125699 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/Pg&Vjdl^$Zc76obQbf}a=T9*Rx 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 dB`F5fK1*?G*3UzN)G@4 diff --git a/x/wasm/keeper/testdata/download_releases.sh b/x/wasm/keeper/testdata/download_releases.sh index 9a9bf87a1b..4d6041ef20 100755 --- a/x/wasm/keeper/testdata/download_releases.sh +++ b/x/wasm/keeper/testdata/download_releases.sh @@ -10,11 +10,11 @@ fi tag="$1" for contract in burner hackatom ibc_reflect ibc_reflect_send reflect staking; do - url="https://github.com/CosmWasm/cosmwasm/releases/download/$tag/${contract}.wasm" + url="https://github.com/line/cosmwasm/releases/download/$tag/${contract}.wasm" echo "Downloading $url ..." wget -O "${contract}.wasm" "$url" done # create the zip variant gzip -k hackatom.wasm -mv hackatom.wasm.gz hackatom.wasm.gzip \ No newline at end of file +mv hackatom.wasm.gz hackatom.wasm.gzip diff --git a/x/wasm/keeper/testdata/hackatom.wasm b/x/wasm/keeper/testdata/hackatom.wasm index e9f0b90503b47903439ec61278a7a0282c09232d..de26a77b6214ba218e25a0d633ee0fc99c1155ef 100644 GIT binary patch literal 177717 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

5~D=GH2VsD8Ia2@SPNtHpNuJsjVk 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 b22z6wBvj%oX$v=0I`#hm>bF-EHMRl(s)p%6 literal 65202 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

E8VzPsR9~_^ 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 (w#*{ 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 kg4la}r#-ej3_heBgcaxm#^AAA1)1Fgs3k^lez literal 290806 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ν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

J2%1nf6fw?q!WqF0Ie}Vs3b{;k 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%0Agv_DK&hkH9$S)fuvW$Vfbk19Cci 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 diff --git a/x/wasm/keeper/testdata/reflect.wasm b/x/wasm/keeper/testdata/reflect.wasm index 4606c4a8df628b66bd73abec713f43106fb1abcb..2455801fa8b6c63cbe4911e88a0018a33dfd63b1 100644 GIT binary patch literal 272896 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ખ@Kwp__-NT#sD8jCirM9$3R;-~}ps1|a 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 literal 298196 zcmeFadz4*Qedl@3KKE61t4dc7+wu#}y%wZ2%QZL|kc4q}>u4ckI&{Zm_=B0njBT(w zvSf@c3tm1M~U*e)~Lb)h(%Hup<&%mhO4($8Z1k_xIfUBsabD?P-!E>AmTNH-`QD)BXB4 zxiQ;c{>zmXCtOQ)H|3zMbAA)McK3}vJGV>rD35jHrSf4esmS#18#{i-s<>OX@8&F9j+rkiixcf-4Hy7iWuZ{ityWvyL%+fBE<9^F`9-nZ**)VA-2+u!xpy}RC<%<1;ruA9H-Rj>N) zSC753p}hFko9=wu?y+0#n|HnST|eM0?%(mQUHjg9!`pV>bjxkD_rHW^LTGi9F8_s) zgb>m+ZShYh2froeo7${7)}Za+)TTTmGNGLzL6*^jcj?3)3^x)1lQ)si?Jh=(ix}=X=}EXCT$*~xG*)PvXeI5Tu%eje!J7s8%f*$(=n~G6P{A*Xhe@zP%j5S+>H4?(KswWT`>waYW8Zs2(%!f0_FLbZ{9yl<+unKSO}E{7i&*Zi z?ymRjdfU4=`k}TBZE|<-rdw})$J=!C)9LihyQ;H)m#*En>yCHbvTxTrZ=isEKcGi` zEgdv3?!D!hTW-5^*S>#p)7y55k=}XBJ8rw-Ra~CF;Rg8prW;%-pGki`{rBmK z^f%JqOn)nVEdA~DchdhaeaG8x`>$c^e@OSdKmFnKed$l7_kj%`Pk$!;+4N)Szes;N z-Tedir@t3o`3vb+!yQ}p{7U-E>CyCGrw^n*mwqz*C~tfu{qgj0`r-7)(vPOQ|6{u6 ziS+lmy8F@a=VA9Pd!9|d&e@NKJqN-MhxdnXrtb?M3HOGd2pqv-X+rQ)oW8ELJ?Ba?Y|W(oyj`Sw zMy!^3q&5ZSS&?iByY*gHoJ#f->6Vb>S>E0f zZskX%a$7gI@8#8$gQt=`gIRu0B&vJZ&a?UO+F?sS+l$oNlDAZfTBm|IqPfGiHE!o@ zn3?L+qV}HR%BvIZ**i=_H>>XX@G)4Oq91aRh)WD5h^DzZJrFV^SkBVBFL&!Wp{!{~98Cy^m6B}4d*Aw%)6o=IK<0h%2S z>adgBIz9MHh(8~87wNS&Y?tlf<})^tKD2+sCo@t&gBuRt= zCtlvt#M7klVS!clz$z_)fU!*nrs40|*v3lecpW7cl-yGT!9>;cxnG_ z?l=3--2V>he>wk~J+=8yKf~rM*^z#~&3PnhI{0epvKOh!*%DNEjEj?C;k8^vP;a+a z4Ij3IHzTe~Xt+9g3&$!lE1p28f9QS36NE)zdJX2raA#FDG)nr2O6pM3;JKAVpMf*l zx{$nO@RVsC+cf2~f|h_@75Ke&Yj%|$1xYG|l;|iQ$gXm9G~RLH*(!lzB`Ew3feBNK zn#>cSu%0F>qy2YC7gvjfQ%jL>>N^SvK*GNQ`8FrX)W*#yOR@XJVU*M6fi)a2&|7;Y@V(DAQCL#Fw4dA1|nnxWHz zHaY6kn*a$w4`k!uvk6xm^0x2Y5^m&>ae{43~mYU;o_4#_Slaf zkILBKGhr4B#t_alGU}TT*A2enC!;`rbmg`B4TBHS#jF6a0zb>tHAgITy4NA8vjUwi zEJZB6PA3NZ^n}irje*{Vty$vYV1P6z5)g9b2McT1z-qgspL2$6*&14TQp~7m14ZBx z``JJf`*P2wWKF;L6l5v3@&q(5o`e*|@q3OZgWrlnHh5SEC?a-nKRydHMDx%Bi?Q=) z*FT=+pJAAR8VK|)0Ucu4vMXsn>=(T-Wn_)?4&Vm0;lJ>Ch^*$%0IS#B{FzK+jF+eDA1JS=9;g&$${qInN{-L~I{HTo!vqQ*I|iblJ(AtP zUOkgXz^2*co@zS5s}Y_euddKj^8!U)rTOAjHPd-DHj|#JWd@dc+knGGfQF^ihxKgi zGhI+Q9UI@g1#k_XhRjS79_WBy^wuBfY!0oh8PyL{*g^g%n>Ap8DbAF!IU7`{S9Qp+ zgPTYWVV-;@)~cB#Pek){@c*R!&qdU@>V-p%fzU?%Y@o)53N;40mq*l)iY?%nuYqHe z14n*-1IG*3$7)^`FEn;6>m%5)d>m~?J%@2T&){QOX8{3q)@NJEv@3Vk5F|3~w;4gq zOCaQ6*0cscq9dtJ0*ZWOKl9S%INb#7r>4M3X!Bg9df|cI9He^HAmea11~Rp3rS~15 zqWUA8xoR9|9(++DL2kdOki4jnG(r^LISPqX1iVc>!;a@)EBW^?qQ#47@uK-M9?(4h z(ZZDv%n~`KaTUq1M8|L^7Drfn^7(NS9C5Y(c{Xo;V#fU-k0*OaZ8<{nDvcnY zaZKfjx|1jxXXX?^iKW|eYjxlfbBatJM+}?g;|ReRz;hqRXxNlPS#@(|zX*+6!86j? zTQof*Ho?p@V%;^*2wWmg!3Q+nU4xd%-Nm#~ciprp*>>gb;@_y)wrScJ+m_Ces=IhN zJMLcP;0%5d;mJ^*$g8krI5u5m)Ebhs|$4~ezqU~U)Jl)jR7-rgKusi>GaiMA<6 zU`YEk?|AE#m_x1Beh{gBr?Pd5Z>D$b95VZ;q-gCM_Heb+&pXN_qaMtn!24*522>F> z^Oo}19$Zw=87Gq1s!PZC3!QO0Q?%GBW8{{=gW)Bf82LW7LF5P#aF`KVvB3skDXWNw z@y4qcRdNxWEJ&DgPZUK)WXN{X8XDpBt??lh1uKuKkyKvh4K(8f0n+GERFQzy=8!1l zu#Ct&X*i~b+MBcOqB4HjfY~_=n2kiIiyH~y%qIOJ!I9k;b&KS6ga4#?g1M=|YLwvS zCZ##^%x0G`XznpH>I_zXOExD>sLfH8??p#Xf4g`*DXmdww~zNji`-Rm%uXU0vQ2Uv zs`G(>v!$0Q=HXn$tNJ2w}dy)7nRCwI*8YeAyxDRI$65gRq8*Jk_KI=`7>i#JER3Q3WGZN{`?O zbRv2bgyiS}(SHy7G`Nx0c(&U)^b)P&{Oe_Evq8NydDZMCFyOuO!DFZ*!;Zq< z-xjBcDTE%soo8BsBd>(|P~jQ_j923P-)2Yi9KDuXpRcB(Vz&%mjNK9h=6D-Vy;*!z zJX!~DH7`FC=d@v&O-cQ87239Q-Ta8~BOt|;)vvq%GC&(yXfb4)?}lOmy=M3aHFk@BCe|*O%W5d$D#;3AAhHs4U2VqiSv#oFGqvM9 z>7d0Stb+!B&6H*s(U>R>83PpE$D=I5UvmV(3RIXX(a*Fh(_hE+DvPa89zlyjFC9Ut zRp&f{5&6nNton$K*Fe5(3G%6TaHt@^=va_%jO?Yk+R}DtWInBWf+eQ&Os-l4#0$v~6^dk$usz$Z zHZ1*vBt&x_^@}S7ZvEn~lWS)YAmp1&0XUu6nVDIkl5CgR6kU6$mZ3zwK}OHCH*}*{ zui7?R#Rj_)N3)Fed8yX`^v~I{8H`IWB zKEu(BY&p4THc*HNipqVLT0ZKUyyHl}{zA&QP*sqj5-?Qy`RvYomJ)XEgQgwzifh&@ zZ{MHLzWMMs+#XslnUpY>@)@^BHtfk~{RrV?hPGuq_52#f)*MH$#v1j<`6(15@$`T( z4Di(JW;?}t_!~!3CJ85Q6}uqK?hsos8(@*nOqcr$$y$Gz2~l2*jHZ#C9z1Dex>0;H zAKo(L6%t&XXWkTt)UBUB!^o6~g*fM1R#lKrt3UZv@q>HjLYkmS++9c&jO_J|fZmHV z<*G6~Bh%W|e%^-@TE-Khc*&i`OWsu^*OAl~itLUe-8(Dbrs%#E9TLouMzOOwpBgvauuGxAr-p00ZhDLkFN1OFf0*a1Q zKoXJ|;+E{bm1)x;iiwZ6jHb4PyMR!*m@Gw^ly~xj%6xm|nONW{fADg*VpV44$cght{{utnzb3(5NmjeR1p!2C@ zkNh85;;3LuQe9v+8+=z6=sKGF^*k=m$r`WKQX%{A4{0iaSvf^SZwMrVMQyvR^bhO^ zTLU9q9RG+CO5ue9MR^ksX0&KaKzK;&RYT?Lt_>fwHg3!IVLZPD+lK;{Sw6s7mB=~C z*zhD!^IE7k^k;K6@5ago?;dk&Q*!P^c=B%{5q>>X`J(~vm>h(rCuNSyz-Pe4#dHB^ zI7&?-z*Q#5W&s_ycSJF@P*3ja*o_x z^Cwwys~8bL$pj{8vHuOTL1#24mC}aakyBgriAu!->0tkexeP#JkkOQ91p+1<-C9)x zy>P2d*pP@dTS8@KtG9qD6k9-B>KAEWtpuws%M*sL#7%*T05koIUYOaRm5xRur75A1 zKmsD5h04DpZswA`$dZ_F%~l{x5-?^O&xdW&g0%2M1-k`hLK@=d)i4Z;KQzyDvg3V= zi;E}m93%o}lg=6fj!;&4g#g*OdnX;>@oiB@=y0%n zD3~VaFYYru`P3?>D4qD`H~+yMd3tS;-HEo6N{38Uh+=s`2)509mj$rQ1&!}EeiSzV z#H3Np%dF4=O6;s!aU~vley$Rmn_pC1O~LOT!eLl(YSo-PCuzP$xSeWn27Xj(b8;5P zoKmQPKGtRA5v9zLJyM*Qbt-_C(K&&0LL)G-GSv5*1hzm`P1U0AB8?bv=zU zl`ppyENxdE)no0ZWM8Qh;uQ6w0UEKrkZkVn8}WdeHFQdBa?%9NQ@ylRnx{1~Fw$Xr z`A5SG(_0Kmytk0NdXyDEw|~#v740-j&-7m_m4MHR|9#I~znzr-dHn{s=;q>8;r zuuWVpxfowkH%u%TUDc%tGC{K01|!lJ#3|{!v83;1XQuBvUl95VrkuVf&xyVg-e;w+ zChM7~iUkl1@+zvz9CluH6PTjP0g6QRcALiITwzQF*D+EzYY0$Xi-`#%>uZTCP0mx{R|H@F|5~N7C&# z@q0})6ZA^Bk_*1>Y~CK)$V1z>wkfVUYau)bU z)05p3c!@rtGbP0ag^W0AjSRkJad25ko)|#4*tkP3Lk}*8sJ4}+gIcpBO!0;5!f=0E zD%|mQ87qDyFnLNx;xSILf=loTo{}_A!rew=EXre4AWt9OL*(*8@`)gCqFQJ#m>=QlC;b4xhZHgkMF9BKiUK{{Jj=;>e8)9yt)))sloHw?k7 zclqTEt>q_(n#Tz?Uk*={7sNNm@CxVOwKY4c-^=aJF}Rt|#O}J;LeEn3fz4e~te=^a z&^*-W*`WYQ%?XB+vtYIOLh|8&y))ad2tkXX3A3J2JKka{@%yQkkK!XObV|-2ric2a z1=u+KOME2qlt~D=;#sG-d(T|kHi(krq_{ip6F@D#d?LN}QlqK)yZR-0a&0 zYnj$hw6;P62+xduM86Ek!{TENjG1UQ($MXtC0Q)WC`zeQUVHA-SD=vPxeejb_6+Nn zr~%4;*N$|!NnXtcNoM7P6Gs(6UgI%-n$#(;D|X78VjZ%m;laoVMWWGMNDc`M!5qLr7!fea|`ldSF4M!Wy zo9S~v{Q}neE?#L-6t5huwKzvw^yz$eC;Ixn*=dh6Ov@QvT_g=t!V)6)1xdY!^43E; z@_%|@`0^rUz8JqQGK8u_eO_z~Uvy@_&k&gr1)+7x3c?MS>MaN4XH%cbr_mBFWUl6@ypnpYH6Xp%}~ysZjG>VHBS|0IHuoA zF#|3Ev)Es0i_PfbD2Uv*XbnQD-I)Ck1GI2aTTa#a@L*e`E(RM6^UHR!8gicu2{Wj0 zUS9+kiqDR>Mlai%om5p+@Ok~xpeOW8Q$DL-n({cm#Yr2KFQt<83&}}!Q%t^)d_e$i zd@FdOy7tceWe+s!6DQ4Vq{fx*!&GX~GB!#ao7JB~t+^~oH$cqGseubeS|bvg*6Z;8 z)(C&_dQ<|~aXt0ShkNbrIvpOiyX*Y!I<*247C-i(QpPbm+h}w=DcXr`T^vXGv_48G zlL025o@k8r6C#5LX;KTrEhL|dFN&qX`p6<0w%I799*Ol)FKlAEOm7Pr|?1t1RSJ3XknFjrY=?}L}!G?sASpv@}VZ6_dZY7P!ShmTmM!n)hgSIDZ zCOO*Ko++2-6L?bG1j(-sIktC`2y!S;yxcUtq$sd+MT$k@cM*;ntxsef8?(KM=g z;L?QgQ@RxEJEa<^>1q8^$5Sm2xE^iv;An$9Kc7~ic<(gq5IcRuUUBl@pBnBQ<`PXg zl8)Aj+`-9x*vex>li>wX0(?xqV!Ud147<9@-*!oRSIfr!HIJ;WV1h_x?)bQLA^>%3 zu-5YLiv>D%%@Mo0w$=yh5RFvxG(d;Es|MR2rcHwF3j~I6&r7r>k-Tlfn>%eqZyf2 z!SkqaL+FJfzy}q;L=4R*fx)K-YcpkG`3)r*$UKj z5E*3l0xi6C3yiG$he1wNU^76;uk+!)2$V;nusaN3S{tS3YNEp)8*ke}%T)!tz<_ZC zr7c8|s{6OfA4_HE=?cQh70gsnEwcKV^!S0-`H_5xt^w0kOn66>;$UN%d@yzPJ}4fV zU2otbSYX`OFk&6#EnA|v-1%2xqE?fMz=sMq)j6iGNdxGEEOI_?nNBOMgA2+SxIp+Z zbAd|5%TRIgqO}0@mzu^5xL{@jk1Qnbt7TGkIZgt>%Gz2m(Hawopu(77GES%kQ&qZ{ z%_I~1k=VqXmh|Y#iV7i(c9hAXXTJ97|4VX6zH+mqIz^mOl36H!!YG$c-C8=$GJ#7= zsx8KBdHJ*YuccHG$v7+fb+h2G=Ij`y8xm?|N;j!x47WBa<%gLAm3>vR8|=pj6^}qU zh;)B@H0=xmZ%7GKHass630&(yr(eiN8wvNckE`XDjV`|psdvZ1h*ZJy zoZ=rV$6L9QA#i*Br% zZclLKCh@J6SV?sSQz}ZGETy&OMwEkTzhjhYLi`#aK2>uq+~W|AYpZmml@OnLB42rb z3B)U=1;nixhj{pJUu_21_?SYBzrE_@n;V@}M$$s^zf^+X7Q02lJZ|r}(6^*CdGE!5 z*N-;1$hQ%?t{S0fD14z=g$v2+Nf5yXccFhFH>S(+@lm4lQzqco`#7yH1-$%Wv3x zHTUzED9kurN@_?om#>raZcg$k9ENdsJIahPg zmzRp=QY1@9Xo_SNZltV4GEj%c7i}7eWZ8rW+uMc^Dk?Cv53ro!UBHq!sz>=lexVRl z=?VE2euUV4iJ_|E(KZ3sDfEg(M;Ok%Guv#CQ-K_o;51cu>N@f_C^2&lD4hdH|cyXD+_gmdV$el7b3e!aBiptr&*$mocmbXo&g02 zgRiwk*G1V?>Sq^8W@vP=$~{Kig1?%kCs`sVvr7T&^D% zm*ifVxWot<6PFj}-EwrC*5=+Sbr361BC;fWsj=8RgYXu{f%c3^d8@RtFO=iEK}H2# zrYj;u>aLOq`Af>o!{>((-zpI_Mn;4y^b4fCM8D8y+S3CsRMgWYdpU|o^m-He z-<6(++an*v;s_U*%L#f919_kH9|rO;YatkcN`c=nup~j$DN431L6sDTPi5%Ph6&{g z$0F}4SwqPkCQYJ4cC)6{LNc!zitWOT@JP~2cIMMEV3ckni0tglFLVc#L*^7vuzmWE<>bUssV|Ix~FV0j6Jx2 zsUG?5aut+%Bsu`zf}N&EY9iTW>+Q@h@X2Nl54kM!X_WD3hGGee8xOYSjuMxc>N9Z= zn}f%5HP)bn05DCy$6PnQ$F@2g)3}AdvlYK9{evb}{4U;F!tXt$pk&Ja5`Qp8$cKgG zVhxoq)=+8+{O^40Nz}OfEK^(2oriHN%3T4h%7cwkn&mIsiaVNLT6{#mFW;IS)-RZN zuYPIop_WZ3SW6L^7~8R!&v=LlvcU%M0Nv2&Q@lKRLNLrBcjd*mdlaNF4~8jZFUyQq z)hwzv#|lB3js3lx<-ocZ|}d!`Gb;Af43&J`q1D8kM#nBhQjqK2X8P+#Ck<9w-Uos-#g z)Z7A)<`6!A!q|`}I++d;%WmycxS%-V8yTY~Qc7`uw59+{=vt)42W8Me)ID68Teiz? zVLdpNNxd!+$~p4c44X&c{t-JrDs7Il15hASOuV{sk6k%2)^|8(YxWdWP#ESI@!Dr> zC1h5dq#8J-IOqjrD)I@dX0dVQal3LlE0fPz8qO6mn=BRG3VkZunjPn;c*+||j>H!T zXmQ~gs))IJJ`PXwsNzlVS5}R9am3#nZ#GTM4pZuUI1wBCSf-$lH4-VVsEjK8eC8G_ zF=%LPLp&cI%XC{rr2RasW4mn=@if6g>&Hm_7;REYCQq^sub0P@Cpghe=Jm3x#YwK= z`Vf(-Yfn*>HuAJ0EYOvyyi-)IqE4s@HCb3&ge5|IT#tb{E0;rdY0ie4Ep8nh}@SFb?^hT3*oP`plLff@2O zx(~wW9CqPf`mJl^U2skPJ`qOq*2YA-lwDU&sBkICZ5@-9XX&Lz<0R+#-VRHAW8N(7 zv6$+xq4*(g!TJrNAG9mS8duZ_D}+WV5!0G<*oY=fxZiH`P(^ydIS;Aj)D-UHs5s7- zTmJKh(G_0C$zho7avDw-nj>yKX|jcN$e4+$t*_1n>RZ}(k{xd=OZ)&I;MyOQV#Lm? zo(c-3mZsdxLQ?{sR8Q$h3(4kDR{YO<=JX{oz7$21(1PQ#nD5&o=S4B4#m{6P={h7! z3Koj-JuvWD4hyA8^zx?K2`H(8Fk7a+aaBji$ zFC;>Sw@8Hs%hlSE?3mt>48F-zxk6%-Ly^Ps_JKJD4RnpW^I>L)+n`$e&~C*V^Oh2J zT6_mCLD%BbWpdlM2j7qYk^E1U8T1$b5oc|i`jgkBiLNHaV$h)^lKwD;R!Y0Ag>Fkq z0R-w&vWcZ|vF@RaEKlc+*Km=T;bp0No=a(?<)aH6NNW<~`5@AmgX%>Xys<9V5@1Q( za@i$Hie;4PCq9iYw$ABACbm=*-`*fFQ5oG2Xhln|)O4uM58DR7lj3m&wJhS7rz0>i ziF+i}{?52ff<{W9Z3|dNsiq(V)!XhXwQ!i}MvZWotwUrOLiCl!`<1V>T&HN^Fve0j z+g6dlX`|MsDoIAI%66hu?6dZ|s%v@yJ!soo-ZL?P2}`mc$tc~&sp4vye%6cr$#exK zpUmEkg(QsPx6IkhI7Pweg(P&9=&E5D?9*^Jv;T!?VxX3I#X0H>{3cehf&QI5%+yCjRuay6ypS>(*^GLH(9)m6uvW1x_7+|jFumzUx0=L4yY zl%fm_-(otl)rG7!3fuKZ6D>$1!(_8!-6cU2w+!g#S-yzOqoSrx1t z#-#(>m8r7F$fv6@nq=|6OX0-0PMRZi5QMq_K zWhdm!l?hc?;tn5a+403c{^Z9W_=P7v@l5hYZuKoAz~iH>+Rv*`D37^BzG6PsBdOLc#oT}gQ*ocs#+b%9SCMZU09c@; zzr5?^OxL~fJs!9c2LJ}K1#>)br6IpGK31cQdO{Aa<~F@h5Veg%3IH*s!;WOQmcLcF zubkG*c;$<9eM)!Zl&(^&X(v$vJ7u_7n6J~GqYdtXvdWECC1S|D1hTZ(mRZ)C&;B_o z*pb0n*SvAy1Mn$9e{(z6^Z%eOGyg4*Rfs^3%LI|L6Bl8YIvmiB4VIgl=IaUP<_wU$)c&IX{?HT($Z0_y>OL&%W~e4?n5-Bb|+!U2J!lGMKs9wd4TPq`h+? zYg^WfHmsOyhhEZa$@N*+sM*6faP;uOd;BLv|&1rEWQsPmgL~)GgpvPmW zvbvB)ntX<8m^`56QK%*t$Nl_D>K+l6v=z&;Sqq)b6=`I|mc&Sc!W(v^!?p4#)uccx zH4dzs8#(Y|_o_d?&9xctY_Unb_2$9|*4*_pcbx(QOUCH?+10B7P;qXo5}@+d?6f1z zlCHHXfI7=aXcQh4`O9HIwXTQ3AWx8PSrFbgi$;|kjaR6W;6zvAs5kiEC!k)p+qP2! zw@rS4l~d**X%tez^3r+an?00w&!jInXL?(mGmkVmlgh1Z1L~}J%sKPHiZf4)apt2U z4V-!0Ig;6gUCt9d_w+f>yT6r^T;IU@Zm2Rg1H{c16T&_d&Olc~({X2?(_$5J$v}-@ zN@rYLe!qg6+J|IJ%~~xhp$$!YghsS0w-RAUqpTmXTrmp0F&g$!(QxQGj-HHqplhEu zN^V%xq10|~s&XpqN|brZ!zhK`TU4KK&%+KbCiQ?u5+H@d*T({rp<-aV@YHab)`w@iQ)hfagW8SN%^C?AJI^VUII&*E`TeW_BDa7C@ zUp`cz?ak_&N8VMRA5Yp;Xy|z+t{U@`wO|p*=!f*Y4zox8@BsxgF7Z!3(Cwo8y4L<8 zl_DB@_Km>yt9`Uc0+TJvw3O+oq3iH4a(w*BA=(G2of_F<$pkh!m!NR26BtZm0-KYn z8pN`R=P*6iPK1^kYA14l2H%pwyhDbbJZL#<5ZYMh{&Z*nDOB||xC&J@yJn&H8Uhst z!pFzZ$H*dqdM5NSFP!Z|7O{sJrfd=h+gExkkf}%mRqe!3V<#%-R?X>HxlM5(hh_9r z9&t7s%8&@u@$o7_<4CG`F$pYCTO|ji20SKcMf#l3FVe@LHjWfDvqII`=?ZGg&PtJR zh3iD>U~V8QN+V0z0L>BBx@Yj^J~a4>e#IWbW4?NgsGd4R(g~cYjz}UzEoFi%z%>9X zS$B)y`BA2?_AH~BwR4tS`_lEQ5SvNJ>H>PEnX2UlDF;Wi#it-?D@gV ztK_A&ik3%Jev^MR?l+0ov%xcErl2~tqH#+*PEd{5lG$7@=AXOF7FObtqh#~5swk%%e5Z@CTw7h+|G-?izw)W1 z^l0;`-9M+6<$o;6P%3acWUY2$ZQq6y&^(EFvj#7>BmiY$)z`ku)y*(qQ$*T5BM#@c zhXHHssyykOjUy$&$U_4N$+=j*2eQSFK*lZMdM6t4&z(&u1^UD${%1<%wkS#q5O5rj zd8my(=&bY%Yr!=LOCBX7%$lON>l`x(i-TPaQvilGHTLJI`!sJlsR>+NEbjSXn7TLk z8Z}lsfCcT~LCwA$nKXD>xH-IOE88jAXl}DY^v0XEgn8Z7UIt9NtCK4^R?cM5BIkQm zxZF?>cao=IFS6zrur7VP+ z2#RCkV6PPS+kTCc(ikqKW2 z&^}hwHxZDa(Q-h7Ilbo%K(ZEGv~VR>D!1cD z;_gAwHHK0%HEJr34oZ~JmVBk1hBoF2%afg2&JQ@{#wy%s`(Ejho=0IgvIRzEC};a# zDllPL4gvh0(FUPFao`Z6{`WXxAEy5yH@~iJB~prbi9g#Zrn-P&HSVe|Al#Wl+8vLa zj5zc>;vpDFXy`+DYShulTina8;zmVW7KwS3gZ7z0b$DXBQXR5QNr=?AC5;?L(Z*%`C4-vn#dH3$<2z9W-<>Mc2-ufqq*J=!vZZ`%u@@wK3Z+ej~{`Knm+N<;w)YN7yr=MPcTGNExr6tsVW z-L5t{S2TC&VYV6742;K!CjKfz> zjYaSoUw=xkx9it6?^gA?s(Yn02nvU{7F>a_Qk4^1JfVW61DXEdZCiEWViGImE7m)h z%B)*hVf978)6`1)qTaydF_Y$bX|xKj8vUi`)MzVWNuyQjz*D+5X-W!TY%nj=UORNJ zoR%w14)K%_gLzRQ2Id1S>1!^4`U&5NSRG=7<%og!I1^%EI${SnV$d>6b)zLNTWoR= z)^CBD_2dBH)oVD`)2MBRxOhnfZj{%67tu@G_w+yfcNSTH?nPu3SB&j{wj#1hw2^-&JMvupqJfqO!RvWwW$G8qm0xEJIvxwq2-c@1IdtPy-+v2xs5M8_7LYsw<{( zqP5_K!gRmP;~%c)Xrpga9iv|->ZHG-;@6xbfXaDxRsdDOd?DhTby9N~F44`*>EzbT z$5rn1IW`!f^!zngg;)CMJ!QAg74fZhyEP%+gg;bqOi+ZR*mQO|BP__c=O8J`ukC+dY$bb>3|EOgI*2x~5=KZt`qv9<=7; zId1a&6Pv=ce-QXc7z!m-5T+z zOC1-1Vj?u8dEmwLo?95}lxOW(VEt+3jnMt4l#!zrd0;|q^sELon&`R|OT6*6B~DJv z^Gb!NnqQt&Rm82XIk(Qr+rFv>zrk0nh&QAKwCN$G$J$yM3+jzRoHp-fx*=!lv z_%J0gC;QB%g;z5C$NVMc#P;d*zx;f8{Y8`soh8>~;>db{5}tkzBkN7B2Dj=j?a~h6 z^GULWLC)x7@ozbg9~&P3>#n3hNqok5Lur!7q!^JCo_<1RwSrJ{Yu@qP(tdWOUODhG_O-?s4&7>64 ziilS&tpE~HRPA)RrG{4l^`NCO7Vt6GF>&C$?Q|*; zZJjo$)$Fv-twXHCjbaNq6vb96imm1_BeqymD9~m=lvBf*eI1%_k)TmXY_%xTw-iz| zae~-lcuZ`m+~yEZR7h4i#8GUSXi?fk*<_c|e!MAqyMNNYN`y`xWm4@xIi$Jvha5YbwBxu7oL{ ziur>M8Du60+i;tgg(zgx?ic6TqHR7Xuv2qY>L<{nz4^sPY^_kvG%+9Bs`Q%x)04u) zW7-g;t@Kjkys5mG^B0Aw2j}q@&g)I!JR3SWsDZtMQiDtGW2tG4E+7DpM2%@a04bKS zb!r*3$PmhDjvORFf!yKp>( zH7q6(<|$QkQmNlQkJLMMk+hG0JQ0(!WHQhywP=Ah4$l0J9yRkp^^=8Y+(QjE<*l=P zuLN-i_jHsDO+t^gJfGIm`XXT`IsSd!;6JHltOxKi8gKI^`!I2rZ(U%fT+0ANM)sxW zBw!8x$C3)qQ7jgV-e(EL1>}ME8H0|hkg?6y9H2F~TXohL7tkZP!Urw>Ek%x!HBLF_L{%kR}>Od!7hpS)GQsR0SN@ zOT=%bK8R*44j>udzISN6#yGoHJx8%Ebo3q;| zD035wutaxrWI)wsJNRDRQa{GT0@(20s0F_TPc$rvN@^Uma-hK;k-G*8TYjg1Jkd07 z*)5j%1McvVA6VHYH)vIE!DEnJCwTH1sw#bxfK$-do2m-~T|gRC7d*jpF<6FY%+@>- z$ksGXEGFic8GV1!sdmeVA5IGbN~JhqFfUEuw2jY9HjuDcX(cSw0`oe^2JBMUTe3ms znQ0|0%W;xS(dW}#=R~Gx(+d(roe;W5H#$g#7WyXp%4=K%QuASh*4$b4ttK@yT(nlZ zTqsyBRw)#?TMLCwX$+;-o2YYAC**3&3Q{#nD+37Qc+jNHf&Fy`G~SdH&lp{a78q_u z3xu3DAu>71q@xkbQ`63s7RZ`0TF}lj(W1^vYg=Zyk~V2ZnU}^cU4xbK(ug6De;e(c zWweq!H?90E6pQo{@+aC9>`c|I$XsItO`M=0D4v@0fS_`9|^D*B*BsPHXESiej?TMWx>^i)Rv4NO6Pt}ES=riQ6`(Lp(G=plE^ z=9%D@WDWAwi42u<=;vyTyuX2drb_>?eopd8djEU?!OzkoiD5JSeN2t!cut>#VY5O% z8IK9$DZB2uji+m)mF-@26{}7kGGGDt)`ZzD9RGzS&d6xhP0P}$#(5GQYQJRU>vJ*i z{)XvL+IHrCjXieT4k>Rtn`#;vlS}U7zL8zW47zbF?Ys8mVIN9!Bd5sxluXry#8&HT zJp=FEjEd31qSLZ-ZNnusjg{s*H9a+VWz~fYVO3gn2CcsEVl+jYOlGQWOF)FiOA*F~ zk{xx1r56Sw;%Y23OTFI>fMB?b?=a3LgGhxO*E^0x0KthN;mubGOolhnqa|gsMvtZ# z5=GJ zmA*-p*#b;2lvK)X;+2*xIEbaTqIs1TToe*rzz*YFmbM|``PT0 zDknNP1>$N9F;UE-hWk?@$`npGQA-##&>-ic-~m12yC+hY2fuA6WTuUU2;o+wi-UJdgbTv^gzo`MhP6~X)=!>K5>f}wigdkLBA}J8A$P3LCw{Rt@e{k5iKwW9&ZM|oN^RE?w z^{Wa?Hbx{G8{?0ud03|8G9E@7G9I?5Vada&FVY&+PG@5^ydhonAqwG>8Iz`JSG>sn z3)-nM$fkVLs=FNJ>v`MdnE64MP1rWO?33wwtS}o?>`DPD!>UY|zJzUajQdgwo5Gee zbIuWw0%YWz%P6r98BV|`#>NI$%J`&tR%)^OUVlxETOcs~83qgjj?)=+Z5 z5PAZX++{fj5iGD9%yS;01Ug|}PQw?6QtV57ud*%KYrrFh3Lb*|GBanIW~Krc1ahSh zjkNKtaK?Narc>2&vNAI<7FQuBtq4gQP*pDRN>*ZN)*v&+gtc^hB4*K*2t(I|Fa(eF zqZU_=jh1baC8VCTwdhp3OI**PSDbZW-RF zDsY+bBW4aPh5DNICBUoDlKcu0F}ltb(o^QyNlOgFhbp3yay-iXNO!8YQD~w&^_Tkt znZjX%(9P8&*Eb@#KN!`BbLcIq_W9OZWo*Qti}lvvz1drbcXd)@DX$FzT#;cL*Ac$M zOc-y28|N3F7D3&6y}qff?zRY#^Y?ifTtjyT*9N&BTpQKs$r1ZibE|9LTV-y6>)QLE zO8p?Z^%tC@uqbVn90J}d^cfb1^w{q*1*F+q@cg{*ZHeKrU(qXQYV)*)(#Uu;9bCoS zIl(NNadD`*!8XF?EjrG;s(~h^b?9Mn1Tdl}i5DJEM{|5gMj1iik6mZma(zs|ObJ)i z!5LVCJz7TD;Jcf}o(;dEqVMmsDl8j(Px-nQk)PppOxX|GU)vI~5+}qu@9v+U? zkjx#rDqIw-d5C(&cl4-%y5}~yoa5=LaENjkM7|3h*&Jh*dNZBRmX0y}W%^P`nce_Z zXd=Zl3J7;?&33Dz_b9gkRd*qIQ-!u@UJkb3UafkfI=ximdI2=*hAIsKR@>Qg)Tdw2 z&OTRNy0=u9X5xNFX_7m>@|(Z?Q$P9i=YHw0sz?pUBg2)+=s4>`TgM*pz$PoK3klo1?1j} z!ru10J8F~aJeGH7s*kyNQ`m9|ovypwXy4x3`-OaX^A#=-QC z*ZQohU3K)!=HYwzab<(K2M|mud$*qTqItAg^zN-;X~`3_(b)bj=$kLv6R`RIRm&Ze z6W=E)77FNR*=z=i75xTK&#e;#L`-JG$xJBFwl8L73S?JsxO(F~a{f{t^Q-u@_A31E z428T2bu!!O@hyujBd*F_vt%{^wz}ZSY$ut*Nend7*qF>#`u^p%HcJCA}qH*8fULxlMKb&4RsXM5+JLlG9^=B0&XL)@69 z8sqQPt|unE8e8p_zGbNh^&Y$0Rg$r<`>o!IFqR^$)HT ze?wE*4pq`+MN`*PJ;J3~CmgAw7_hf|42&HzT%%HNG)p(sm1W)!+h}(3tTSP>bk@-W zfK54YKI=Hsth34I!AWMF%P-A37c(x&)GTctT1v7NC>o)%%DUi%Qq(2B6`+N9D!G;s zS0aV*voVn(f8i1-45wrp`22?kp0F!5({Re7!NRF#!Y**;IK@w-80;?LAa&P0fu>KE zp?CiP{R*1o^O{BR0(G#?EjYInim9b36jL#&AT9(udkV#}4l)k7CTLRbw>Xa;zh+Lw)bpNG@j`ST9Fx%~EOidiAl(8|EG4W?FqDoA;{`Tc& zE#tc92R5r2caDi!=HD_;ff@AXC$&_i^BGlkeC;SIwu@gc0*;nL_`3 zrDiP~(B}a~pBs$0T_ZOEdNF%S1z9oxO7Vw4E_+4(h1u7-@Ta=a(S`U#{Lb=Uyf8R3 zljQnxFHrZN(|&#OhiU&O|JU%+{T+SB_T;pwHo)EqmTabj-$g1Fe6XDb7k2m*hnXKP zb})DdH=>H^gYbhZmKu0$SpyI*cKkzvt>Vy>{9Z>orA^6)mhH;n#+608a;UzdA`Y?v z{%OTZ(RdE=y8|QipkkM;;QSQLAwNE-`-h4A6$hqE6^hrxGepda zhd*?j5>F{2%Uf-pT%6|UFo_S3{kZhx;?&fh!DqtkRBm<`4^@#A?$WU4hN{+>!B%}N zrd2HRt#=-0ZFL$gXzGYPk^MoRN2W=yB}0B?Ex!A*Kq$Wamu8CO{L?ywi>{ZK7oLd#RHwTE!G z4yVzpvaE6+L27;CujAjg?Zj`}wsldT_@j7u!%i8yfuGvP#2FMCr)H^9N32m=!?lq7 zY;2Ui(%vebWoFoFcN)W?eVN(JF2fAg_X#j;>do-|TJ^R;@RId}IB`I2)g;^}@(52} zt(+IQ7Kd7_22^QObB`t=)d=AV7M$9^NY7kI4y(~>RhlHjE=CgMsQ6k(WstqejQ>aehe-+MZ~)|9y$r-OPB zp=}nWyZ)00=+Q0O@f(EgBK9hNgOJ6SI|%~q!zIwJzCp-W?4@TlpB&Plfa4(2h89(` zOj!f2!Xqc9Jwc!`&-CRqxRrE(Ou0z2JPj$Bp4B_r&Y&kByYrXWI#w+>Uj^y;RNd^r z2bk&6Y@2GU>Y0sg6LCbX)4dW0=vCRi{>1hj(7Go4D2ukP*tt6$7;XxuL@x@2i8YcE zYr@`TL#0m@`sl&BhP=!ado5;dd+QCBy>Spv1s<3x3oMXJD%&Q_v)X0CYGhS4-L@~N z!Vn9|2aTn*ZG^Zi;WLJ68DyHyv)L)7|9T%Bh{4@gBp;y2h2)=giou=xibThTz#~4d zY=Cf}!xu9-fzdQ3OHnzNIW`>^ReLES)DeKXiIiN5NQtYRLr2PI^>JjNfJ+ePbUM<9 z3w_KMl2bUiKqF?`#d;9d!W;_o*r(+o>Jw^hiLjF53(4ow8ezE- zM@5vJ);G&xx78tR5IZ*iM3g0_Xr3gwK+ zP(jNg$;XGk*cWElv!Ds8rvSl}Cq#hVy;OJglxA{dCBl&w7AgKHi57u^R5Eo~Iyrcj z?*gMe*rkK*$|@7B7u#F2#g=$-mLg}-Y`e~aYhCkug!ZbX>ZNv}sX8t$MPHbl#lVC$PCF;+o>sigxBihV|KC^)TDe(63;&{s!5Kcx_1`3kscWC%sn?N-^b&NDNJQUQkn;?SAjyqO^!grD}3-482aQj{@1I4yl+b9n9C7W;glsT&rNNw~;SS;l zBR!F)W{DhZ(p3H>QS^f;WAb&QX>gR3M~M-4m`(@R=qUp;jsGi>zh=rUB;V}Gs!_T4 zfg-J;xrt|^c_;d>^zeTJ3d>I)Sh0i8@t~%t@xyF~77kn`Vt|(1M22!xG#AOZDQ1a6 z(1vpqmb7tci^K&~gd?hBI;|Qc>^3q~@kC}?I%BctN*ES!kHhe(DWAa(bY^WM_5tu{Z3}oOz`dc5 z>1aw&ZCcy!l^kD4$V!#1-7i947xGe(AQEG}WC5zm=En1Md4p$gy8AFxnrS}5eAtqF1m2*)

_+q3*26NyP_wT|1D;aiPS9#ZEr- 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%0A%6 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 literal 260303 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

&JQmCSH@qu+2yBLz1=PislL(6Q!_ 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

)1}bEL=@=QCmwGe{c1U!z40L3$ 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 y9^*7zUa#g^Y Date: Wed, 7 Jul 2021 10:14:49 +0200 Subject: [PATCH 15/90] Upgrade Dockerfile --- x/wasm/alias.go | 2 +- x/wasm/types/events.go | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/x/wasm/alias.go b/x/wasm/alias.go index 376536e00e..5bda2bf281 100644 --- a/x/wasm/alias.go +++ b/x/wasm/alias.go @@ -18,7 +18,7 @@ const ( MaxLabelSize = types.MaxLabelSize BuildTagRegexp = types.BuildTagRegexp MaxBuildTagSize = types.MaxBuildTagSize - CustomEventType = types.WasmModuleEventType + WasmModuleEventType = types.WasmModuleEventType AttributeKeyContractAddr = types.AttributeKeyContractAddr ProposalTypeStoreCode = types.ProposalTypeStoreCode ProposalTypeInstantiateContract = types.ProposalTypeInstantiateContract diff --git a/x/wasm/types/events.go b/x/wasm/types/events.go index 1856147d36..57ff6cdc77 100644 --- a/x/wasm/types/events.go +++ b/x/wasm/types/events.go @@ -10,7 +10,6 @@ const ( EventTypePinCode = "pin_code" EventTypeUnpinCode = "unpin_code" EventTypeUpdateContractStatus = "update_contract_status" - CustomEventType = "wasm" // WasmModuleEventType is stored with any contract TX WasmModuleEventType = "wasm" // CustomContractEventPrefix contracts can create custom events. To not mix them with other system events they got the `wasm-` prefix. From 660169e4a58fea7486204eb8f0941b333c460cd8 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 21 Jul 2021 21:12:07 +0200 Subject: [PATCH 16/90] Bump wasmvm and testdata to v0.16.0-rc1 --- go.mod | 2 +- go.sum | 4 ++-- x/wasm/keeper/testdata/burner.wasm | Bin 125699 -> 125206 bytes x/wasm/keeper/testdata/hackatom.wasm | Bin 177717 -> 177773 bytes x/wasm/keeper/testdata/hackatom.wasm.gzip | Bin 62090 -> 62351 bytes x/wasm/keeper/testdata/ibc_reflect.wasm | Bin 261488 -> 282290 bytes x/wasm/keeper/testdata/ibc_reflect_send.wasm | Bin 268093 -> 286892 bytes x/wasm/keeper/testdata/reflect.wasm | Bin 272896 -> 272031 bytes x/wasm/keeper/testdata/staking.wasm | Bin 233880 -> 233817 bytes 9 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d640ad5a45..64824ff71d 100644 --- a/go.mod +++ b/go.mod @@ -59,6 +59,6 @@ require ( replace ( github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - github.com/line/wasmvm => github.com/CosmWasm/wasmvm v0.15.1 + github.com/line/wasmvm => github.com/CosmWasm/wasmvm v0.16.0-rc1 google.golang.org/grpc => google.golang.org/grpc v1.33.2 ) diff --git a/go.sum b/go.sum index 21c51b7b3a..65931384d3 100644 --- a/go.sum +++ b/go.sum @@ -53,8 +53,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/CosmWasm/wasmvm v0.15.1 h1:5hPBqPzHzVGtISJy/Mr89PbNIe+a3Q6qaFbnOFu/m64= -github.com/CosmWasm/wasmvm v0.15.1/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= +github.com/CosmWasm/wasmvm v0.16.0-rc1 h1:U91ND1hqB25ix2ivHOlL3VM8htg6XhF96lrRdh+byTc= +github.com/CosmWasm/wasmvm v0.16.0-rc1/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= github.com/CosmWasm/wasmvm v0.16.3 h1:hUf33EHRmyyvKMhwVl7nMaAOY0vYJVB4bhU+HPfHfBM= github.com/CosmWasm/wasmvm v0.16.3/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= diff --git a/x/wasm/keeper/testdata/burner.wasm b/x/wasm/keeper/testdata/burner.wasm index 376de569a4709afa9a15cbd4becb921fe4adfdc8..fbb35c50e05d598c776731b09e02b407c1472caf 100644 GIT binary patch delta 8045 zcmb7J30zc1(w}-W0|PSygMuKS%#56ZfKd)Xl!qe5`-l;vh^UC59CCPaeV%wkNm_Yo zJcw5?YJ!et%(rGiqnks`wb@PL6^!vnG#=3;M&r8weh-i&{=RQ_`1O1Js;jE2s;jH2 zn??V0toh8b{xJEts`-z|fz%Ev{?p>8QV9-fVxLn5sn}>?nJ{-QJ16w&)x$A2JF76G zI8zm+%a}Pce+uswJ5SAQ{U~XlomZS$I4xsJX8P>R!lLZ_y!05=Y&J~oTd{{oC6a!Q zo7Hlg{5qRQMdsfj|2gyL&RbAgR$fs_|3eFD5rqT=?-Bx*QlDp2MvNRbc<4Z@_9-sQc=&RH}cFfr4o=@o4J1IHQx`O;y(MpQ7ZWOG0$^Q-7N3lo9KP2b? z?Wd!3jNYZ=G`f2|#rlU_pe8y;XX!lsO802JaE%_2|IhS@s)XgjZefM6QdlLtCe#Ve zJ3h1dXvPw~%8In}X)(L0&7f_z5e}gOZDFOlMYQ2%r)k1^VsAKkvxQFAs4KfYK8BSX zaI@K*hY?%pI)SAboGH)N-z9};Gh5|4-j;1hqYk-djcCd-lUWlin62_F*tCV6GiHZv zunMLMO?elUSS!r1s{K`Fwb)1;S1_$1d>qDy3^LWQ_NJa8)f`yg3S5oPZmNT15df~^ z;9#MitWLl#FfBL8*tGz2fYxm`F;?o9D!fGOMYnk7)@~owu!eRa3f?C&-a2-qQ#WR5 zf4S3I5>*x*=lBU(N%TlDYA{KYO5xVUJ-Ca^{!1C42r@yI;}bwYm1@;s);#xoh5h@0 za=>@)wGd;4$1cp>y+hEGxizMBwy7N)iPo~2o}n0B@0sFOO-W>NPf}Uh8}xe6SF_um zo+L4yS0Gih2(Jae-s2Sn?7w?8^STc`z>7I_JcGfD9dG0LnfFYf^!2Gm{}Z2R^c{V} zl&Py^wO6ygzFq*Q`j#l*`w-Uvali8I0&yStuEgN-PHn_BV2UH1)`8)u&NK0B=zIhy zrGA^(at{OZH;=pE+ug`R#A!cD?9ASOCX2SS$R1mnB{qyb>@lIkMlv|-A;@j4iCR3i z2z>P>juK|u(6b-WR(3whlbuZTXI|0qECW;((e5&JL-ck|?ev7Yo>Mz2)NDsg8PL1C zaK?hTo-etWn#0Vo&jdDcP%t*OS?H$PL?&?2J>jyIb1^h?`8M`1w2{^Ja);Q5dX;N| z>Y!&8eXT4k!AEze5~v!OXLy1aTNgJKNDt!r$Qp*R%=kkf_31rJy^-`RvX6z;_uhiQ zGCW~AZ3CVU`+LH8+F*<5GeUrxm5GC4tW$}jDdlG_f!0(@2K5uMmT{9iaG>x6*t|Xf z(i7lA#SFFVRH7eSk~D}muuqcmX}vA6Unse~13tkjRkTWFb`Ui=;!#%GzXWUcWB;QN z>tOP8!iL4ndBA3212F^iJUJipvF|?ZMS>w=Mn5 zq&2JMy%obO;}coJgw=9Tk7b&)_AGsTwfr@hd8T#3{*FrPgS}Fm7Od{@EzU3%_AcxbX>|nd`H4jetvScc zzsIMKL&Q0hz7!mKPm&`Jb_Aw##MaE8bQ!XY$@lNugMo^BqOoN@mO_&m}FHicE61k?%9p66TPL zV8}i#-9iD(C$C&db3Ci4#Y%M!X5F0^X@VeXk!KbKxSD;J7lP^9=g(83GfyTu;I7ZN z!B#^Gw$V%MR>4MBIcH)G)MBm7YyGUi0GU@TXT@PkqUvqI(u-IYdHl#gU zR3=kqCbjL=DXU; z_Pv;g$(d9~ur)_H-W4iUh>A5lDvd%CVgHH}yg!$P-KWi>E? z`b&zjs_O&{RLaBLXfw;R+z4$UENbl_EL7#%^KAY)9|MAcAXZ|j5Et01>*l~|JJxK5|J!Sp za(5EAJE0aK9t(y@VSN880aJ!4Q8WzuSAeuUiUwO9fVo*(B}XFeUi`b~dI|1zYJGEX z5c$O?ArSm#}OHfsBBR=>@I{k+YWb=f)G+Cj-+Ryo<> zp@Zqx3T?O!U@qIXu~j>x$jpxI3}HR@1?Vl@X#_a7XkkN2*n^5xXqRrA}vicDG1mVRv?iG5hQ0=ALHH%I4mYJXY$IslP(wSor>FG)|g74Q2H4{qtx-^XaYzLk3%=a}2K+i0^M! zV=JH#*2mJBMIQ1*jZk3?W7!Amo&w8d7Y}tqv~_*U6Qex>{7!ON@pK7`rvt`F-)i-Ci;7`@S~=upa*rBW>)jKNj%!X6Hx4-2ARe- z9?hef%;{Jt%o=rU0runmW1_;#hgCPYnt&^3<~C<5K7UY$=}%)g-B$4~jydU!9Up`g zdExjjbF|e3VO)=M0{m^D*~zSq7W(7m5-lX6j;UiiP6W|7+o=<43>0FU@YyLXh1o*B z^dZ{ClD~?kovie$B#LJZUzH$}MV%>ulkPb)tX;UWFMH>Rg3_}v{n?dI1J|A9n_(HhX|#(;lzT~XvzX% zKepn!fqi|ES02`Hx+>MxVL5p#rPUF^f^;OO9TZoG1uL)9W_>eBscMjD)`wRHfPd1}1Q1nT zl@Hapl>u*Fme*gM0N%!HoiP}8Z76OwMEL~Of|1EqT;oPPeJ!;;mP~8Wh$vXp;`^|e z029W3=S$VLG2dnJn}c`0Z{~g|=m?CTcU%wb04YB1wP zB`>~?U+;qJlWW(zgUI`a&l4-~ixct23s7Uzjb55G=HBdt`D<>bkg}MLxA8KU}?W`~O_Lp+MPthacIl-)R<`7ac8PFIL3nw>%KLlB_O}viFb8 zV)N4$2fXoPWV3*}yB%ah4gtfNcYPpy)!ni37{BLsU%483Io&{br ze~HH8yz{6lJN*mylw7#=HxxVUnY4@7X8<{cW`x`zwzt740A7X6?r1j%^t2PJdwMX?Va z>~2-jk!^U$ZL;ejcdVv|e?Y(YlgOU?&0V%jC${uAzg9vWJN=t02+#i(EgK_@B|b`) z4HBw&xMDGGo1WnO<0D)R+PweeN?5V3k8jdT>pIde6fLMU1z}mPsn1hZ#s~-527JImmouuGPA6QSx9PBNft*+Rk-C!R~>1909d$=I{mp8k|yY=TQf_y zGk;_$9n#U{wv42cPUL5Kihb$?+?2^jCekDdQiYm2NReHxX{wJtm}5QuNxWJJ>IJ;NKkdH~TJ6D$`K3-QSmrb+p{R!JqCDy(hgGNV5Qb97v~iw8efp zf^_7BOIi(1hgN~zGJ4qWM$*SR+F^gU7d=mOTJnyk8Op1xR3DH3vAoXbHA@qEQ@rBYE=gH zK?P$!Ihh7)=yS<4i~a!)KV;Ei*CO1?AzI1*dN7!Zq=VCGHBkFy(~q1adIse=8n4MG zcdhujDo4B~?JuO^t)O!pWH%PkUTTGXE2B{ndD8dx3&nIrpzG3!IW&^4+db#f0}Wl1 z+LhtoL^q_{W#mQI>`vtr**(OdQhtP&5zPh770ra!cFawh_$K)o+k!gUSHDRcNs8Z3 z0TIcwGxLgz=M`jT6c-m}PcA9WED~FKvomIvWRA)#D#*_(%FN`5MN;X07_#pH8XygO zi(>f0Nor@K_EPr)un>SzEkpx za_3|e<)#-EPmPP?vlqq1CFjjnMAtwC-n`L#(0tL_%HK&Uw^2mL&H$UybZCBP+!Fk! zvH#76;OX`Z`h1MD>VekNo_C0XD3-%prielxHzEAWSHToLJ_#b@sG@DGxO)Pg(peuIHmuNyr1;=IQ8h(7OOv~pU*7Jo|cXO zl;U5Z$%Tcox-Di%meNnq=-+WM+Z#?`M_UGhv_+$5(I14?7B<-4_dTjKSw^(M8;SlX zw6?I(QqvdouE!XFTV{P8{jq4NlIa{pNLRn4{uSf!&0Uz|ynr?yjnlM$(sf0ZJB2byF5 I93b_-0R{Hu2mk;8 delta 8545 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
1Xy?ch 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 diff --git a/x/wasm/keeper/testdata/hackatom.wasm.gzip b/x/wasm/keeper/testdata/hackatom.wasm.gzip index 5f1f92f2d6edeac804c3793635f0863248cba4e5..f1525e3ea1511b24c69c9d426307102d873c8df2 100644 GIT binary patch literal 62351 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 literal 62090 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 b22z6wBvj%oX$v=0I`#hm>bF-EHMRl(s)p%6 diff --git a/x/wasm/keeper/testdata/ibc_reflect.wasm b/x/wasm/keeper/testdata/ibc_reflect.wasm index 8f2dda3bda0e1c8ee778733471b1471f09c0e86b..ac05900b832d949838e2dfe6e3485aaa0e4b8cfb 100644 GIT binary patch literal 282290 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 diff --git a/x/wasm/keeper/testdata/ibc_reflect_send.wasm b/x/wasm/keeper/testdata/ibc_reflect_send.wasm index 547a8bccd4bf6698dd070b4f83cc7a3338929855..75b503f22c10e917a9f4bbed45c30382ec014aff 100644 GIT binary patch literal 286892 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

&SlS_8QNHJrRTES5&$sO3|DVuaQu)>^u<~eGY+F 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

?7k9Dq#c@m7Q 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 C5rLlo diff --git a/x/wasm/keeper/testdata/ibc_reflect.wasm b/x/wasm/keeper/testdata/ibc_reflect.wasm index 96f618879554c9df5e97628fb93d099cf621c6e1..eafd761fe0d0cb977ba38793c1588c700defa860 100644 GIT binary patch delta 63971 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 delta 65722 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 diff --git a/x/wasm/keeper/testdata/ibc_reflect_send.wasm b/x/wasm/keeper/testdata/ibc_reflect_send.wasm index 580460c279568e41b8e427b99c1eef41717e5396..83ebde9f8f1161ba17d050f1b47c1e6f016ff9d5 100644 GIT binary patch delta 31704 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 mHE5D7b@iA{YatL*M2}Pc$bsewX{a#h~ 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 diff --git a/x/wasm/keeper/testdata/reflect.wasm b/x/wasm/keeper/testdata/reflect.wasm index 8e82d10a25c87f238b6a1e18977f9979fc6e7b6b..af2f1ac551f2cc246bcaff20852b98a60e993102 100644 GIT binary patch delta 2169 zcmZWo3s6+&72b3HyAO8RWih+NRS2ud!@5RMqZJ5xO<_h&VxrR~4Ks>bu&!2A5?3KB6;Yh9ki@o$*3?PQj165R{*wgezR%|PDcK*H-Z0Y!lQg%!Y=S??; z1}%PKr5i$8-Lz-o@l>4_&FM+Q`?cETwJ%%1%byLNqW|9nXYn6wNC3CaX*C;)0XtsR zzTS8V$e39c;9qUhjRt4t-!EA>q;D%3*1Jm8*QajA5r3!iUpqTYs@adKJLn$HqQ}nR zNn2wLKh0ITWjMs$V&(-c6ZjuqC>k{84gP2HYYh|l*|L_QfKYh|xu<$MU%I`}Q1MW? znYVDOLyhjDf>ymC?{1z!`T@=H;tCtNt=gSW@K^1gt$nt8K*0~f+W9^8qrEwuzptcF zi-FZMrq4OtRvin5##Q=}X0KVJ=w%zS73wOUJPm+%!UpI7uRa(%2*I!h2xl_CRj2+h zR+oDH6)NZ)I~=18C+JB7gW%8ASBzpbCRZ39o?O>~SYvYYou_s1_K{o-xq6O!5}Ic9TBLWIpq?QIG@LzQ)CR?bS`0{P89mcQwUQ zm?3#+9;=($2e;sEaq^|j%ZE~uL=13`+C4=dclHOz_0v z(Fr=8XI~!5GIBdQ#J7%&g{ZXt+)k+~k3B}8fIN`~THo=IK9kC0bF^b8CdBAxe&Mut z8s4ncx_ixNYX!$Y5MYPM%x6B$`uRy0v}M; zu;jg=4%1YVX`adCXY}oxe~p7Hs55VmgJqvUh4@boOoj@Xd;{vt3DxJKzT!udq{Y$V8BQ>&eDPFeXy&AcE1!g<&jj#-@ z#1}14BgpccEH1)Hc06Az_mp71)d=pxH*4kl<#-%N5jSkdyf`vP_8@(qI+-nhycZv_ z!!Z%6$3`fVf&KWy8CVyRzx*BUw2{Jm5la|;Rwv6YW3e4t#nr!ISe)oak8%?oPm1QN zI9?QY;#^0p$#2R)8lszvGo2U_iJj;bi@GpPIRK7k@nI+Wgd>76qUrDW3vuWwwu#J6 z+RMr=tj2$X@N{FEBXusNKy^w`O%-|Fm;q^GQ#Tffx31wMkS-$EaJJF{j(5b&B`isl z^iaCbJ88qo5ln;(nG?Z65WUxN7NiPa56%=Hb>ni#5Q*3Ef?V8#Dv;rJ4+ez1f&O8h zdf7M3zkhQ?A46Axsz=B2QZG(&T$3H9x#%Zds>todTnZumG$JI;6_H+CGiD55$OX5s zl|jAuGK%xW#3){YdP)4lK=h#jtg?wUcd$xK{|1w|_os_w{#`tZ;`Og_?|4bK`2WW# zVemRd{Wo|?esK@)K0ujnxmYq%6>B_OMNqyP$EJvV@hqG8bMdT^$WO*GYEP0S6bJ8$ z%E@dCk=_*cJ&~Bg+Tf%(o5E7yq$E|jnM^CEvK0Hf;8)bU7@UOSyUFZ9d1NZv44}ye zrm+ea(dzju*+TT~1?*EZ;i$@Ee{L1eMcG7A(a&7shR!|M&phIMKS7G=XN4l%#}dWG zKDHck#qB5?FXl(t46(kScG=iZBAH^umOkbe_xjmWhUkp4fbQ&_^h8l<>FRYwi#HXQ zY%MC@ShV)}tgN4vuFJ}L`h}vc+ny+0CqC$7d1A=`dp^cyGJc9YH^2(aN%MweAo>u! YN9lR!DfDvXf`78G3)1B$pj?{rUj&8S;s5{u delta 2110 zcmZWp3s6*L6y9_GeYG!k2^AG$73C3FB1M@5T?=NCCMTVqG-{SkZ6=ht7&RlBOp(&E z{NxEA%c{^=V`<*Wzw!~8j%Hbym6-^lh{Y~xTB%u6|K)-(b!YB>-sgPh{O8_=gYJfd z?k$_aW>0xYL+9W;W0%oOJ}DQWz^D?|9Z@gMVg&r)!x39;)?Jrz?7 z5XbX9kEouJ6>d1D)@D5D!K&BQNbac=+*7T#JpPIq9Q+~QNAi5%H-X>v^iYV=IJNre zxqugH)ZgcQ1=5)1&*bOkYetnc-7zO{B23IK{0tzar@l; zS+v-jc;a&o-A{Ebc(y;p9X9de@Cg3J!a2Rhg5EQWpQsaSQeyzk01d~K`Dy&jppD95iJK-r@%Uvsxs{;^ONzb9nnu8>0p z>QY>9_tl|geKU85oxG@FT3=!**;ZCcOxi6c@R){No*3@K&Gq}#(M;rV>+~S~KDVwL zn4QzP`<1>FR~JQ_C9tXpKhJ^EQ|K#&%ttYk`e?*Tq!zo_`iwU<-X|hT*VLbeZ7* zOWGN1Hl!O2w-^jwrdWN-hlAxULGiT>%qEn~kr+6P8nY=DrXGS9=&w^S8eR}doq%_` z{9aRm6TL?Fa&(}bI>urG6{VsB{NkZhyb=dQo^DK{#C*I=({u5)p^Ln%z{$LzMKHV9 z-~}&pFQP-2ajKYnJ8lQqr?#ngfOt?rAHYVMSB{ymMVy_C6WG*fb+cid!EjqIY_Cu0 zl=9U!;(bc%VA<_cz8x&fHoqJ!@2M80g*aBOI<@%m0g6t+T5PTn6-C%$!J1kzZ8}b} z^UjT-`DM;UI$0mSv?SP&!4?Num0M~!5Q zhhM{+ZO~4EI$Q%~BJ&Nr|3>Vo7BBC?C04009mEobCxgP@f^%(9N5_A}pxt5c8q!dX z${nOXTX6&JYQ-TmxeXKGUTQdw@f13SIW+$m4jbgVlG=}9JFPvAO?0>wQ|QSyTxwhc z_IGLg6qZOCCvZHB6_1`k`F9y8aTzGwjyaG*N7^wPe?f}2VTwI9M*=`)j893W#CA-B zG%9SzVoExR(_k#gESVHKi6Pq2ffFE=&UWBjH=iER z|8*LzQeWDIqwFU{vmpn)vZzeZg?YL@LksJY-G0-BvxRa7*E49Ovk|<7Mn>>3Gz!Vz z0FqwUgOye|OD!c(MQMLvqWJzY#sh8m9V>@zlWX_?J=`Yp|G;x7e)$tGT`N|33NQlV(I=UE2o_ib|XF6&77Jz3-V}TH%r&-7FICdPc_|aG+pXu zc@&Mvd;dGitaK&9QYh5TZl&BPn?X~0*z?yI4frRH=gC+8EP5Z1 T=XE0g0t>nzMH~X-S7ZJKo~6&6 diff --git a/x/wasm/keeper/testdata/staking.wasm b/x/wasm/keeper/testdata/staking.wasm index a5994fccb9d67c3ac8d87aaba164fbc5d03cd28d..2e22ec6401cd5d67f1030656ba40a936588de6e1 100644 GIT binary patch delta 15922 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 MN@gNA8|N1N2YA*YH2?qr delta 13996 zcmeHOdw5jUwV$=mnaNCMGMT&}kVMW55hf5JDkMCta$>_Hyj7@=)<bSF8lRwo28TM-MvawLRJ2&V8rqbmKCz$#r2VLmdVg#0Gs9r*ZEwH($Ni)5 zC1;;~_E~%F_4uu|_C9(1-tZf@hTC^iv0<2{d40WkhG7u?nTFx)p&CJk6A(3Ko?%j| zUc5t*QDXWb|nd(EW5Pt)aE#(2Jts2P3|}m~N!&u5Y1HZ_sJGsf$L8 z`Y*A>80Fk=UhF;88)`LDTMEL0!cJ%5t4`YYjPqdVdMbA26byI1R&Z|Wqx|y-58FG> zl`Gz)5vfgigNUw?d*7n#Q!@kiP^!TD5T%?*Ku}j|eeo}dI-Cnj|3-ULFVwwlQoq!r zBX1_^?~HD^h$>RIH(V*G(g}`vvts%3PLFL_hJD17h*SkFj}@*L9^AK)vvTlAXWO6} zkosWoBHHVmH+XeUyCL;p%|uFt#y(?!{>!J{MO2xZJI9Ed-WqQ)6{&SNuc zogYl~A@DPaT#DG#3dfQco{zHl0;dg2CS{?)2dK*@=jL zOZWG6?wwlexMTA7|Ino}&uO1IOm$aHy-7_sZ>s53O$$1ErWU${bx)bg1mAr$z0|pS z+5$Dcbb5ulo;Uq6zNQXLzmCv2(Ya%0ALp&F&2g&E2&uVmI(t&;&NHU)!&;}$S*28{ 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 diff --git a/x/wasm/types/exported_keepers.go b/x/wasm/types/exported_keepers.go index 2ca3d3a986..ab93bc8ae4 100644 --- a/x/wasm/types/exported_keepers.go +++ b/x/wasm/types/exported_keepers.go @@ -86,7 +86,7 @@ type IBCContractKeeper interface { OnAckPacket( ctx sdk.Context, contractAddr sdk.AccAddress, - acknowledgement wasmvmtypes.IBCAcknowledgementWithPacket, + acknowledgement wasmvmtypes.IBCPacketAckMsg, ) error OnTimeoutPacket( ctx sdk.Context, From 48a2e6d278004f70ca4328d39912d956d9020989 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 22 Jul 2021 15:55:36 +0200 Subject: [PATCH 26/90] Fix tests --- x/wasm/keeper/relay_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/wasm/keeper/relay_test.go b/x/wasm/keeper/relay_test.go index a0b8ae822a..d6ed08148b 100644 --- a/x/wasm/keeper/relay_test.go +++ b/x/wasm/keeper/relay_test.go @@ -558,9 +558,9 @@ func TestOnAckPacket(t *testing.T) { for name, spec := range specs { t.Run(name, func(t *testing.T) { - myAck := wasmvmtypes.IBCAcknowledgementWithPacket{Acknowledgement: wasmvmtypes.IBCAcknowledgement{Data: []byte("myAck")}} + myAck := wasmvmtypes.IBCPacketAckMsg{Acknowledgement: wasmvmtypes.IBCAcknowledgement{Data: []byte("myAck")}} m.IBCPacketAckFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketAckMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { - assert.Equal(t, myAck, msg.Ack) + assert.Equal(t, myAck, msg) return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } From 1468a35c4ad2a8e41ccd70d5f26840d6f196e22d Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Mon, 26 Jul 2021 22:04:28 +0200 Subject: [PATCH 27/90] Add error messages on invalid event attributes --- x/wasm/keeper/events.go | 43 ++++++++++++++++++++++++++++------------- x/wasm/types/errors.go | 3 +++ 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/x/wasm/keeper/events.go b/x/wasm/keeper/events.go index 0a9588ba54..19a3a38ba8 100644 --- a/x/wasm/keeper/events.go +++ b/x/wasm/keeper/events.go @@ -5,16 +5,20 @@ import ( "github.com/line/lbm-sdk/x/wasm/types" wasmvmtypes "github.com/line/wasmvm/types" sdk "github.com/line/lbm-sdk/types" + sdkerrors "github.com/line/lbm-sdk/types/errors" "strings" ) // newWasmModuleEvent creates with wasm module event for interacting with the given contract. Adds custom attributes // to this event. -func newWasmModuleEvent(customAttributes []wasmvmtypes.EventAttribute, contractAddr sdk.AccAddress) sdk.Events { - attrs := contractSDKEventAttributes(customAttributes, contractAddr) +func newWasmModuleEvent(customAttributes []wasmvmtypes.EventAttribute, contractAddr sdk.AccAddress) (sdk.Events, error) { + attrs, err := contractSDKEventAttributes(customAttributes, contractAddr) + if err != nil { + return nil, err + } // each wasm invocation always returns one sdk.Event - return sdk.Events{sdk.NewEvent(types.WasmModuleEventType, attrs...)} + return sdk.Events{sdk.NewEvent(types.WasmModuleEventType, attrs...)}, nil } // returns true when a wasm module event was emitted for this contract already @@ -34,28 +38,41 @@ func hasWasmModuleEvent(ctx sdk.Context, contractAddr sdk.AccAddress) bool { const eventTypeMinLength = 2 // newCustomEvents converts wasmvm events from a contract response to sdk type events -func newCustomEvents(evts wasmvmtypes.Events, contractAddr sdk.AccAddress) sdk.Events { +func newCustomEvents(evts wasmvmtypes.Events, contractAddr sdk.AccAddress) (sdk.Events, error) { events := make(sdk.Events, 0, len(evts)) for _, e := range evts { - if len(e.Type) <= eventTypeMinLength { - continue + typ := strings.TrimSpace(e.Type) + if len(typ) <= eventTypeMinLength { + return nil, sdkerrors.Wrap(types.ErrInvalidEvent, fmt.Sprintf("Event type too short: '%s'", typ)) + } + attributes, err := contractSDKEventAttributes(e.Attributes, contractAddr) + if err != nil { + return nil, err } - attributes := contractSDKEventAttributes(e.Attributes, contractAddr) - events = append(events, sdk.NewEvent(fmt.Sprintf("%s%s", types.CustomContractEventPrefix, e.Type), attributes...)) + events = append(events, sdk.NewEvent(fmt.Sprintf("%s%s", types.CustomContractEventPrefix, typ), attributes...)) } - return events + return events, nil } // convert and add contract address issuing this event -func contractSDKEventAttributes(customAttributes []wasmvmtypes.EventAttribute, contractAddr sdk.AccAddress) []sdk.Attribute { +func contractSDKEventAttributes(customAttributes []wasmvmtypes.EventAttribute, contractAddr sdk.AccAddress) ([]sdk.Attribute, error) { attrs := []sdk.Attribute{sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddr.String())} // append attributes from wasm to the sdk.Event for _, l := range customAttributes { // FIXME: do we want to error here on invalid events // and reserve all _* keys for our use (not contract) - if len(l.Key) > 0 && len(l.Value) > 0 && !strings.HasPrefix(l.Key, types.AttributeReservedPrefix) { - attrs = append(attrs, sdk.NewAttribute(l.Key, l.Value)) + key := strings.TrimSpace(l.Key) + if len(key) == 0 { + return nil, sdkerrors.Wrap(types.ErrInvalidEvent, fmt.Sprintf("Empty attribute key. Value: %s", l.Value)) + } + value := strings.TrimSpace(l.Value) + if len(value) == 0 { + return nil, sdkerrors.Wrap(types.ErrInvalidEvent, fmt.Sprintf("Empty attribute value. Key: %s", key)) + } + if strings.HasPrefix(key, types.AttributeReservedPrefix) { + return nil, sdkerrors.Wrap(types.ErrInvalidEvent, fmt.Sprintf("Attribute starts with %s: %s", types.AttributeReservedPrefix, key)) } + attrs = append(attrs, sdk.NewAttribute(l.Key, l.Value)) } - return attrs + return attrs, nil } diff --git a/x/wasm/types/errors.go b/x/wasm/types/errors.go index 9ebcb59876..65866a06fc 100644 --- a/x/wasm/types/errors.go +++ b/x/wasm/types/errors.go @@ -66,4 +66,7 @@ var ( // ErrUnknownMsg error by a message handler to show that it is not responsible for this message type ErrUnknownMsg = sdkErrors.Register(DefaultCodespace, 20, "unknown message from the contract") + + // ErrInvalidEvent error if an attribute/event from the contract is invalid + ErrInvalidEvent = sdkErrors.Register(DefaultCodespace, 21, "invalid event") ) From 9d9812f2077aed689ba4ebd34e1a1e59efe94371 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Mon, 26 Jul 2021 22:11:29 +0200 Subject: [PATCH 28/90] Tests compile and pass --- x/wasm/keeper/events_test.go | 65 ++++++++++++++++++++++-------------- x/wasm/keeper/keeper.go | 12 +++++-- 2 files changed, 50 insertions(+), 27 deletions(-) diff --git a/x/wasm/keeper/events_test.go b/x/wasm/keeper/events_test.go index b48c271e5f..cdcf5a2f22 100644 --- a/x/wasm/keeper/events_test.go +++ b/x/wasm/keeper/events_test.go @@ -53,8 +53,9 @@ func TestHasWasmModuleEvent(t *testing.T) { func TestNewCustomEvents(t *testing.T) { myContract := RandomAccountAddress(t) specs := map[string]struct { - src wasmvmtypes.Events - exp sdk.Events + src wasmvmtypes.Events + exp sdk.Events + isError bool }{ "all good": { src: wasmvmtypes.Events{{ @@ -100,49 +101,58 @@ func TestNewCustomEvents(t *testing.T) { exp: sdk.Events{sdk.NewEvent("wasm-foo", sdk.NewAttribute("_contract_address", myContract.String()))}, }, - "min length not reached": { + "error on short event type": { src: wasmvmtypes.Events{{ Type: "f", }}, - exp: sdk.Events{}, + isError: true, }, - "overwrite _contract_address": { + "error on _contract_address": { src: wasmvmtypes.Events{{ Type: "foo", Attributes: []wasmvmtypes.EventAttribute{{Key: "_contract_address", Value: RandomBech32AccountAddress(t)}}, }}, - exp: sdk.Events{sdk.NewEvent("wasm-foo", - sdk.NewAttribute("_contract_address", myContract.String()))}, + isError: true, }, - "ignore reserved prefix": { + "error on reserved prefix": { src: wasmvmtypes.Events{{ Type: "wasm", Attributes: []wasmvmtypes.EventAttribute{ {Key: "_reserved", Value: "is skipped"}, {Key: "normal", Value: "is used"}}, }}, - exp: sdk.Events{sdk.NewEvent("wasm-wasm", - sdk.NewAttribute("_contract_address", myContract.String()), - sdk.NewAttribute("normal", "is used"))}, + isError: true, }, - "ignore empty attributes": { + "error on empty key": { src: wasmvmtypes.Events{{ Type: "boom", Attributes: []wasmvmtypes.EventAttribute{ {Key: "some", Value: "data"}, {Key: "key", Value: ""}, + }, + }}, + isError: true, + }, + "error on empty value": { + src: wasmvmtypes.Events{{ + Type: "boom", + Attributes: []wasmvmtypes.EventAttribute{ + {Key: "some", Value: "data"}, {Key: "", Value: "value"}, }, }}, - exp: sdk.Events{sdk.NewEvent("wasm-boom", - sdk.NewAttribute("_contract_address", myContract.String()), - sdk.NewAttribute("some", "data"))}, + isError: true, }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { - gotEvent := newCustomEvents(spec.src, myContract) - assert.Equal(t, spec.exp, gotEvent) + gotEvent, err := newCustomEvents(spec.src, myContract) + if spec.isError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + assert.Equal(t, spec.exp, gotEvent) + } }) } } @@ -150,8 +160,9 @@ func TestNewCustomEvents(t *testing.T) { func TestNewWasmModuleEvent(t *testing.T) { myContract := RandomAccountAddress(t) specs := map[string]struct { - src []wasmvmtypes.EventAttribute - exp sdk.Events + src []wasmvmtypes.EventAttribute + exp sdk.Events + isError bool }{ "all good": { src: []wasmvmtypes.EventAttribute{{Key: "myKey", Value: "myVal"}}, @@ -171,16 +182,20 @@ func TestNewWasmModuleEvent(t *testing.T) { exp: sdk.Events{sdk.NewEvent("wasm", sdk.NewAttribute("_contract_address", myContract.String()))}, }, - "overwrite _contract_address": { - src: []wasmvmtypes.EventAttribute{{Key: "_contract_address", Value: RandomBech32AccountAddress(t)}}, - exp: sdk.Events{sdk.NewEvent("wasm", - sdk.NewAttribute("_contract_address", myContract.String()))}, + "error on _contract_address": { + src: []wasmvmtypes.EventAttribute{{Key: "_contract_address", Value: RandomBech32AccountAddress(t)}}, + isError: true, }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { - gotEvent := newWasmModuleEvent(spec.src, myContract) - assert.Equal(t, spec.exp, gotEvent) + gotEvent, err := newWasmModuleEvent(spec.src, myContract) + if spec.isError { + assert.Error(t, err) + } else { + assert.NoError(t, err) + assert.Equal(t, spec.exp, gotEvent) + } }) } } diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 8eed533f7f..a6b90b078b 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -879,10 +879,18 @@ func (k *Keeper) handleContractResponse( ctx.GasMeter().ConsumeGas(attributeGasCost, "Custom contract event attributes") // emit all events from this contract itself if len(attrs) != 0 || !hasWasmModuleEvent(ctx, contractAddr) { - ctx.EventManager().EmitEvents(newWasmModuleEvent(attrs, contractAddr)) + wasmEvents, err := newWasmModuleEvent(attrs, contractAddr) + if err != nil { + return nil, err + } + ctx.EventManager().EmitEvents(wasmEvents) } if len(evts) > 0 { - ctx.EventManager().EmitEvents(newCustomEvents(evts, contractAddr)) + customEvents, err := newCustomEvents(evts, contractAddr) + if err != nil { + return nil, err + } + ctx.EventManager().EmitEvents(customEvents) } return k.wasmVMResponseHandler.Handle(ctx, contractAddr, ibcPort, msgs, data) } From b0eed42221d2415aea45af35347ba4778ab6c493 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Mon, 26 Jul 2021 22:20:08 +0200 Subject: [PATCH 29/90] Better event tests --- x/wasm/keeper/events.go | 6 ++--- x/wasm/keeper/events_test.go | 52 ++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/x/wasm/keeper/events.go b/x/wasm/keeper/events.go index 19a3a38ba8..73f75b3e55 100644 --- a/x/wasm/keeper/events.go +++ b/x/wasm/keeper/events.go @@ -59,8 +59,7 @@ func contractSDKEventAttributes(customAttributes []wasmvmtypes.EventAttribute, c attrs := []sdk.Attribute{sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddr.String())} // append attributes from wasm to the sdk.Event for _, l := range customAttributes { - // FIXME: do we want to error here on invalid events - // and reserve all _* keys for our use (not contract) + // ensure key and value are non-empty (and trim what is there) key := strings.TrimSpace(l.Key) if len(key) == 0 { return nil, sdkerrors.Wrap(types.ErrInvalidEvent, fmt.Sprintf("Empty attribute key. Value: %s", l.Value)) @@ -69,10 +68,11 @@ func contractSDKEventAttributes(customAttributes []wasmvmtypes.EventAttribute, c if len(value) == 0 { return nil, sdkerrors.Wrap(types.ErrInvalidEvent, fmt.Sprintf("Empty attribute value. Key: %s", key)) } + // and reserve all _* keys for our use (not contract) if strings.HasPrefix(key, types.AttributeReservedPrefix) { return nil, sdkerrors.Wrap(types.ErrInvalidEvent, fmt.Sprintf("Attribute starts with %s: %s", types.AttributeReservedPrefix, key)) } - attrs = append(attrs, sdk.NewAttribute(l.Key, l.Value)) + attrs = append(attrs, sdk.NewAttribute(key, value)) } return attrs, nil } diff --git a/x/wasm/keeper/events_test.go b/x/wasm/keeper/events_test.go index cdcf5a2f22..284ad56049 100644 --- a/x/wasm/keeper/events_test.go +++ b/x/wasm/keeper/events_test.go @@ -143,6 +143,44 @@ func TestNewCustomEvents(t *testing.T) { }}, isError: true, }, + "error on whitespace type": { + src: wasmvmtypes.Events{{ + Type: " f ", + Attributes: []wasmvmtypes.EventAttribute{ + {Key: "some", Value: "data"}, + }, + }}, + isError: true, + }, + "error on only whitespace key": { + src: wasmvmtypes.Events{{ + Type: "boom", + Attributes: []wasmvmtypes.EventAttribute{ + {Key: "some", Value: "data"}, + {Key: "\n\n\n\n", Value: "value"}, + }, + }}, + isError: true, + }, + "error on only whitespace value": { + src: wasmvmtypes.Events{{ + Type: "boom", + Attributes: []wasmvmtypes.EventAttribute{ + {Key: "some", Value: "data"}, + {Key: "myKey", Value: " \t\r\n"}, + }, + }}, + isError: true, + }, + "strip out whitespace": { + src: wasmvmtypes.Events{{ + Type: " food\n", + Attributes: []wasmvmtypes.EventAttribute{{Key: "my Key", Value: "\tmyVal"}}, + }}, + exp: sdk.Events{sdk.NewEvent("wasm-food", + sdk.NewAttribute("_contract_address", myContract.String()), + sdk.NewAttribute("my Key", "myVal"))}, + }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { @@ -186,6 +224,20 @@ func TestNewWasmModuleEvent(t *testing.T) { src: []wasmvmtypes.EventAttribute{{Key: "_contract_address", Value: RandomBech32AccountAddress(t)}}, isError: true, }, + "error on whitespace key": { + src: []wasmvmtypes.EventAttribute{{Key: " ", Value: "value"}}, + isError: true, + }, + "error on whitespace value": { + src: []wasmvmtypes.EventAttribute{{Key: "key", Value: "\n\n\n"}}, + isError: true, + }, + "strip whitespace": { + src: []wasmvmtypes.EventAttribute{{Key: " my-real-key ", Value: "\n\n\nsome-val\t\t\t"}}, + exp: sdk.Events{sdk.NewEvent("wasm", + sdk.NewAttribute("_contract_address", myContract.String()), + sdk.NewAttribute("my-real-key", "some-val"))}, + }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { From 3aaf59101db2c62efc2f206f0a997c87bbd7525a Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Tue, 27 Jul 2021 14:15:20 +0200 Subject: [PATCH 30/90] Update with PR comments --- x/wasm/keeper/events.go | 3 ++- x/wasm/keeper/events_test.go | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/x/wasm/keeper/events.go b/x/wasm/keeper/events.go index 73f75b3e55..54555c7afb 100644 --- a/x/wasm/keeper/events.go +++ b/x/wasm/keeper/events.go @@ -65,12 +65,13 @@ func contractSDKEventAttributes(customAttributes []wasmvmtypes.EventAttribute, c return nil, sdkerrors.Wrap(types.ErrInvalidEvent, fmt.Sprintf("Empty attribute key. Value: %s", l.Value)) } value := strings.TrimSpace(l.Value) + // TODO: check if this is legal in the SDK - if it is, we can remove this check if len(value) == 0 { return nil, sdkerrors.Wrap(types.ErrInvalidEvent, fmt.Sprintf("Empty attribute value. Key: %s", key)) } // and reserve all _* keys for our use (not contract) if strings.HasPrefix(key, types.AttributeReservedPrefix) { - return nil, sdkerrors.Wrap(types.ErrInvalidEvent, fmt.Sprintf("Attribute starts with %s: %s", types.AttributeReservedPrefix, key)) + return nil, sdkerrors.Wrap(types.ErrInvalidEvent, fmt.Sprintf("Attribute key starts with reserved prefix %s: '%s'", types.AttributeReservedPrefix, key)) } attrs = append(attrs, sdk.NewAttribute(key, value)) } diff --git a/x/wasm/keeper/events_test.go b/x/wasm/keeper/events_test.go index 284ad56049..deb18bc51b 100644 --- a/x/wasm/keeper/events_test.go +++ b/x/wasm/keeper/events_test.go @@ -123,7 +123,7 @@ func TestNewCustomEvents(t *testing.T) { }}, isError: true, }, - "error on empty key": { + "error on empty value": { src: wasmvmtypes.Events{{ Type: "boom", Attributes: []wasmvmtypes.EventAttribute{ @@ -133,7 +133,7 @@ func TestNewCustomEvents(t *testing.T) { }}, isError: true, }, - "error on empty value": { + "error on empty key": { src: wasmvmtypes.Events{{ Type: "boom", Attributes: []wasmvmtypes.EventAttribute{ From c99018ab7c0f206393028e5d3a79b9eeebca717b Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Tue, 27 Jul 2021 09:24:29 +0200 Subject: [PATCH 31/90] Rename 2 fields and regenerate protobuf --- docs/core/proto-docs.md | 4 +- proto/lbm/wasm/v1/tx.proto | 8 +- x/wasm/types/tx.pb.go | 161 ++++++++++++++++++------------------- 3 files changed, 86 insertions(+), 87 deletions(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index d9ec62f02e..ac88aeaabe 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -11164,7 +11164,7 @@ code id. | `admin` | [string](#string) | | Admin is an optional address that can execute migrations | | `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | | `label` | [string](#string) | | Label is optional metadata to be stored with a contract instance. | -| `init_msg` | [bytes](#bytes) | | InitMsg json encoded message to be passed to the contract on instantiation | +| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on instantiation | | `funds` | [lbm.base.v1.Coin](#lbm.base.v1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation | @@ -11199,7 +11199,7 @@ MsgMigrateContract runs a code upgrade/ downgrade for a smart contract | `sender` | [string](#string) | | Sender is the that actor that signed the messages | | `contract` | [string](#string) | | Contract is the address of the smart contract | | `code_id` | [uint64](#uint64) | | CodeID references the new WASM code | -| `migrate_msg` | [bytes](#bytes) | | MigrateMsg json encoded message to be passed to the contract on migration | +| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on migration | diff --git a/proto/lbm/wasm/v1/tx.proto b/proto/lbm/wasm/v1/tx.proto index 97c23eee99..7cacdfbb10 100644 --- a/proto/lbm/wasm/v1/tx.proto +++ b/proto/lbm/wasm/v1/tx.proto @@ -61,8 +61,8 @@ message MsgInstantiateContract { uint64 code_id = 3 [(gogoproto.customname) = "CodeID"]; // Label is optional metadata to be stored with a contract instance. string label = 4; - // InitMsg json encoded message to be passed to the contract on instantiation - bytes init_msg = 5; + // Msg json encoded message to be passed to the contract on instantiation + bytes msg = 5; // Funds coins that are transferred to the contract on instantiation repeated lbm.base.v1.Coin funds = 6 [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/line/lbm-sdk/types.Coins"]; @@ -134,8 +134,8 @@ message MsgMigrateContract { string contract = 2; // CodeID references the new WASM code uint64 code_id = 3 [(gogoproto.customname) = "CodeID"]; - // MigrateMsg json encoded message to be passed to the contract on migration - bytes migrate_msg = 4; + // Msg json encoded message to be passed to the contract on migration + bytes msg = 4; } // MsgMigrateContractResponse returns contract migration result data. diff --git a/x/wasm/types/tx.pb.go b/x/wasm/types/tx.pb.go index 543b71d59f..4107d6bb4c 100644 --- a/x/wasm/types/tx.pb.go +++ b/x/wasm/types/tx.pb.go @@ -130,8 +130,8 @@ type MsgInstantiateContract struct { CodeID uint64 `protobuf:"varint,3,opt,name=code_id,json=codeId,proto3" json:"code_id,omitempty"` // Label is optional metadata to be stored with a contract instance. Label string `protobuf:"bytes,4,opt,name=label,proto3" json:"label,omitempty"` - // InitMsg json encoded message to be passed to the contract on instantiation - InitMsg []byte `protobuf:"bytes,5,opt,name=init_msg,json=initMsg,proto3" json:"init_msg,omitempty"` + // Msg json encoded message to be passed to the contract on instantiation + Msg []byte `protobuf:"bytes,5,opt,name=msg,proto3" json:"msg,omitempty"` // Funds coins that are transferred to the contract on instantiation Funds github_com_line_lbm_sdk_types.Coins `protobuf:"bytes,6,rep,name=funds,proto3,castrepeated=github.com/line/lbm-sdk/types.Coins" json:"funds"` } @@ -404,8 +404,8 @@ type MsgMigrateContract struct { Contract string `protobuf:"bytes,2,opt,name=contract,proto3" json:"contract,omitempty"` // CodeID references the new WASM code CodeID uint64 `protobuf:"varint,3,opt,name=code_id,json=codeId,proto3" json:"code_id,omitempty"` - // MigrateMsg json encoded message to be passed to the contract on migration - MigrateMsg []byte `protobuf:"bytes,4,opt,name=migrate_msg,json=migrateMsg,proto3" json:"migrate_msg,omitempty"` + // Msg json encoded message to be passed to the contract on migration + Msg []byte `protobuf:"bytes,4,opt,name=msg,proto3" json:"msg,omitempty"` } func (m *MsgMigrateContract) Reset() { *m = MsgMigrateContract{} } @@ -741,65 +741,64 @@ func init() { func init() { proto.RegisterFile("lbm/wasm/v1/tx.proto", fileDescriptor_751e1d2b9f9bf9e8) } var fileDescriptor_751e1d2b9f9bf9e8 = []byte{ - // 918 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x56, 0x41, 0x6f, 0xe3, 0x44, - 0x14, 0x8e, 0x37, 0x69, 0xd2, 0xbc, 0x84, 0xb2, 0x98, 0x6c, 0xeb, 0x75, 0x51, 0xdc, 0x75, 0x57, - 0xa2, 0x62, 0x21, 0x61, 0xbb, 0x12, 0x7b, 0xe0, 0xd4, 0x04, 0x0e, 0x95, 0x30, 0xac, 0x5c, 0x10, - 0x12, 0x1c, 0xa2, 0xb1, 0x3d, 0x6b, 0xbc, 0xc4, 0x33, 0x91, 0xc7, 0xd9, 0xb6, 0x27, 0x24, 0xae, - 0x20, 0xc4, 0xef, 0xe0, 0x84, 0xc4, 0x9f, 0xe8, 0x71, 0x8f, 0x9c, 0x0a, 0xa4, 0xff, 0x80, 0x23, - 0x27, 0x34, 0x63, 0xc7, 0x99, 0xb8, 0x76, 0x9b, 0xc2, 0x5e, 0xf6, 0xe6, 0x37, 0xef, 0xbd, 0xef, - 0xbd, 0xf7, 0xcd, 0x37, 0x2f, 0x81, 0xce, 0xd8, 0x09, 0xfb, 0xc7, 0x88, 0x85, 0xfd, 0xe7, 0x0f, - 0xfb, 0xf1, 0x49, 0x6f, 0x12, 0xd1, 0x98, 0xaa, 0xad, 0xb1, 0x13, 0xf6, 0xf8, 0x69, 0xef, 0xf9, - 0x43, 0xbd, 0xe3, 0x53, 0x9f, 0x8a, 0xf3, 0x3e, 0xff, 0x4a, 0x42, 0xf4, 0x4d, 0x9e, 0xe8, 0x20, - 0x86, 0x79, 0xa2, 0x4b, 0x03, 0x92, 0x9e, 0x6f, 0x2d, 0x01, 0x9e, 0x4e, 0x30, 0x4b, 0x1c, 0xe6, - 0x4c, 0x81, 0xb6, 0xc5, 0xfc, 0xa3, 0x98, 0x46, 0x78, 0x48, 0x3d, 0xac, 0x6e, 0x42, 0x9d, 0x61, - 0xe2, 0xe1, 0x48, 0x53, 0x76, 0x94, 0xbd, 0xa6, 0x9d, 0x5a, 0xea, 0x07, 0xb0, 0xc1, 0xf3, 0x47, - 0xce, 0x69, 0x8c, 0x47, 0x2e, 0xf5, 0xb0, 0x76, 0x6b, 0x47, 0xd9, 0x6b, 0x0f, 0x6e, 0xcf, 0xce, - 0x8d, 0xf6, 0x97, 0x07, 0x47, 0xd6, 0xe0, 0x34, 0x16, 0x08, 0x76, 0x9b, 0xc7, 0xcd, 0x2d, 0x81, - 0x47, 0xa7, 0x91, 0x8b, 0xb5, 0x6a, 0x8a, 0x27, 0x2c, 0x55, 0x83, 0x86, 0x33, 0x0d, 0xc6, 0xbc, - 0x50, 0x4d, 0x38, 0xe6, 0xa6, 0xfa, 0x04, 0x36, 0x03, 0xc2, 0x62, 0x44, 0xe2, 0x00, 0xc5, 0x78, - 0x34, 0xc1, 0x51, 0x18, 0x30, 0x16, 0x50, 0xa2, 0xad, 0xed, 0x28, 0x7b, 0xad, 0xfd, 0xbb, 0x3d, - 0x89, 0x87, 0xde, 0x81, 0xeb, 0x62, 0xc6, 0x86, 0x94, 0x3c, 0x0d, 0x7c, 0xfb, 0x8e, 0x94, 0xf8, - 0x24, 0xcb, 0x33, 0x3f, 0x84, 0x8e, 0x3c, 0xa3, 0x8d, 0xd9, 0x84, 0x12, 0x86, 0xd5, 0x5d, 0x68, - 0xf0, 0x49, 0x46, 0x81, 0x27, 0x86, 0xad, 0x0d, 0x60, 0x76, 0x6e, 0xd4, 0x79, 0xc8, 0xe1, 0x47, - 0x76, 0x9d, 0xbb, 0x0e, 0x3d, 0xf3, 0x6f, 0x05, 0x36, 0x2d, 0xe6, 0x1f, 0x2e, 0x90, 0x87, 0x94, - 0xc4, 0x11, 0x72, 0xe3, 0x52, 0xae, 0x3a, 0xb0, 0x86, 0xbc, 0x30, 0x20, 0x82, 0xa2, 0xa6, 0x9d, - 0x18, 0x72, 0xb5, 0x6a, 0x59, 0x35, 0x9e, 0x3a, 0x46, 0x0e, 0x1e, 0xa7, 0xa4, 0x24, 0x86, 0x7a, - 0x17, 0xd6, 0x03, 0x12, 0xc4, 0xa3, 0x90, 0xf9, 0x82, 0x84, 0xb6, 0xdd, 0xe0, 0xb6, 0xc5, 0x7c, - 0xf5, 0x73, 0x58, 0x7b, 0x3a, 0x25, 0x1e, 0xd3, 0xea, 0x3b, 0xd5, 0xbd, 0xd6, 0xfe, 0x1b, 0x82, - 0x1c, 0xae, 0x00, 0x4e, 0xce, 0x90, 0x06, 0x64, 0xf0, 0xe0, 0xec, 0xdc, 0xa8, 0xfc, 0xf2, 0x87, - 0xb1, 0xeb, 0x07, 0xf1, 0x37, 0x53, 0xa7, 0xe7, 0xd2, 0xb0, 0x3f, 0x0e, 0x08, 0xee, 0x8f, 0x9d, - 0xf0, 0x3d, 0xe6, 0x7d, 0x9b, 0xea, 0x81, 0xc7, 0x32, 0x3b, 0x01, 0x33, 0x3f, 0x85, 0x6e, 0xf1, - 0xcc, 0x19, 0x77, 0x1a, 0x34, 0x90, 0xe7, 0x45, 0x98, 0xb1, 0x74, 0xf8, 0xb9, 0xa9, 0xaa, 0x50, - 0xf3, 0x50, 0x8c, 0x12, 0x7d, 0xd8, 0xe2, 0xdb, 0xfc, 0xad, 0x0a, 0xa6, 0x7c, 0x05, 0x07, 0xc4, - 0xbb, 0x09, 0xa1, 0xaf, 0xb0, 0xf8, 0x16, 0x62, 0xa8, 0xcb, 0x62, 0xc8, 0xee, 0xb9, 0x21, 0xdf, - 0xf3, 0x63, 0xe9, 0x9e, 0xd7, 0xc5, 0x84, 0x6f, 0xfd, 0x73, 0x6e, 0x68, 0x98, 0xb8, 0xd4, 0x0b, - 0x88, 0xdf, 0x7f, 0xc6, 0x28, 0xe9, 0xd9, 0xe8, 0xd8, 0xc2, 0x8c, 0x21, 0x1f, 0x17, 0xa8, 0xa0, - 0xf9, 0x32, 0x55, 0xf0, 0x1d, 0xbc, 0x73, 0xfd, 0xa5, 0xdd, 0xe8, 0x35, 0xc9, 0xb2, 0xb9, 0x55, - 0x2c, 0x9b, 0xaa, 0x24, 0x9b, 0x5f, 0x15, 0x50, 0x2d, 0xe6, 0x7f, 0x7c, 0x82, 0xdd, 0xe9, 0x0a, - 0x32, 0xd1, 0x61, 0xdd, 0x4d, 0x63, 0x52, 0xf4, 0xcc, 0x56, 0x6f, 0x43, 0x95, 0xb3, 0x9a, 0xa0, - 0xf3, 0xcf, 0x05, 0x67, 0xb5, 0x97, 0xc9, 0xd9, 0xfb, 0xa0, 0x5f, 0xee, 0x38, 0xe3, 0x68, 0x3e, - 0xa4, 0x22, 0x0d, 0xf9, 0x53, 0x32, 0xa4, 0x15, 0xf8, 0x11, 0xfa, 0x9f, 0x43, 0xae, 0xb4, 0x62, - 0x0c, 0x68, 0x85, 0x49, 0x2d, 0xa1, 0xb3, 0x9a, 0x68, 0x05, 0xd2, 0x23, 0x8b, 0xf9, 0xe9, 0x08, - 0xb9, 0x7e, 0xae, 0x1c, 0x01, 0xc1, 0x86, 0xc5, 0xfc, 0x2f, 0x26, 0x1e, 0x8a, 0xf1, 0x81, 0xd0, - 0x77, 0x59, 0xf7, 0xdb, 0xd0, 0x24, 0xf8, 0x78, 0x24, 0xaf, 0xc7, 0x75, 0x82, 0x8f, 0x93, 0x24, - 0x79, 0xb4, 0xea, 0xf2, 0x68, 0xa6, 0x26, 0xb6, 0xb0, 0x54, 0x62, 0xde, 0x90, 0x39, 0x84, 0xd7, - 0x2c, 0xe6, 0x0f, 0xc7, 0x18, 0x45, 0x57, 0xd7, 0xbe, 0x0a, 0x7e, 0x0b, 0xee, 0x2c, 0x81, 0x64, - 0xe8, 0xdf, 0x2b, 0xb0, 0x95, 0x15, 0x9e, 0x93, 0x71, 0x14, 0xa3, 0x78, 0xca, 0xfe, 0xd3, 0x15, - 0x3d, 0x82, 0x3a, 0x13, 0xd9, 0xa2, 0x85, 0x8d, 0xfd, 0xed, 0xa5, 0x85, 0xb2, 0x5c, 0xc0, 0x4e, - 0x43, 0xcd, 0x7b, 0x60, 0x94, 0xf4, 0x30, 0xef, 0x73, 0xff, 0xc7, 0x3a, 0x54, 0xf9, 0x26, 0x38, - 0x84, 0xe6, 0xe2, 0xc7, 0x7c, 0x79, 0x5b, 0xc9, 0x6f, 0x59, 0xbf, 0x57, 0xea, 0xca, 0x6e, 0xda, - 0x87, 0x37, 0x8b, 0x96, 0xf4, 0x6e, 0x3e, 0xb3, 0x20, 0x48, 0x7f, 0xb0, 0x42, 0x50, 0x56, 0xe8, - 0x07, 0x05, 0x8c, 0xeb, 0x7e, 0x1a, 0xfa, 0xa5, 0xfd, 0x16, 0x27, 0xe8, 0x8f, 0x6f, 0x98, 0x90, - 0x75, 0xf3, 0x35, 0xbc, 0x9e, 0x5f, 0x38, 0x46, 0x1e, 0x2b, 0x17, 0xa0, 0xbf, 0x7d, 0x4d, 0x80, - 0x0c, 0x9e, 0x7f, 0xe8, 0x97, 0xc0, 0x73, 0x01, 0x97, 0xc1, 0xcb, 0x9e, 0xe6, 0x67, 0xd0, 0x92, - 0xdf, 0xe0, 0x76, 0x3e, 0x4f, 0x72, 0xea, 0xbb, 0x57, 0x38, 0x33, 0xc0, 0x4f, 0x00, 0xa4, 0x77, - 0xa5, 0xe7, 0x53, 0x16, 0x3e, 0xdd, 0x2c, 0xf7, 0x65, 0x68, 0xcf, 0xa0, 0x53, 0xf8, 0x8c, 0xee, - 0x17, 0xb7, 0xb2, 0x1c, 0xa5, 0xbf, 0xbb, 0x4a, 0xd4, 0xbc, 0xd6, 0x60, 0x70, 0xf6, 0x57, 0xb7, - 0x72, 0x36, 0xeb, 0x2a, 0x2f, 0x66, 0x5d, 0xe5, 0xcf, 0x59, 0x57, 0xf9, 0xf9, 0xa2, 0x5b, 0x79, - 0x71, 0xd1, 0xad, 0xfc, 0x7e, 0xd1, 0xad, 0x7c, 0x75, 0xbf, 0x6c, 0xa1, 0x9f, 0x24, 0x7f, 0x92, - 0xc5, 0x5e, 0x77, 0xea, 0xe2, 0x2f, 0xf2, 0xa3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x83, 0xe8, - 0xd3, 0x0c, 0x8e, 0x0b, 0x00, 0x00, + // 904 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x56, 0x4f, 0x6f, 0xe3, 0x44, + 0x14, 0x8f, 0xd7, 0x69, 0xd2, 0xbc, 0x86, 0xb2, 0x98, 0x6c, 0x6b, 0x5c, 0x94, 0x74, 0xdd, 0x95, + 0xa8, 0x58, 0x48, 0xd8, 0xae, 0xc4, 0x1e, 0x38, 0x35, 0x81, 0x43, 0x25, 0x0c, 0x2b, 0x17, 0x84, + 0x04, 0x87, 0x68, 0x6c, 0xcf, 0x1a, 0x2f, 0xc9, 0x4c, 0xe4, 0x99, 0x6c, 0xdb, 0xd3, 0x4a, 0x5c, + 0xe1, 0xc0, 0xe7, 0xe0, 0x84, 0xc4, 0x97, 0xe8, 0x71, 0x8f, 0x9c, 0x0a, 0xa4, 0x27, 0xbe, 0x02, + 0x27, 0x34, 0x13, 0xdb, 0x9d, 0xb8, 0x76, 0x9b, 0x42, 0x2f, 0xdc, 0xfc, 0xfc, 0xde, 0xfb, 0xbd, + 0xf7, 0x7e, 0xef, 0x8f, 0x0d, 0xad, 0x91, 0x37, 0xee, 0x1d, 0x21, 0x36, 0xee, 0xbd, 0x78, 0xd4, + 0xe3, 0xc7, 0xdd, 0x49, 0x4c, 0x39, 0x35, 0xd6, 0x46, 0xde, 0xb8, 0x2b, 0xde, 0x76, 0x5f, 0x3c, + 0xb2, 0x5a, 0x21, 0x0d, 0xa9, 0x7c, 0xdf, 0x13, 0x4f, 0x73, 0x13, 0x6b, 0x43, 0x38, 0x7a, 0x88, + 0x61, 0xe1, 0xe8, 0xd3, 0x88, 0x24, 0xef, 0x37, 0x17, 0x00, 0x4f, 0x26, 0x98, 0xcd, 0x15, 0xf6, + 0x4c, 0x83, 0xa6, 0xc3, 0xc2, 0x43, 0x4e, 0x63, 0x3c, 0xa0, 0x01, 0x36, 0x36, 0xa0, 0xc6, 0x30, + 0x09, 0x70, 0x6c, 0x6a, 0xdb, 0xda, 0x6e, 0xc3, 0x4d, 0x24, 0xe3, 0x43, 0x58, 0x17, 0xfe, 0x43, + 0xef, 0x84, 0xe3, 0xa1, 0x4f, 0x03, 0x6c, 0xde, 0xd9, 0xd6, 0x76, 0x9b, 0xfd, 0xbb, 0xb3, 0xb3, + 0x4e, 0xf3, 0xab, 0xfd, 0x43, 0xa7, 0x7f, 0xc2, 0x25, 0x82, 0xdb, 0x14, 0x76, 0xa9, 0x24, 0xf1, + 0xe8, 0x34, 0xf6, 0xb1, 0xa9, 0x27, 0x78, 0x52, 0x32, 0x4c, 0xa8, 0x7b, 0xd3, 0x68, 0x24, 0x02, + 0x55, 0xa5, 0x22, 0x15, 0x8d, 0xa7, 0xb0, 0x11, 0x11, 0xc6, 0x11, 0xe1, 0x11, 0xe2, 0x78, 0x38, + 0xc1, 0xf1, 0x38, 0x62, 0x2c, 0xa2, 0xc4, 0x5c, 0xd9, 0xd6, 0x76, 0xd7, 0xf6, 0xde, 0xea, 0x2a, + 0x3c, 0x74, 0xf7, 0x7d, 0x1f, 0x33, 0x36, 0xa0, 0xe4, 0x59, 0x14, 0xba, 0xf7, 0x14, 0xc7, 0xa7, + 0x99, 0x9f, 0xfd, 0x11, 0xb4, 0xd4, 0x1a, 0x5d, 0xcc, 0x26, 0x94, 0x30, 0x6c, 0xec, 0x40, 0x5d, + 0x54, 0x32, 0x8c, 0x02, 0x59, 0x6c, 0xb5, 0x0f, 0xb3, 0xb3, 0x4e, 0x4d, 0x98, 0x1c, 0x7c, 0xec, + 0xd6, 0x84, 0xea, 0x20, 0xb0, 0xff, 0xd2, 0x60, 0xc3, 0x61, 0xe1, 0xc1, 0x05, 0xf2, 0x80, 0x12, + 0x1e, 0x23, 0x9f, 0x97, 0x72, 0xd5, 0x82, 0x15, 0x14, 0x8c, 0x23, 0x22, 0x29, 0x6a, 0xb8, 0x73, + 0x41, 0x8d, 0xa6, 0x97, 0x45, 0x13, 0xae, 0x23, 0xe4, 0xe1, 0x51, 0x42, 0xca, 0x5c, 0x30, 0xee, + 0x82, 0x3e, 0x66, 0xa1, 0xac, 0xbf, 0xe9, 0x8a, 0x47, 0xe3, 0x0b, 0x58, 0x79, 0x36, 0x25, 0x01, + 0x33, 0x6b, 0xdb, 0xfa, 0xee, 0xda, 0xde, 0x1b, 0x92, 0x13, 0xd1, 0x78, 0xc1, 0xc9, 0x80, 0x46, + 0xa4, 0xff, 0xf0, 0xf4, 0xac, 0x53, 0xf9, 0xf9, 0xf7, 0xce, 0x4e, 0x18, 0xf1, 0x6f, 0xa7, 0x5e, + 0xd7, 0xa7, 0xe3, 0xde, 0x28, 0x22, 0xb8, 0x37, 0xf2, 0xc6, 0xef, 0xb3, 0xe0, 0xbb, 0x64, 0x0c, + 0x84, 0x2d, 0x73, 0xe7, 0x60, 0xf6, 0x67, 0xd0, 0x2e, 0x2e, 0x35, 0xa3, 0xcc, 0x84, 0x3a, 0x0a, + 0x82, 0x18, 0x33, 0x96, 0xd4, 0x9c, 0x8a, 0x86, 0x01, 0xd5, 0x00, 0x71, 0x34, 0x1f, 0x0b, 0x57, + 0x3e, 0xdb, 0xbf, 0xea, 0x60, 0xab, 0xcc, 0xef, 0x93, 0xe0, 0x26, 0x3c, 0xfe, 0x8f, 0x67, 0xee, + 0x62, 0x06, 0x6a, 0xea, 0x0c, 0x64, 0xed, 0xad, 0xab, 0xed, 0x7d, 0x02, 0xab, 0x11, 0x89, 0xf8, + 0x50, 0xf4, 0x78, 0x55, 0x56, 0xf8, 0xf6, 0xdf, 0x67, 0x1d, 0x13, 0x13, 0x9f, 0x06, 0x11, 0x09, + 0x7b, 0xcf, 0x19, 0x25, 0x5d, 0x17, 0x1d, 0x39, 0x98, 0x31, 0x14, 0x62, 0xb7, 0x2e, 0xac, 0x1d, + 0x75, 0x0a, 0x1a, 0xb7, 0x39, 0x05, 0x2f, 0xe1, 0xdd, 0xeb, 0x9b, 0x76, 0xa3, 0x25, 0x52, 0xc7, + 0xe6, 0x4e, 0xf1, 0xd8, 0xe8, 0xca, 0xd8, 0xfc, 0xa2, 0x81, 0xe1, 0xb0, 0xf0, 0x93, 0x63, 0xec, + 0x4f, 0x97, 0x18, 0x13, 0x0b, 0x56, 0xfd, 0xc4, 0x26, 0x41, 0xcf, 0xe4, 0x74, 0x73, 0xf4, 0x82, + 0xcd, 0xa9, 0xde, 0x26, 0x67, 0x1f, 0x80, 0x75, 0x39, 0xe3, 0x8c, 0xa3, 0xb4, 0x48, 0x4d, 0x29, + 0xf2, 0xa5, 0xac, 0xd1, 0x89, 0xc2, 0x18, 0xfd, 0xc7, 0x1a, 0x97, 0x3a, 0x2c, 0x09, 0x11, 0xd5, + 0x8c, 0x88, 0x24, 0xe5, 0x5c, 0x02, 0x57, 0xa6, 0x8c, 0x60, 0xdd, 0x61, 0xe1, 0x97, 0x93, 0x00, + 0x71, 0xbc, 0x2f, 0xe7, 0xb9, 0x2c, 0xdd, 0x2d, 0x68, 0x10, 0x7c, 0x34, 0x54, 0xaf, 0xe0, 0x2a, + 0xc1, 0x47, 0x73, 0x27, 0xb5, 0x16, 0x7d, 0xb1, 0x16, 0xdb, 0x94, 0xc7, 0x56, 0x09, 0x91, 0x26, + 0x64, 0x0f, 0xe0, 0x35, 0x87, 0x85, 0x83, 0x11, 0x46, 0xf1, 0xd5, 0xb1, 0xaf, 0x82, 0xdf, 0x84, + 0x7b, 0x0b, 0x20, 0x19, 0xfa, 0xf7, 0x1a, 0x6c, 0x66, 0x81, 0x53, 0x32, 0x0e, 0x39, 0xe2, 0x53, + 0xf6, 0xaf, 0x7a, 0xf2, 0x18, 0x6a, 0x4c, 0x7a, 0xcb, 0x14, 0xd6, 0xf7, 0xb6, 0x16, 0x0e, 0xc8, + 0x62, 0x00, 0x37, 0x31, 0xb5, 0xef, 0x43, 0xa7, 0x24, 0x87, 0x34, 0xcf, 0xbd, 0x1f, 0x6b, 0xa0, + 0x8b, 0xcd, 0x3f, 0x80, 0xc6, 0xc5, 0x37, 0x7b, 0xf1, 0x3a, 0xa9, 0xbb, 0x6b, 0xdd, 0x2f, 0x55, + 0x65, 0x9d, 0x0e, 0xe1, 0xcd, 0xa2, 0xa3, 0xbc, 0x93, 0xf7, 0x2c, 0x30, 0xb2, 0x1e, 0x2e, 0x61, + 0x94, 0x05, 0xfa, 0x41, 0x83, 0xce, 0x75, 0x9f, 0x82, 0x5e, 0x69, 0xbe, 0xc5, 0x0e, 0xd6, 0x93, + 0x1b, 0x3a, 0x64, 0xd9, 0x7c, 0x03, 0xaf, 0xe7, 0x0f, 0x4c, 0x27, 0x8f, 0x95, 0x33, 0xb0, 0xde, + 0xb9, 0xc6, 0x40, 0x05, 0xcf, 0x6f, 0xf6, 0x25, 0xf0, 0x9c, 0xc1, 0x65, 0xf0, 0xb2, 0xd5, 0xfc, + 0x1c, 0xd6, 0xd4, 0x1d, 0xdc, 0xca, 0xfb, 0x29, 0x4a, 0x6b, 0xe7, 0x0a, 0x65, 0x06, 0xf8, 0x29, + 0x80, 0xb2, 0x57, 0x56, 0xde, 0xe5, 0x42, 0x67, 0xd9, 0xe5, 0xba, 0x0c, 0xed, 0x39, 0xb4, 0x0a, + 0xd7, 0xe8, 0x41, 0x71, 0x2a, 0x8b, 0x56, 0xd6, 0x7b, 0xcb, 0x58, 0xa5, 0xb1, 0xfa, 0xfd, 0xd3, + 0x3f, 0xdb, 0x95, 0xd3, 0x59, 0x5b, 0x7b, 0x35, 0x6b, 0x6b, 0x7f, 0xcc, 0xda, 0xda, 0x4f, 0xe7, + 0xed, 0xca, 0xab, 0xf3, 0x76, 0xe5, 0xb7, 0xf3, 0x76, 0xe5, 0xeb, 0x07, 0x65, 0x07, 0xfc, 0x78, + 0xfe, 0x2f, 0x2c, 0xef, 0xb8, 0x57, 0x93, 0x7f, 0xc2, 0x8f, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, + 0x07, 0xd6, 0x9f, 0x7f, 0x75, 0x0b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1275,10 +1274,10 @@ func (m *MsgInstantiateContract) MarshalToSizedBuffer(dAtA []byte) (int, error) dAtA[i] = 0x32 } } - if len(m.InitMsg) > 0 { - i -= len(m.InitMsg) - copy(dAtA[i:], m.InitMsg) - i = encodeVarintTx(dAtA, i, uint64(len(m.InitMsg))) + if len(m.Msg) > 0 { + i -= len(m.Msg) + copy(dAtA[i:], m.Msg) + i = encodeVarintTx(dAtA, i, uint64(len(m.Msg))) i-- dAtA[i] = 0x2a } @@ -1596,10 +1595,10 @@ func (m *MsgMigrateContract) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.MigrateMsg) > 0 { - i -= len(m.MigrateMsg) - copy(dAtA[i:], m.MigrateMsg) - i = encodeVarintTx(dAtA, i, uint64(len(m.MigrateMsg))) + if len(m.Msg) > 0 { + i -= len(m.Msg) + copy(dAtA[i:], m.Msg) + i = encodeVarintTx(dAtA, i, uint64(len(m.Msg))) i-- dAtA[i] = 0x22 } @@ -1920,7 +1919,7 @@ func (m *MsgInstantiateContract) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.InitMsg) + l = len(m.Msg) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -2074,7 +2073,7 @@ func (m *MsgMigrateContract) Size() (n int) { if m.CodeID != 0 { n += 1 + sovTx(uint64(m.CodeID)) } - l = len(m.MigrateMsg) + l = len(m.Msg) if l > 0 { n += 1 + l + sovTx(uint64(l)) } @@ -2616,7 +2615,7 @@ func (m *MsgInstantiateContract) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InitMsg", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Msg", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -2643,9 +2642,9 @@ func (m *MsgInstantiateContract) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.InitMsg = append(m.InitMsg[:0], dAtA[iNdEx:postIndex]...) - if m.InitMsg == nil { - m.InitMsg = []byte{} + m.Msg = append(m.Msg[:0], dAtA[iNdEx:postIndex]...) + if m.Msg == nil { + m.Msg = []byte{} } iNdEx = postIndex case 6: @@ -3682,7 +3681,7 @@ func (m *MsgMigrateContract) Unmarshal(dAtA []byte) error { } case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MigrateMsg", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Msg", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -3709,9 +3708,9 @@ func (m *MsgMigrateContract) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.MigrateMsg = append(m.MigrateMsg[:0], dAtA[iNdEx:postIndex]...) - if m.MigrateMsg == nil { - m.MigrateMsg = []byte{} + m.Msg = append(m.Msg[:0], dAtA[iNdEx:postIndex]...) + if m.Msg == nil { + m.Msg = []byte{} } iNdEx = postIndex default: From 31c2dc04f3efe85a136f747ac5de19496e792e6d Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Tue, 27 Jul 2021 09:27:50 +0200 Subject: [PATCH 32/90] {Init,Migrate}Msg -> Msg in proposals as well --- docs/core/proto-docs.md | 4 +- proto/lbm/wasm/v1/proposal.proto | 8 +- x/wasm/types/proposal.pb.go | 141 +++++++++++++++---------------- 3 files changed, 76 insertions(+), 77 deletions(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index ac88aeaabe..60c7b77cd8 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -11566,7 +11566,7 @@ InstantiateContractProposal gov proposal content type to instantiate a contract. | `admin` | [string](#string) | | Admin is an optional address that can execute migrations | | `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | | `label` | [string](#string) | | Label is optional metadata to be stored with a constract instance. | -| `init_msg` | [bytes](#bytes) | | InitMsg json encoded message to be passed to the contract on instantiation | +| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on instantiation | | `funds` | [lbm.base.v1.Coin](#lbm.base.v1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation | @@ -11587,7 +11587,7 @@ MigrateContractProposal gov proposal content type to migrate a contract. | `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | | `contract` | [string](#string) | | Contract is the address of the smart contract | | `code_id` | [uint64](#uint64) | | CodeID references the new WASM code | -| `migrate_msg` | [bytes](#bytes) | | MigrateMsg json encoded message to be passed to the contract on migration | +| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on migration | diff --git a/proto/lbm/wasm/v1/proposal.proto b/proto/lbm/wasm/v1/proposal.proto index 277b8b80e1..9e85beb976 100644 --- a/proto/lbm/wasm/v1/proposal.proto +++ b/proto/lbm/wasm/v1/proposal.proto @@ -42,8 +42,8 @@ message InstantiateContractProposal { uint64 code_id = 5 [(gogoproto.customname) = "CodeID"]; // Label is optional metadata to be stored with a constract instance. string label = 6; - // InitMsg json encoded message to be passed to the contract on instantiation - bytes init_msg = 7; + // Msg json encoded message to be passed to the contract on instantiation + bytes msg = 7; // Funds coins that are transferred to the contract on instantiation repeated lbm.base.v1.Coin funds = 8 [(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/line/lbm-sdk/types.Coins"]; @@ -61,8 +61,8 @@ message MigrateContractProposal { string contract = 4; // CodeID references the new WASM code uint64 code_id = 5 [(gogoproto.customname) = "CodeID"]; - // MigrateMsg json encoded message to be passed to the contract on migration - bytes migrate_msg = 6; + // Msg json encoded message to be passed to the contract on migration + bytes msg = 6; } // UpdateAdminProposal gov proposal content type to set an admin for a contract. diff --git a/x/wasm/types/proposal.pb.go b/x/wasm/types/proposal.pb.go index b899642f3f..22f6b45667 100644 --- a/x/wasm/types/proposal.pb.go +++ b/x/wasm/types/proposal.pb.go @@ -90,8 +90,8 @@ type InstantiateContractProposal struct { CodeID uint64 `protobuf:"varint,5,opt,name=code_id,json=codeId,proto3" json:"code_id,omitempty"` // Label is optional metadata to be stored with a constract instance. Label string `protobuf:"bytes,6,opt,name=label,proto3" json:"label,omitempty"` - // InitMsg json encoded message to be passed to the contract on instantiation - InitMsg []byte `protobuf:"bytes,7,opt,name=init_msg,json=initMsg,proto3" json:"init_msg,omitempty"` + // Msg json encoded message to be passed to the contract on instantiation + Msg []byte `protobuf:"bytes,7,opt,name=msg,proto3" json:"msg,omitempty"` // Funds coins that are transferred to the contract on instantiation Funds github_com_line_lbm_sdk_types.Coins `protobuf:"bytes,8,rep,name=funds,proto3,castrepeated=github.com/line/lbm-sdk/types.Coins" json:"funds"` } @@ -140,8 +140,8 @@ type MigrateContractProposal struct { Contract string `protobuf:"bytes,4,opt,name=contract,proto3" json:"contract,omitempty"` // CodeID references the new WASM code CodeID uint64 `protobuf:"varint,5,opt,name=code_id,json=codeId,proto3" json:"code_id,omitempty"` - // MigrateMsg json encoded message to be passed to the contract on migration - MigrateMsg []byte `protobuf:"bytes,6,opt,name=migrate_msg,json=migrateMsg,proto3" json:"migrate_msg,omitempty"` + // Msg json encoded message to be passed to the contract on migration + Msg []byte `protobuf:"bytes,6,opt,name=msg,proto3" json:"msg,omitempty"` } func (m *MigrateContractProposal) Reset() { *m = MigrateContractProposal{} } @@ -404,53 +404,52 @@ func init() { func init() { proto.RegisterFile("lbm/wasm/v1/proposal.proto", fileDescriptor_38b6af62537450c9) } var fileDescriptor_38b6af62537450c9 = []byte{ - // 728 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x95, 0x4d, 0x6b, 0xe3, 0x46, - 0x18, 0xc7, 0xad, 0x38, 0x96, 0x9d, 0xb1, 0x49, 0x1d, 0xd5, 0x71, 0x14, 0xa7, 0x48, 0x46, 0x29, - 0xc5, 0x50, 0x6a, 0x93, 0x04, 0x4a, 0xdb, 0x9b, 0xe5, 0x5e, 0x52, 0x30, 0x18, 0xa5, 0xa1, 0xd0, - 0x8b, 0xd1, 0xcb, 0x44, 0x19, 0x2a, 0xcd, 0x08, 0xcd, 0x38, 0xa9, 0xbf, 0x45, 0x3f, 0x40, 0xe9, - 0xb5, 0xa5, 0x87, 0x96, 0xfd, 0x16, 0x61, 0x4f, 0x39, 0xe6, 0xa4, 0xdd, 0x38, 0xdf, 0xc0, 0x9f, - 0x60, 0x99, 0x19, 0xd9, 0x6b, 0x2f, 0xbb, 0xcb, 0xc2, 0x6e, 0x16, 0xf6, 0xe6, 0xe7, 0x6d, 0xfe, - 0xcf, 0xfc, 0x9e, 0xc7, 0x23, 0xd0, 0x8a, 0xbc, 0xb8, 0x77, 0xed, 0xd2, 0xb8, 0x77, 0x75, 0xd4, - 0x4b, 0x52, 0x92, 0x10, 0xea, 0x46, 0xdd, 0x24, 0x25, 0x8c, 0x68, 0xd5, 0xc8, 0x8b, 0xbb, 0x3c, - 0xd6, 0xbd, 0x3a, 0x6a, 0x35, 0x42, 0x12, 0x12, 0xe1, 0xef, 0xf1, 0x5f, 0x32, 0xa5, 0xd5, 0xe4, - 0xe5, 0x9e, 0x4b, 0x21, 0x2f, 0xf7, 0x09, 0xc2, 0xb9, 0x7f, 0x6f, 0xf5, 0x58, 0x36, 0x4d, 0x20, - 0x95, 0x01, 0xeb, 0xaf, 0x0d, 0xb0, 0x73, 0xc6, 0x48, 0x0a, 0x07, 0x24, 0x80, 0xa3, 0x5c, 0x4f, - 0x6b, 0x80, 0x12, 0x43, 0x2c, 0x82, 0xba, 0xd2, 0x56, 0x3a, 0x5b, 0x8e, 0x34, 0xb4, 0x36, 0xa8, - 0x06, 0x90, 0xfa, 0x29, 0x4a, 0x18, 0x22, 0x58, 0xdf, 0x10, 0xb1, 0x55, 0x97, 0xb6, 0x0b, 0xd4, - 0x74, 0x82, 0xc7, 0x2e, 0xd5, 0x8b, 0xb2, 0x30, 0x9d, 0xe0, 0x3e, 0xd5, 0xbe, 0x05, 0xdb, 0x5c, - 0x7b, 0xec, 0x4d, 0x19, 0x1c, 0xfb, 0x24, 0x80, 0xfa, 0x66, 0x5b, 0xe9, 0xd4, 0xec, 0xfa, 0x2c, - 0x33, 0x6b, 0xbf, 0xf4, 0xcf, 0x86, 0xf6, 0x94, 0x89, 0x06, 0x9c, 0x1a, 0xcf, 0x5b, 0x58, 0x5a, - 0x13, 0xa8, 0x94, 0x4c, 0x52, 0x1f, 0xea, 0x25, 0x71, 0x5c, 0x6e, 0x69, 0x3a, 0x28, 0x7b, 0x13, - 0x14, 0x05, 0x30, 0xd5, 0x55, 0x11, 0x58, 0x98, 0xda, 0x08, 0x34, 0x11, 0xa6, 0xcc, 0xc5, 0x0c, - 0xb9, 0x0c, 0x8e, 0x13, 0x98, 0xc6, 0x88, 0x52, 0xde, 0x6d, 0xb9, 0xad, 0x74, 0xaa, 0xc7, 0xfb, - 0xdd, 0x15, 0x86, 0xdd, 0xbe, 0xef, 0x43, 0x4a, 0x07, 0x04, 0x5f, 0xa0, 0xd0, 0xd9, 0x5d, 0x29, - 0x1c, 0x2d, 0xeb, 0xac, 0xff, 0x36, 0xc0, 0xc1, 0xe9, 0xcb, 0xc8, 0x80, 0x60, 0x96, 0xba, 0x3e, - 0x7b, 0x2c, 0x54, 0x0d, 0x50, 0x72, 0x83, 0x18, 0x61, 0x41, 0x68, 0xcb, 0x91, 0x86, 0x76, 0x08, - 0xca, 0x1c, 0xdb, 0x18, 0x05, 0x82, 0xc4, 0xa6, 0x0d, 0x66, 0x99, 0xa9, 0x72, 0x46, 0xa7, 0x3f, - 0x3a, 0x2a, 0x0f, 0x9d, 0x06, 0xbc, 0x34, 0x72, 0x3d, 0x18, 0xe5, 0x4c, 0xa4, 0xa1, 0xed, 0x83, - 0x0a, 0xc2, 0x88, 0x8d, 0x63, 0x1a, 0x0a, 0x06, 0x35, 0xa7, 0xcc, 0xed, 0x21, 0x0d, 0xb5, 0x9f, - 0x41, 0xe9, 0x62, 0x82, 0x03, 0xaa, 0x57, 0xda, 0xc5, 0x4e, 0xf5, 0x78, 0x47, 0xb0, 0xe1, 0xcb, - 0xc3, 0xd9, 0x0c, 0x08, 0xc2, 0xf6, 0xd7, 0x37, 0x99, 0x59, 0xf8, 0xf7, 0x99, 0x79, 0x18, 0x22, - 0x76, 0x39, 0xf1, 0xba, 0x3e, 0x89, 0x7b, 0x11, 0xc2, 0xb0, 0x17, 0x79, 0xf1, 0x37, 0x34, 0xf8, - 0x2d, 0x5f, 0x25, 0x9e, 0x4b, 0x1d, 0x79, 0x98, 0xf5, 0x54, 0x01, 0x7b, 0x43, 0x14, 0xa6, 0x1f, - 0x01, 0x56, 0x0b, 0x54, 0xfc, 0x5c, 0x22, 0xe7, 0xb5, 0xb4, 0xdf, 0x0d, 0x99, 0x09, 0xaa, 0xb1, - 0x6c, 0x55, 0xf0, 0x51, 0x05, 0x1f, 0x90, 0xbb, 0x86, 0x34, 0xb4, 0xfe, 0x54, 0xc0, 0xe7, 0xe7, - 0x49, 0xe0, 0x32, 0xd8, 0xe7, 0x83, 0x78, 0xef, 0x8b, 0x1c, 0x81, 0x2d, 0x0c, 0xaf, 0xc7, 0x72, - 0xc4, 0xe2, 0x2e, 0x76, 0x63, 0x9e, 0x99, 0xf5, 0xa9, 0x1b, 0x47, 0x3f, 0x58, 0xcb, 0x90, 0xe5, - 0x54, 0x30, 0xbc, 0x16, 0x92, 0x6f, 0xbb, 0xa4, 0x75, 0x09, 0xb4, 0x41, 0x04, 0xdd, 0xf4, 0xc3, - 0x34, 0xb7, 0xaa, 0x54, 0x7c, 0x45, 0xe9, 0x7f, 0x05, 0xd4, 0x47, 0x08, 0x73, 0x7e, 0x74, 0x29, - 0xf4, 0xd5, 0x9a, 0x90, 0x5d, 0x9f, 0x67, 0x66, 0x4d, 0xde, 0x44, 0xb8, 0xad, 0x85, 0xf4, 0x77, - 0xaf, 0x91, 0xb6, 0x9b, 0xf3, 0xcc, 0xd4, 0x64, 0xf6, 0x4a, 0xd0, 0x5a, 0x6f, 0xe9, 0x7b, 0xde, - 0x92, 0x98, 0x22, 0x1f, 0x7d, 0xb1, 0xb3, 0x69, 0x1b, 0xb3, 0xcc, 0x2c, 0xcb, 0x31, 0xd2, 0x79, - 0x66, 0x7e, 0x26, 0x4f, 0x58, 0x24, 0x59, 0x4e, 0x59, 0x8e, 0x96, 0x5a, 0x4f, 0x14, 0xa0, 0x9d, - 0xe3, 0xe4, 0x93, 0xea, 0xf9, 0x6f, 0x05, 0x7c, 0x21, 0xd7, 0x6d, 0xf1, 0xd7, 0x39, 0x63, 0x2e, - 0x9b, 0xd0, 0xc7, 0x1c, 0xad, 0x76, 0x02, 0x54, 0x2a, 0x54, 0xc4, 0x7a, 0x6d, 0x1f, 0x1f, 0xac, - 0xbd, 0x91, 0xeb, 0x8d, 0x38, 0x79, 0xaa, 0xfd, 0xd3, 0xcd, 0xbd, 0x51, 0xb8, 0xbb, 0x37, 0x0a, - 0xff, 0xcc, 0x0c, 0xe5, 0x66, 0x66, 0x28, 0xb7, 0x33, 0x43, 0x79, 0x3e, 0x33, 0x94, 0x3f, 0x1e, - 0x8c, 0xc2, 0xed, 0x83, 0x51, 0xb8, 0x7b, 0x30, 0x0a, 0xbf, 0x7e, 0xf9, 0xa6, 0x77, 0xe3, 0x77, - 0xf9, 0x31, 0x12, 0xcf, 0x87, 0xa7, 0x8a, 0x4f, 0xd1, 0xc9, 0x8b, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xe7, 0x86, 0xc8, 0x59, 0xfc, 0x06, 0x00, 0x00, + // 712 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x55, 0xcd, 0x6e, 0xd3, 0x4a, + 0x14, 0x8e, 0x9b, 0xc6, 0x69, 0x27, 0x51, 0x6f, 0xea, 0x9b, 0xa6, 0xbe, 0xe9, 0x95, 0x1d, 0xb9, + 0x57, 0x57, 0x91, 0xae, 0x6e, 0xa2, 0xb6, 0x12, 0x02, 0x76, 0x71, 0xd8, 0x14, 0xa9, 0x52, 0xe4, + 0x52, 0x21, 0xb1, 0x89, 0xfc, 0x33, 0x4d, 0x47, 0xd8, 0x33, 0x96, 0x67, 0xd2, 0x92, 0xb7, 0xe0, + 0x01, 0x10, 0x3b, 0x04, 0x62, 0x83, 0x58, 0xf3, 0x02, 0x5d, 0x76, 0xd9, 0x95, 0xa1, 0xe9, 0x1b, + 0xe4, 0x09, 0xd0, 0xcc, 0x38, 0x21, 0x41, 0x80, 0x90, 0xa0, 0x48, 0xec, 0x7c, 0xe6, 0x3b, 0x67, + 0xbe, 0x6f, 0xbe, 0x73, 0x3c, 0x03, 0xea, 0xa1, 0x17, 0xb5, 0xcf, 0x5c, 0x1a, 0xb5, 0x4f, 0x77, + 0xda, 0x71, 0x42, 0x62, 0x42, 0xdd, 0xb0, 0x15, 0x27, 0x84, 0x11, 0xad, 0x14, 0x7a, 0x51, 0x8b, + 0x63, 0xad, 0xd3, 0x9d, 0x7a, 0x75, 0x40, 0x06, 0x44, 0xac, 0xb7, 0xf9, 0x97, 0x4c, 0xa9, 0xd7, + 0x78, 0xb9, 0xe7, 0x52, 0xc8, 0xcb, 0x7d, 0x82, 0x70, 0xb6, 0xbe, 0x39, 0xbf, 0x2d, 0x1b, 0xc5, + 0x90, 0x4a, 0xc0, 0x7a, 0xbe, 0x04, 0xd6, 0x0f, 0x19, 0x49, 0x60, 0x97, 0x04, 0xb0, 0x97, 0xf1, + 0x69, 0x55, 0x50, 0x60, 0x88, 0x85, 0x50, 0x57, 0x1a, 0x4a, 0x73, 0xd5, 0x91, 0x81, 0xd6, 0x00, + 0xa5, 0x00, 0x52, 0x3f, 0x41, 0x31, 0x43, 0x04, 0xeb, 0x4b, 0x02, 0x9b, 0x5f, 0xd2, 0x36, 0x80, + 0x9a, 0x0c, 0x71, 0xdf, 0xa5, 0x7a, 0x5e, 0x16, 0x26, 0x43, 0xdc, 0xa1, 0xda, 0x2d, 0xb0, 0xc6, + 0xb9, 0xfb, 0xde, 0x88, 0xc1, 0xbe, 0x4f, 0x02, 0xa8, 0x2f, 0x37, 0x94, 0x66, 0xd9, 0xae, 0x8c, + 0x53, 0xb3, 0xfc, 0xb0, 0x73, 0x78, 0x60, 0x8f, 0x98, 0x10, 0xe0, 0x94, 0x79, 0xde, 0x34, 0xd2, + 0x6a, 0x40, 0xa5, 0x64, 0x98, 0xf8, 0x50, 0x2f, 0x88, 0xed, 0xb2, 0x48, 0xd3, 0x41, 0xd1, 0x1b, + 0xa2, 0x30, 0x80, 0x89, 0xae, 0x0a, 0x60, 0x1a, 0x6a, 0x3d, 0x50, 0x43, 0x98, 0x32, 0x17, 0x33, + 0xe4, 0x32, 0xd8, 0x8f, 0x61, 0x12, 0x21, 0x4a, 0xb9, 0xda, 0x62, 0x43, 0x69, 0x96, 0x76, 0xff, + 0x6a, 0xcd, 0x79, 0xd8, 0xea, 0xf8, 0x3e, 0xa4, 0xb4, 0x4b, 0xf0, 0x31, 0x1a, 0x38, 0x1b, 0x73, + 0x85, 0xbd, 0x59, 0x9d, 0xf5, 0x62, 0x09, 0x6c, 0xed, 0x7f, 0x42, 0xba, 0x04, 0xb3, 0xc4, 0xf5, + 0xd9, 0x4d, 0x59, 0x55, 0x05, 0x05, 0x37, 0x88, 0x10, 0x16, 0x0e, 0xad, 0x3a, 0x32, 0xd0, 0xb6, + 0x41, 0x91, 0xdb, 0xd6, 0x47, 0x81, 0x70, 0x62, 0xd9, 0x06, 0xe3, 0xd4, 0x54, 0xb9, 0x47, 0xfb, + 0xf7, 0x1c, 0x95, 0x43, 0xfb, 0x01, 0x2f, 0x0d, 0x5d, 0x0f, 0x86, 0x99, 0x27, 0x32, 0xd0, 0x2a, + 0x20, 0x1f, 0xd1, 0x81, 0x38, 0x7e, 0xd9, 0xe1, 0x9f, 0xda, 0x03, 0x50, 0x38, 0x1e, 0xe2, 0x80, + 0xea, 0x2b, 0x8d, 0x7c, 0xb3, 0xb4, 0xbb, 0x2e, 0x2c, 0xe1, 0x33, 0xc3, 0x2d, 0xe9, 0x12, 0x84, + 0xed, 0xff, 0xce, 0x53, 0x33, 0xf7, 0xfa, 0xbd, 0xb9, 0x3d, 0x40, 0xec, 0x64, 0xe8, 0xb5, 0x7c, + 0x12, 0xb5, 0x43, 0x84, 0x61, 0x3b, 0xf4, 0xa2, 0xff, 0x69, 0xf0, 0x38, 0x9b, 0x20, 0x9e, 0x4b, + 0x1d, 0xb9, 0x99, 0xf5, 0x4e, 0x01, 0x9b, 0x07, 0x68, 0x90, 0xfc, 0x02, 0x8f, 0xea, 0x60, 0xc5, + 0xcf, 0x28, 0x32, 0x9b, 0x66, 0xf1, 0xf7, 0x39, 0x95, 0x79, 0xa2, 0xce, 0x3c, 0xb1, 0x9e, 0x29, + 0xe0, 0xcf, 0xa3, 0x38, 0x70, 0x19, 0xec, 0x70, 0xc3, 0x7f, 0x58, 0xf9, 0x0e, 0x58, 0xc5, 0xf0, + 0xac, 0x2f, 0x5b, 0x29, 0xc4, 0xdb, 0xd5, 0x49, 0x6a, 0x56, 0x46, 0x6e, 0x14, 0xde, 0xb5, 0x66, + 0x90, 0xe5, 0xac, 0x60, 0x78, 0x26, 0x28, 0xbf, 0x75, 0x2a, 0xeb, 0x04, 0x68, 0xdd, 0x10, 0xba, + 0xc9, 0xcf, 0x11, 0x37, 0xcf, 0x94, 0xff, 0x8c, 0xe9, 0x8d, 0x02, 0x2a, 0x3d, 0x84, 0xb9, 0x61, + 0x74, 0x46, 0xf4, 0xef, 0x02, 0x91, 0x5d, 0x99, 0xa4, 0x66, 0x59, 0x9e, 0x44, 0x2c, 0x5b, 0x53, + 0xea, 0xdb, 0x5f, 0xa0, 0xb6, 0x6b, 0x93, 0xd4, 0xd4, 0x64, 0xf6, 0x1c, 0x68, 0x2d, 0x4a, 0xba, + 0xc3, 0x25, 0x89, 0xb6, 0xf1, 0x5e, 0xe7, 0x9b, 0xcb, 0xb6, 0x31, 0x4e, 0xcd, 0xa2, 0xec, 0x1b, + 0x9d, 0xa4, 0xe6, 0x1f, 0x72, 0x87, 0x69, 0x92, 0xe5, 0x14, 0x65, 0x2f, 0xa9, 0xf5, 0x56, 0x01, + 0xda, 0x11, 0x8e, 0x7f, 0x2b, 0xcd, 0x2f, 0x15, 0xf0, 0xb7, 0x1c, 0xb7, 0xe9, 0xbf, 0x72, 0xc8, + 0x5c, 0x36, 0xa4, 0x37, 0xd9, 0x5a, 0x6d, 0x0f, 0xa8, 0x54, 0xb0, 0x88, 0xf1, 0x5a, 0xdb, 0xdd, + 0x5a, 0xb8, 0x0b, 0x17, 0x85, 0x38, 0x59, 0xaa, 0x7d, 0xff, 0xfc, 0xca, 0xc8, 0x5d, 0x5e, 0x19, + 0xb9, 0x57, 0x63, 0x43, 0x39, 0x1f, 0x1b, 0xca, 0xc5, 0xd8, 0x50, 0x3e, 0x8c, 0x0d, 0xe5, 0xe9, + 0xb5, 0x91, 0xbb, 0xb8, 0x36, 0x72, 0x97, 0xd7, 0x46, 0xee, 0xd1, 0x3f, 0x5f, 0xbb, 0x28, 0x9e, + 0xc8, 0x47, 0x47, 0xdc, 0x17, 0x9e, 0x2a, 0x9e, 0x9c, 0xbd, 0x8f, 0x01, 0x00, 0x00, 0xff, 0xff, + 0xd0, 0xa1, 0x87, 0xa6, 0xe4, 0x06, 0x00, 0x00, } func (this *StoreCodeProposal) Equal(that interface{}) bool { @@ -532,7 +531,7 @@ func (this *InstantiateContractProposal) Equal(that interface{}) bool { if this.Label != that1.Label { return false } - if !bytes.Equal(this.InitMsg, that1.InitMsg) { + if !bytes.Equal(this.Msg, that1.Msg) { return false } if len(this.Funds) != len(that1.Funds) { @@ -579,7 +578,7 @@ func (this *MigrateContractProposal) Equal(that interface{}) bool { if this.CodeID != that1.CodeID { return false } - if !bytes.Equal(this.MigrateMsg, that1.MigrateMsg) { + if !bytes.Equal(this.Msg, that1.Msg) { return false } return true @@ -861,10 +860,10 @@ func (m *InstantiateContractProposal) MarshalToSizedBuffer(dAtA []byte) (int, er dAtA[i] = 0x42 } } - if len(m.InitMsg) > 0 { - i -= len(m.InitMsg) - copy(dAtA[i:], m.InitMsg) - i = encodeVarintProposal(dAtA, i, uint64(len(m.InitMsg))) + if len(m.Msg) > 0 { + i -= len(m.Msg) + copy(dAtA[i:], m.Msg) + i = encodeVarintProposal(dAtA, i, uint64(len(m.Msg))) i-- dAtA[i] = 0x3a } @@ -931,10 +930,10 @@ func (m *MigrateContractProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l - if len(m.MigrateMsg) > 0 { - i -= len(m.MigrateMsg) - copy(dAtA[i:], m.MigrateMsg) - i = encodeVarintProposal(dAtA, i, uint64(len(m.MigrateMsg))) + if len(m.Msg) > 0 { + i -= len(m.Msg) + copy(dAtA[i:], m.Msg) + i = encodeVarintProposal(dAtA, i, uint64(len(m.Msg))) i-- dAtA[i] = 0x32 } @@ -1305,7 +1304,7 @@ func (m *InstantiateContractProposal) Size() (n int) { if l > 0 { n += 1 + l + sovProposal(uint64(l)) } - l = len(m.InitMsg) + l = len(m.Msg) if l > 0 { n += 1 + l + sovProposal(uint64(l)) } @@ -1343,7 +1342,7 @@ func (m *MigrateContractProposal) Size() (n int) { if m.CodeID != 0 { n += 1 + sovProposal(uint64(m.CodeID)) } - l = len(m.MigrateMsg) + l = len(m.Msg) if l > 0 { n += 1 + l + sovProposal(uint64(l)) } @@ -1964,7 +1963,7 @@ func (m *InstantiateContractProposal) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InitMsg", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Msg", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -1991,9 +1990,9 @@ func (m *InstantiateContractProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.InitMsg = append(m.InitMsg[:0], dAtA[iNdEx:postIndex]...) - if m.InitMsg == nil { - m.InitMsg = []byte{} + m.Msg = append(m.Msg[:0], dAtA[iNdEx:postIndex]...) + if m.Msg == nil { + m.Msg = []byte{} } iNdEx = postIndex case 8: @@ -2229,7 +2228,7 @@ func (m *MigrateContractProposal) Unmarshal(dAtA []byte) error { } case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MigrateMsg", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Msg", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -2256,9 +2255,9 @@ func (m *MigrateContractProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.MigrateMsg = append(m.MigrateMsg[:0], dAtA[iNdEx:postIndex]...) - if m.MigrateMsg == nil { - m.MigrateMsg = []byte{} + m.Msg = append(m.Msg[:0], dAtA[iNdEx:postIndex]...) + if m.Msg == nil { + m.Msg = []byte{} } iNdEx = postIndex default: From d5a0131087dbfa292b9fcaab90c2bc5e318d4b74 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Tue, 27 Jul 2021 09:34:31 +0200 Subject: [PATCH 33/90] Changed references in code - 2 broken tests --- x/wasm/client/cli/gov_tx.go | 4 +- x/wasm/client/cli/new_tx.go | 8 +-- x/wasm/client/cli/tx.go | 12 ++-- x/wasm/client/rest/gov.go | 4 +- x/wasm/client/rest/new_tx.go | 8 +-- x/wasm/client/rest/tx.go | 12 ++-- x/wasm/genesis_test.go | 8 +-- x/wasm/keeper/genesis_test.go | 2 +- x/wasm/keeper/handler_plugin_encoders.go | 20 +++--- x/wasm/keeper/handler_plugin_encoders_test.go | 20 +++--- x/wasm/keeper/msg_server.go | 4 +- x/wasm/keeper/proposal_handler.go | 5 +- x/wasm/keeper/proposal_integration_test.go | 6 +- x/wasm/keeper/test_common.go | 2 +- x/wasm/module_test.go | 24 +++---- x/wasm/types/proposal.go | 16 ++--- x/wasm/types/proposal_test.go | 20 +++--- x/wasm/types/test_fixtures.go | 14 ++-- x/wasm/types/tx.go | 4 +- x/wasm/types/tx_test.go | 68 +++++++++---------- x/wasm/types/wasmer_engine.go | 2 +- 21 files changed, 131 insertions(+), 132 deletions(-) diff --git a/x/wasm/client/cli/gov_tx.go b/x/wasm/client/cli/gov_tx.go index bf8d759175..ae3ae23062 100644 --- a/x/wasm/client/cli/gov_tx.go +++ b/x/wasm/client/cli/gov_tx.go @@ -137,7 +137,7 @@ func ProposalInstantiateContractCmd() *cobra.Command { Admin: src.Admin, CodeID: src.CodeID, Label: src.Label, - InitMsg: src.InitMsg, + Msg: src.Msg, Funds: src.Funds, } @@ -212,7 +212,7 @@ func ProposalMigrateContractCmd() *cobra.Command { Description: proposalDescr, Contract: src.Contract, CodeID: src.CodeID, - MigrateMsg: src.MigrateMsg, + Msg: src.Msg, RunAs: runAs, } diff --git a/x/wasm/client/cli/new_tx.go b/x/wasm/client/cli/new_tx.go index a6717d35bf..f1169d964a 100644 --- a/x/wasm/client/cli/new_tx.go +++ b/x/wasm/client/cli/new_tx.go @@ -45,10 +45,10 @@ func parseMigrateContractArgs(args []string, cliCtx client.Context) (types.MsgMi migrateMsg := args[2] msg := types.MsgMigrateContract{ - Sender: cliCtx.GetFromAddress().String(), - Contract: args[0], - CodeID: codeID, - MigrateMsg: []byte(migrateMsg), + Sender: cliCtx.GetFromAddress().String(), + Contract: args[0], + CodeID: codeID, + Msg: []byte(migrateMsg), } return msg, nil } diff --git a/x/wasm/client/cli/tx.go b/x/wasm/client/cli/tx.go index b9937921b8..5ce1c0b31e 100644 --- a/x/wasm/client/cli/tx.go +++ b/x/wasm/client/cli/tx.go @@ -207,12 +207,12 @@ func parseInstantiateArgs(rawCodeID, initMsg string, sender sdk.AccAddress, flag // build and sign the transaction, then broadcast to Tendermint msg := types.MsgInstantiateContract{ - Sender: sender.String(), - CodeID: codeID, - Label: label, - Funds: amount, - InitMsg: []byte(initMsg), - Admin: adminStr, + Sender: sender.String(), + CodeID: codeID, + Label: label, + Funds: amount, + Msg: []byte(initMsg), + Admin: adminStr, } return msg, nil } diff --git a/x/wasm/client/rest/gov.go b/x/wasm/client/rest/gov.go index 168c43bbe3..958d3e75f3 100644 --- a/x/wasm/client/rest/gov.go +++ b/x/wasm/client/rest/gov.go @@ -92,7 +92,7 @@ func (s InstantiateProposalJSONReq) Content() govtypes.Content { Admin: s.Admin, CodeID: s.Code, Label: s.Label, - InitMsg: s.InitMsg, + Msg: s.InitMsg, Funds: s.Funds, } } @@ -141,7 +141,7 @@ func (s MigrateProposalJSONReq) Content() govtypes.Content { Description: s.Description, Contract: s.Contract, CodeID: s.Code, - MigrateMsg: s.MigrateMsg, + Msg: s.MigrateMsg, RunAs: s.RunAs, } } diff --git a/x/wasm/client/rest/new_tx.go b/x/wasm/client/rest/new_tx.go index 725188fa56..2218fee601 100644 --- a/x/wasm/client/rest/new_tx.go +++ b/x/wasm/client/rest/new_tx.go @@ -70,10 +70,10 @@ func migrateContractHandlerFn(cliCtx client.Context) http.HandlerFunc { } msg := &types.MsgMigrateContract{ - Sender: req.BaseReq.From, - Contract: contractAddr, - CodeID: req.CodeID, - MigrateMsg: req.MigrateMsg, + Sender: req.BaseReq.From, + Contract: contractAddr, + CodeID: req.CodeID, + Msg: req.MigrateMsg, } if err := msg.ValidateBasic(); err != nil { rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) diff --git a/x/wasm/client/rest/tx.go b/x/wasm/client/rest/tx.go index 67546c59f5..18c0b9f1ce 100644 --- a/x/wasm/client/rest/tx.go +++ b/x/wasm/client/rest/tx.go @@ -111,12 +111,12 @@ func instantiateContractHandlerFn(cliCtx client.Context) http.HandlerFunc { } msg := types.MsgInstantiateContract{ - Sender: req.BaseReq.From, - CodeID: codeID, - Label: req.Label, - Funds: req.Deposit, - InitMsg: req.InitMsg, - Admin: req.Admin, + Sender: req.BaseReq.From, + CodeID: codeID, + Label: req.Label, + Funds: req.Deposit, + Msg: req.InitMsg, + Admin: req.Admin, } if err := msg.ValidateBasic(); err != nil { diff --git a/x/wasm/genesis_test.go b/x/wasm/genesis_test.go index 02f2e97195..cfb648061c 100644 --- a/x/wasm/genesis_test.go +++ b/x/wasm/genesis_test.go @@ -41,10 +41,10 @@ func TestInitGenesis(t *testing.T) { require.NoError(t, err) initCmd := MsgInstantiateContract{ - Sender: creator.String(), - CodeID: firstCodeID, - InitMsg: initMsgBz, - Funds: deposit, + Sender: creator.String(), + CodeID: firstCodeID, + Msg: initMsgBz, + Funds: deposit, } res, err = h(data.ctx, &initCmd) require.NoError(t, err) diff --git a/x/wasm/keeper/genesis_test.go b/x/wasm/keeper/genesis_test.go index d5f8e42655..5297554ed4 100644 --- a/x/wasm/keeper/genesis_test.go +++ b/x/wasm/keeper/genesis_test.go @@ -592,7 +592,7 @@ func TestSupportedGenMsgTypes(t *testing.T) { Sender: myAddress.String(), CodeID: 1, Label: "testing", - InitMsg: HackatomExampleInitMsg{ + Msg: HackatomExampleInitMsg{ Verifier: verifierAddress, Beneficiary: beneficiaryAddress, }.GetBytes(t), diff --git a/x/wasm/keeper/handler_plugin_encoders.go b/x/wasm/keeper/handler_plugin_encoders.go index 94754d3697..fc736e4fd0 100644 --- a/x/wasm/keeper/handler_plugin_encoders.go +++ b/x/wasm/keeper/handler_plugin_encoders.go @@ -225,20 +225,20 @@ func EncodeWasmMsg(sender sdk.AccAddress, msg *wasmvmtypes.WasmMsg) ([]sdk.Msg, } sdkMsg := types.MsgInstantiateContract{ - Sender: sender.String(), - CodeID: msg.Instantiate.CodeID, - Label: msg.Instantiate.Label, - InitMsg: msg.Instantiate.Msg, - Admin: msg.Instantiate.Admin, - Funds: coins, + Sender: sender.String(), + CodeID: msg.Instantiate.CodeID, + Label: msg.Instantiate.Label, + Msg: msg.Instantiate.Msg, + Admin: msg.Instantiate.Admin, + Funds: coins, } return []sdk.Msg{&sdkMsg}, nil case msg.Migrate != nil: sdkMsg := types.MsgMigrateContract{ - Sender: sender.String(), - Contract: msg.Migrate.ContractAddr, - CodeID: msg.Migrate.NewCodeID, - MigrateMsg: msg.Migrate.Msg, + Sender: sender.String(), + Contract: msg.Migrate.ContractAddr, + CodeID: msg.Migrate.NewCodeID, + Msg: msg.Migrate.Msg, } return []sdk.Msg{&sdkMsg}, nil case msg.ClearAdmin != nil: diff --git a/x/wasm/keeper/handler_plugin_encoders_test.go b/x/wasm/keeper/handler_plugin_encoders_test.go index f176bd1dbd..959bdea074 100644 --- a/x/wasm/keeper/handler_plugin_encoders_test.go +++ b/x/wasm/keeper/handler_plugin_encoders_test.go @@ -177,12 +177,12 @@ func TestEncoding(t *testing.T) { }, output: []sdk.Msg{ &types.MsgInstantiateContract{ - Sender: addr1.String(), - CodeID: 7, - Label: "myLabel", - InitMsg: jsonMsg, - Funds: sdk.NewCoins(sdk.NewInt64Coin("eth", 123)), - Admin: addr2.String(), + Sender: addr1.String(), + CodeID: 7, + Label: "myLabel", + Msg: jsonMsg, + Funds: sdk.NewCoins(sdk.NewInt64Coin("eth", 123)), + Admin: addr2.String(), }, }, }, @@ -199,10 +199,10 @@ func TestEncoding(t *testing.T) { }, output: []sdk.Msg{ &types.MsgMigrateContract{ - Sender: addr2.String(), - Contract: addr1.String(), - CodeID: 12, - MigrateMsg: jsonMsg, + Sender: addr2.String(), + Contract: addr1.String(), + CodeID: 12, + Msg: jsonMsg, }, }, }, diff --git a/x/wasm/keeper/msg_server.go b/x/wasm/keeper/msg_server.go index 70e0d61adf..adb78d462a 100644 --- a/x/wasm/keeper/msg_server.go +++ b/x/wasm/keeper/msg_server.go @@ -62,7 +62,7 @@ func (m msgServer) InstantiateContract(goCtx context.Context, msg *types.MsgInst adminAddr = sdk.AccAddress(msg.Admin) } - contractAddr, data, err := m.keeper.Instantiate(ctx, msg.CodeID, sdk.AccAddress(msg.Sender), adminAddr, msg.InitMsg, msg.Label, msg.Funds) + contractAddr, data, err := m.keeper.Instantiate(ctx, msg.CodeID, sdk.AccAddress(msg.Sender), adminAddr, msg.Msg, msg.Label, msg.Funds) if err != nil { return nil, err } @@ -178,7 +178,7 @@ func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateC return nil, sdkerrors.Wrap(err, "contract") } - data, err := m.keeper.Migrate(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.CodeID, msg.MigrateMsg) + data, err := m.keeper.Migrate(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.CodeID, msg.Msg) if err != nil { return nil, err } diff --git a/x/wasm/keeper/proposal_handler.go b/x/wasm/keeper/proposal_handler.go index 46b1b98eaa..d20778caa7 100644 --- a/x/wasm/keeper/proposal_handler.go +++ b/x/wasm/keeper/proposal_handler.go @@ -88,8 +88,7 @@ func handleInstantiateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p typ return sdkerrors.Wrap(err, "admin") } - - contractAddr, data, err := k.Instantiate(ctx, p.CodeID, sdk.AccAddress(p.RunAs), sdk.AccAddress(p.Admin), p.InitMsg, p.Label, p.Funds) + contractAddr, data, err := k.Instantiate(ctx, p.CodeID, sdk.AccAddress(p.RunAs), sdk.AccAddress(p.Admin), p.Msg, p.Label, p.Funds) if err != nil { return err } @@ -117,7 +116,7 @@ func handleMigrateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.M if err != nil { return sdkerrors.Wrap(err, "run as address") } - data, err := k.Migrate(ctx, sdk.AccAddress(p.Contract), sdk.AccAddress(p.RunAs), p.CodeID, p.MigrateMsg) + data, err := k.Migrate(ctx, sdk.AccAddress(p.Contract), sdk.AccAddress(p.RunAs), p.CodeID, p.Msg) if err != nil { return err } diff --git a/x/wasm/keeper/proposal_integration_test.go b/x/wasm/keeper/proposal_integration_test.go index 1c0dc1cad2..2ee57cae0c 100644 --- a/x/wasm/keeper/proposal_integration_test.go +++ b/x/wasm/keeper/proposal_integration_test.go @@ -120,7 +120,7 @@ func TestInstantiateProposal(t *testing.T) { Operation: types.ContractCodeHistoryOperationTypeInit, CodeID: src.CodeID, Updated: types.NewAbsoluteTxPosition(ctx), - Msg: src.InitMsg, + Msg: src.Msg, }} assert.Equal(t, expHistory, wasmKeeper.GetContractHistory(ctx, sdk.AccAddress(contractAddr))) // and event @@ -175,7 +175,7 @@ func TestMigrateProposal(t *testing.T) { Description: "Bar", CodeID: 2, Contract: contractAddr.String(), - MigrateMsg: migMsgBz, + Msg: migMsgBz, RunAs: otherAddress.String(), } @@ -205,7 +205,7 @@ func TestMigrateProposal(t *testing.T) { Operation: types.ContractCodeHistoryOperationTypeMigrate, CodeID: src.CodeID, Updated: types.NewAbsoluteTxPosition(ctx), - Msg: src.MigrateMsg, + Msg: src.Msg, }} assert.Equal(t, expHistory, wasmKeeper.GetContractHistory(ctx, contractAddr)) // and events emitted diff --git a/x/wasm/keeper/test_common.go b/x/wasm/keeper/test_common.go index 6ab5a64d0c..ae7d0737c7 100644 --- a/x/wasm/keeper/test_common.go +++ b/x/wasm/keeper/test_common.go @@ -391,7 +391,7 @@ func handleInstantiate(ctx sdk.Context, k types.ContractOpsKeeper, msg *types.Ms } contractAddr, _, err := k.Instantiate(ctx, msg.CodeID, sdk.AccAddress(msg.Sender), sdk.AccAddress(msg.Admin), - msg.InitMsg, msg.Label, msg.Funds) + msg.Msg, msg.Label, msg.Funds) if err != nil { return nil, err } diff --git a/x/wasm/module_test.go b/x/wasm/module_test.go index 3b52dd9d5f..7d1e52ba83 100644 --- a/x/wasm/module_test.go +++ b/x/wasm/module_test.go @@ -170,10 +170,10 @@ func TestHandleInstantiate(t *testing.T) { // create with no balance is also legal initCmd := MsgInstantiateContract{ - Sender: creator.String(), - CodeID: firstCodeID, - InitMsg: initMsgBz, - Funds: nil, + Sender: creator.String(), + CodeID: firstCodeID, + Msg: initMsgBz, + Funds: nil, } res, err = h(data.ctx, &initCmd) require.NoError(t, err) @@ -403,10 +403,10 @@ func TestHandleExecute(t *testing.T) { require.NoError(t, err) initCmd := MsgInstantiateContract{ - Sender: creator.String(), - CodeID: firstCodeID, - InitMsg: initMsgBz, - Funds: deposit, + Sender: creator.String(), + CodeID: firstCodeID, + Msg: initMsgBz, + Funds: deposit, } res, err = h(data.ctx, &initCmd) require.NoError(t, err) @@ -527,10 +527,10 @@ func TestHandleExecuteEscrow(t *testing.T) { require.NoError(t, err) initCmd := MsgInstantiateContract{ - Sender: creator.String(), - CodeID: firstCodeID, - InitMsg: initMsgBz, - Funds: deposit, + Sender: creator.String(), + CodeID: firstCodeID, + Msg: initMsgBz, + Funds: deposit, } res, err = h(data.ctx, &initCmd) require.NoError(t, err) diff --git a/x/wasm/types/proposal.go b/x/wasm/types/proposal.go index 5a665a49a6..71c66a8623 100644 --- a/x/wasm/types/proposal.go +++ b/x/wasm/types/proposal.go @@ -188,7 +188,7 @@ func (p InstantiateContractProposal) ValidateBasic() error { return err } } - if !json.Valid(p.InitMsg) { + if !json.Valid(p.Msg) { return sdkerrors.Wrap(ErrInvalid, "init msg json") } @@ -204,9 +204,9 @@ func (p InstantiateContractProposal) String() string { Admin: %s Code id: %d Label: %s - InitMsg: %q + Msg: %q Funds: %s -`, p.Title, p.Description, p.RunAs, p.Admin, p.CodeID, p.Label, p.InitMsg, p.Funds) +`, p.Title, p.Description, p.RunAs, p.Admin, p.CodeID, p.Label, p.Msg, p.Funds) } // MarshalYAML pretty prints the init message @@ -227,7 +227,7 @@ func (p InstantiateContractProposal) MarshalYAML() (interface{}, error) { Admin: p.Admin, CodeID: p.CodeID, Label: p.Label, - InitMsg: string(p.InitMsg), + InitMsg: string(p.Msg), Funds: p.Funds, }, nil } @@ -258,7 +258,7 @@ func (p MigrateContractProposal) ValidateBasic() error { if err := sdk.ValidateAccAddress(p.RunAs); err != nil { return sdkerrors.Wrap(err, "run as") } - if !json.Valid(p.MigrateMsg) { + if !json.Valid(p.Msg) { return sdkerrors.Wrap(ErrInvalid, "migrate msg json") } return nil @@ -272,8 +272,8 @@ func (p MigrateContractProposal) String() string { Contract: %s Code id: %d Run as: %s - MigrateMsg %q -`, p.Title, p.Description, p.Contract, p.CodeID, p.RunAs, p.MigrateMsg) + Msg %q +`, p.Title, p.Description, p.Contract, p.CodeID, p.RunAs, p.Msg) } // MarshalYAML pretty prints the migrate message @@ -290,7 +290,7 @@ func (p MigrateContractProposal) MarshalYAML() (interface{}, error) { Description: p.Description, Contract: p.Contract, CodeID: p.CodeID, - MigrateMsg: string(p.MigrateMsg), + MigrateMsg: string(p.Msg), RunAs: p.RunAs, }, nil } diff --git a/x/wasm/types/proposal_test.go b/x/wasm/types/proposal_test.go index 7c5fc4b86a..0babd2da1d 100644 --- a/x/wasm/types/proposal_test.go +++ b/x/wasm/types/proposal_test.go @@ -198,13 +198,13 @@ func TestValidateInstantiateContractProposal(t *testing.T) { }, "without init msg": { src: InstantiateContractProposalFixture(func(p *InstantiateContractProposal) { - p.InitMsg = nil + p.Msg = nil }), expErr: true, }, "with invalid init msg": { src: InstantiateContractProposalFixture(func(p *InstantiateContractProposal) { - p.InitMsg = []byte("not a json string") + p.Msg = []byte("not a json string") }), expErr: true, }, @@ -288,13 +288,13 @@ func TestValidateMigrateContractProposal(t *testing.T) { }, "without migrate msg": { src: MigrateContractProposalFixture(func(p *MigrateContractProposal) { - p.MigrateMsg = nil + p.Msg = nil }), expErr: true, }, "migrate msg with invalid json": { src: MigrateContractProposalFixture(func(p *MigrateContractProposal) { - p.MigrateMsg = []byte("not a json message") + p.Msg = []byte("not a json message") }), expErr: true, }, @@ -529,7 +529,7 @@ func TestProposalStrings(t *testing.T) { Admin: link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5 Code id: 1 Label: testing - InitMsg: "{\"verifier\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\",\"beneficiary\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\"}" + Msg: "{\"verifier\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\",\"beneficiary\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\"}" Funds: 1foo,2bar `, }, @@ -542,7 +542,7 @@ func TestProposalStrings(t *testing.T) { Admin: link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5 Code id: 1 Label: testing - InitMsg: "{\"verifier\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\",\"beneficiary\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\"}" + Msg: "{\"verifier\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\",\"beneficiary\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\"}" Funds: `, }, @@ -555,7 +555,7 @@ func TestProposalStrings(t *testing.T) { Admin: Code id: 1 Label: testing - InitMsg: "{\"verifier\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\",\"beneficiary\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\"}" + Msg: "{\"verifier\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\",\"beneficiary\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\"}" Funds: `, }, @@ -567,7 +567,7 @@ func TestProposalStrings(t *testing.T) { Contract: link1hcttwju93d5m39467gjcq63p5kc4fdcn30dgd8 Code id: 1 Run as: link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5 - MigrateMsg "{\"verifier\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\"}" + Msg: "{\"verifier\":\"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5\"}" `, }, "update admin": { @@ -792,7 +792,7 @@ func TestUnmarshalContentFromJson(t *testing.T) { Admin: "myAdminAddress", CodeID: 1, Label: "testing", - InitMsg: []byte("{}"), + Msg: []byte("{}"), Funds: sdk.NewCoins(sdk.NewCoin("ALX", sdk.NewInt(2)), sdk.NewCoin("BLX", sdk.NewInt(3))), }, }, @@ -813,7 +813,7 @@ func TestUnmarshalContentFromJson(t *testing.T) { RunAs: "myRunAsAddress", Contract: "myContractAddr", CodeID: 1, - MigrateMsg: []byte("{}"), + Msg: []byte("{}"), }, }, } diff --git a/x/wasm/types/test_fixtures.go b/x/wasm/types/test_fixtures.go index 641e341866..e55a86f949 100644 --- a/x/wasm/types/test_fixtures.go +++ b/x/wasm/types/test_fixtures.go @@ -146,11 +146,11 @@ func MsgStoreCodeFixture(mutators ...func(*MsgStoreCode)) *MsgStoreCode { func MsgInstantiateContractFixture(mutators ...func(*MsgInstantiateContract)) *MsgInstantiateContract { const anyAddress = "link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5" r := &MsgInstantiateContract{ - Sender: anyAddress, - Admin: anyAddress, - CodeID: 1, - Label: "testing", - InitMsg: []byte(`{"foo":"bar"}`), + Sender: anyAddress, + Admin: anyAddress, + CodeID: 1, + Label: "testing", + Msg: []byte(`{"foo":"bar"}`), Funds: sdk.Coins{{ Denom: "stake", Amount: sdk.NewInt(1), @@ -223,7 +223,7 @@ func InstantiateContractProposalFixture(mutators ...func(p *InstantiateContractP Admin: anyAddress, CodeID: 1, Label: "testing", - InitMsg: initMsgBz, + Msg: initMsgBz, Funds: nil, } @@ -255,7 +255,7 @@ func MigrateContractProposalFixture(mutators ...func(p *MigrateContractProposal) Description: "Bar", Contract: contractAddr, CodeID: 1, - MigrateMsg: migMsgBz, + Msg: migMsgBz, RunAs: anyAddress, } diff --git a/x/wasm/types/tx.go b/x/wasm/types/tx.go index f270848e4a..983d380ce6 100644 --- a/x/wasm/types/tx.go +++ b/x/wasm/types/tx.go @@ -81,7 +81,7 @@ func (msg MsgInstantiateContract) ValidateBasic() error { return sdkerrors.Wrap(err, "admin") } } - if !json.Valid(msg.InitMsg) { + if !json.Valid(msg.Msg) { return sdkerrors.Wrap(ErrInvalid, "init msg json") } return nil @@ -215,7 +215,7 @@ func (msg MsgMigrateContract) ValidateBasic() error { if err := sdk.ValidateAccAddress(msg.Contract); err != nil { return sdkerrors.Wrap(err, "contract") } - if !json.Valid(msg.MigrateMsg) { + if !json.Valid(msg.Msg) { return sdkerrors.Wrap(ErrInvalid, "migrate msg json") } diff --git a/x/wasm/types/tx_test.go b/x/wasm/types/tx_test.go index 32c6a3d62f..ea44f490f0 100644 --- a/x/wasm/types/tx_test.go +++ b/x/wasm/types/tx_test.go @@ -149,25 +149,25 @@ func TestInstantiateContractValidation(t *testing.T) { }, "correct minimal": { msg: MsgInstantiateContract{ - Sender: goodAddress, - CodeID: firstCodeID, - Label: "foo", - InitMsg: []byte("{}"), + Sender: goodAddress, + CodeID: firstCodeID, + Label: "foo", + Msg: []byte("{}"), }, valid: true, }, "missing code": { msg: MsgInstantiateContract{ - Sender: goodAddress, - Label: "foo", - InitMsg: []byte("{}"), + Sender: goodAddress, + Label: "foo", + Msg: []byte("{}"), }, valid: false, }, "missing label": { msg: MsgInstantiateContract{ - Sender: goodAddress, - InitMsg: []byte("{}"), + Sender: goodAddress, + Msg: []byte("{}"), }, valid: false, }, @@ -180,29 +180,29 @@ func TestInstantiateContractValidation(t *testing.T) { }, "bad sender minimal": { msg: MsgInstantiateContract{ - Sender: badAddress, - CodeID: firstCodeID, - Label: "foo", - InitMsg: []byte("{}"), + Sender: badAddress, + CodeID: firstCodeID, + Label: "foo", + Msg: []byte("{}"), }, valid: false, }, "correct maximal": { msg: MsgInstantiateContract{ - Sender: goodAddress, - CodeID: firstCodeID, - Label: "foo", - InitMsg: []byte(`{"some": "data"}`), - Funds: sdk.Coins{sdk.Coin{Denom: "foobar", Amount: sdk.NewInt(200)}}, + Sender: goodAddress, + CodeID: firstCodeID, + Label: "foo", + Msg: []byte(`{"some": "data"}`), + Funds: sdk.Coins{sdk.Coin{Denom: "foobar", Amount: sdk.NewInt(200)}}, }, valid: true, }, "negative funds": { msg: MsgInstantiateContract{ - Sender: goodAddress, - CodeID: firstCodeID, - Label: "foo", - InitMsg: []byte(`{"some": "data"}`), + Sender: goodAddress, + CodeID: firstCodeID, + Label: "foo", + Msg: []byte(`{"some": "data"}`), // we cannot use sdk.NewCoin() constructors as they panic on creating invalid data (before we can test) Funds: sdk.Coins{sdk.Coin{Denom: "foobar", Amount: sdk.NewInt(-200)}}, }, @@ -210,10 +210,10 @@ func TestInstantiateContractValidation(t *testing.T) { }, "non json init msg": { msg: MsgInstantiateContract{ - Sender: goodAddress, - CodeID: firstCodeID, - Label: "foo", - InitMsg: []byte("invalid-json"), + Sender: goodAddress, + CodeID: firstCodeID, + Label: "foo", + Msg: []byte("invalid-json"), }, valid: false, }, @@ -635,10 +635,10 @@ func TestMsgMigrateContract(t *testing.T) { }{ "all good": { src: MsgMigrateContract{ - Sender: goodAddress, - Contract: anotherGoodAddress, - CodeID: firstCodeID, - MigrateMsg: []byte("{}"), + Sender: goodAddress, + Contract: anotherGoodAddress, + CodeID: firstCodeID, + Msg: []byte("{}"), }, }, "bad sender": { @@ -680,10 +680,10 @@ func TestMsgMigrateContract(t *testing.T) { }, "non json migrateMsg": { src: MsgMigrateContract{ - Sender: goodAddress, - Contract: anotherGoodAddress, - CodeID: firstCodeID, - MigrateMsg: []byte("invalid json"), + Sender: goodAddress, + Contract: anotherGoodAddress, + CodeID: firstCodeID, + Msg: []byte("invalid json"), }, expErr: true, }, diff --git a/x/wasm/types/wasmer_engine.go b/x/wasm/types/wasmer_engine.go index 2d4835d2aa..7dc3abdf63 100644 --- a/x/wasm/types/wasmer_engine.go +++ b/x/wasm/types/wasmer_engine.go @@ -82,7 +82,7 @@ type WasmerEngine interface { // replace it. This allows it to run a migration step if needed, or return an error if unable to migrate // the given data. // - // MigrateMsg has some data on how to perform the migration. + // Msg has some data on how to perform the migration. Migrate( checksum wasmvm.Checksum, env wasmvmtypes.Env, From ee8fae7b39d37d4d27715067e7a5b46dc11719cb Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Tue, 27 Jul 2021 09:38:30 +0200 Subject: [PATCH 34/90] Rename remaining {Init,Migrate}Msg fields --- x/wasm/client/rest/gov.go | 20 ++++++++++---------- x/wasm/client/rest/new_tx.go | 10 +++++----- x/wasm/client/rest/tx.go | 4 ++-- x/wasm/types/proposal.go | 8 ++++---- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/x/wasm/client/rest/gov.go b/x/wasm/client/rest/gov.go index 958d3e75f3..2c50d77fde 100644 --- a/x/wasm/client/rest/gov.go +++ b/x/wasm/client/rest/gov.go @@ -77,11 +77,11 @@ type InstantiateProposalJSONReq struct { RunAs string `json:"run_as" yaml:"run_as"` // Admin is an optional address that can execute migrations - Admin string `json:"admin,omitempty" yaml:"admin"` - Code uint64 `json:"code_id" yaml:"code_id"` - Label string `json:"label" yaml:"label"` - InitMsg json.RawMessage `json:"init_msg" yaml:"init_msg"` - Funds sdk.Coins `json:"funds" yaml:"funds"` + Admin string `json:"admin,omitempty" yaml:"admin"` + Code uint64 `json:"code_id" yaml:"code_id"` + Label string `json:"label" yaml:"label"` + Msg json.RawMessage `json:"msg" yaml:"init_msg"` + Funds sdk.Coins `json:"funds" yaml:"funds"` } func (s InstantiateProposalJSONReq) Content() govtypes.Content { @@ -92,7 +92,7 @@ func (s InstantiateProposalJSONReq) Content() govtypes.Content { Admin: s.Admin, CodeID: s.Code, Label: s.Label, - Msg: s.InitMsg, + Msg: s.Msg, Funds: s.Funds, } } @@ -128,9 +128,9 @@ type MigrateProposalJSONReq struct { Proposer string `json:"proposer" yaml:"proposer"` Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - Contract string `json:"contract" yaml:"contract"` - Code uint64 `json:"code_id" yaml:"code_id"` - MigrateMsg json.RawMessage `json:"msg" yaml:"msg"` + Contract string `json:"contract" yaml:"contract"` + Code uint64 `json:"code_id" yaml:"code_id"` + Msg json.RawMessage `json:"msg" yaml:"msg"` // RunAs is the role that is passed to the contract's environment RunAs string `json:"run_as" yaml:"run_as"` } @@ -141,7 +141,7 @@ func (s MigrateProposalJSONReq) Content() govtypes.Content { Description: s.Description, Contract: s.Contract, CodeID: s.Code, - Msg: s.MigrateMsg, + Msg: s.Msg, RunAs: s.RunAs, } } diff --git a/x/wasm/client/rest/new_tx.go b/x/wasm/client/rest/new_tx.go index 2218fee601..9fe3d28e38 100644 --- a/x/wasm/client/rest/new_tx.go +++ b/x/wasm/client/rest/new_tx.go @@ -16,10 +16,10 @@ func registerNewTxRoutes(cliCtx client.Context, r *mux.Router) { } type migrateContractReq struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - Admin string `json:"admin,omitempty" yaml:"admin"` - CodeID uint64 `json:"code_id" yaml:"code_id"` - MigrateMsg []byte `json:"migrate_msg,omitempty" yaml:"migrate_msg"` + BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` + Admin string `json:"admin,omitempty" yaml:"admin"` + CodeID uint64 `json:"code_id" yaml:"code_id"` + Msg []byte `json:"msg,omitempty" yaml:"migrate_msg"` } type updateContractAdministrateReq struct { @@ -73,7 +73,7 @@ func migrateContractHandlerFn(cliCtx client.Context) http.HandlerFunc { Sender: req.BaseReq.From, Contract: contractAddr, CodeID: req.CodeID, - Msg: req.MigrateMsg, + Msg: req.Msg, } if err := msg.ValidateBasic(); err != nil { rest.WriteErrorResponse(w, http.StatusBadRequest, err.Error()) diff --git a/x/wasm/client/rest/tx.go b/x/wasm/client/rest/tx.go index 18c0b9f1ce..ed725fabd3 100644 --- a/x/wasm/client/rest/tx.go +++ b/x/wasm/client/rest/tx.go @@ -30,7 +30,7 @@ type instantiateContractReq struct { Label string `json:"label" yaml:"label"` Deposit sdk.Coins `json:"deposit" yaml:"deposit"` Admin string `json:"admin,omitempty" yaml:"admin"` - InitMsg []byte `json:"init_msg" yaml:"init_msg"` + Msg []byte `json:"msg" yaml:"init_msg"` } type storeCodeAndInstantiateContractReq struct { @@ -115,7 +115,7 @@ func instantiateContractHandlerFn(cliCtx client.Context) http.HandlerFunc { CodeID: codeID, Label: req.Label, Funds: req.Deposit, - Msg: req.InitMsg, + Msg: req.Msg, Admin: req.Admin, } diff --git a/x/wasm/types/proposal.go b/x/wasm/types/proposal.go index 71c66a8623..f8752f416a 100644 --- a/x/wasm/types/proposal.go +++ b/x/wasm/types/proposal.go @@ -218,7 +218,7 @@ func (p InstantiateContractProposal) MarshalYAML() (interface{}, error) { Admin string `yaml:"admin"` CodeID uint64 `yaml:"code_id"` Label string `yaml:"label"` - InitMsg string `yaml:"init_msg"` + Msg string `yaml:"msg"` Funds sdk.Coins `yaml:"funds"` }{ Title: p.Title, @@ -227,7 +227,7 @@ func (p InstantiateContractProposal) MarshalYAML() (interface{}, error) { Admin: p.Admin, CodeID: p.CodeID, Label: p.Label, - InitMsg: string(p.Msg), + Msg: string(p.Msg), Funds: p.Funds, }, nil } @@ -283,14 +283,14 @@ func (p MigrateContractProposal) MarshalYAML() (interface{}, error) { Description string `yaml:"description"` Contract string `yaml:"contract"` CodeID uint64 `yaml:"code_id"` - MigrateMsg string `yaml:"msg"` + Msg string `yaml:"msg"` RunAs string `yaml:"run_as"` }{ Title: p.Title, Description: p.Description, Contract: p.Contract, CodeID: p.CodeID, - MigrateMsg: string(p.Msg), + Msg: string(p.Msg), RunAs: p.RunAs, }, nil } From 545efc38acae715572fa147c2e625a311a98d52c Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Tue, 27 Jul 2021 09:42:20 +0200 Subject: [PATCH 35/90] Update JSON/YAML parsing and test code --- x/wasm/client/proposal_handler_test.go | 2 +- x/wasm/client/rest/gov.go | 2 +- x/wasm/client/rest/new_tx.go | 2 +- x/wasm/client/rest/tx.go | 2 +- x/wasm/types/proposal_test.go | 10 +++++----- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/x/wasm/client/proposal_handler_test.go b/x/wasm/client/proposal_handler_test.go index 8457f02c65..1072d1a58d 100644 --- a/x/wasm/client/proposal_handler_test.go +++ b/x/wasm/client/proposal_handler_test.go @@ -158,7 +158,7 @@ func TestGovRestHandlers(t *testing.T) { "admin": "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", "code_id": "1", "label": "https://example.com/", - "init_msg": "my/builder:tag", + "msg": "my/builder:tag", "funds": []dict{{"denom": "ustake", "amount": "100"}}, "deposit": []dict{{"denom": "ustake", "amount": "10"}}, "proposer": "link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5", diff --git a/x/wasm/client/rest/gov.go b/x/wasm/client/rest/gov.go index 2c50d77fde..28c44c48f7 100644 --- a/x/wasm/client/rest/gov.go +++ b/x/wasm/client/rest/gov.go @@ -80,7 +80,7 @@ type InstantiateProposalJSONReq struct { Admin string `json:"admin,omitempty" yaml:"admin"` Code uint64 `json:"code_id" yaml:"code_id"` Label string `json:"label" yaml:"label"` - Msg json.RawMessage `json:"msg" yaml:"init_msg"` + Msg json.RawMessage `json:"msg" yaml:"msg"` Funds sdk.Coins `json:"funds" yaml:"funds"` } diff --git a/x/wasm/client/rest/new_tx.go b/x/wasm/client/rest/new_tx.go index 9fe3d28e38..398ae7804d 100644 --- a/x/wasm/client/rest/new_tx.go +++ b/x/wasm/client/rest/new_tx.go @@ -19,7 +19,7 @@ type migrateContractReq struct { BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` Admin string `json:"admin,omitempty" yaml:"admin"` CodeID uint64 `json:"code_id" yaml:"code_id"` - Msg []byte `json:"msg,omitempty" yaml:"migrate_msg"` + Msg []byte `json:"msg,omitempty" yaml:"msg"` } type updateContractAdministrateReq struct { diff --git a/x/wasm/client/rest/tx.go b/x/wasm/client/rest/tx.go index ed725fabd3..7e12b9c71b 100644 --- a/x/wasm/client/rest/tx.go +++ b/x/wasm/client/rest/tx.go @@ -30,7 +30,7 @@ type instantiateContractReq struct { Label string `json:"label" yaml:"label"` Deposit sdk.Coins `json:"deposit" yaml:"deposit"` Admin string `json:"admin,omitempty" yaml:"admin"` - Msg []byte `json:"msg" yaml:"init_msg"` + Msg []byte `json:"msg" yaml:"msg"` } type storeCodeAndInstantiateContractReq struct { diff --git a/x/wasm/types/proposal_test.go b/x/wasm/types/proposal_test.go index 0babd2da1d..72ec04db3a 100644 --- a/x/wasm/types/proposal_test.go +++ b/x/wasm/types/proposal_test.go @@ -647,7 +647,7 @@ run_as: link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5 admin: link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5 code_id: 1 label: testing -init_msg: '{"verifier":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5","beneficiary":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5"}' +msg: '{"verifier":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5","beneficiary":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5"}' funds: - denom: foo amount: "1" @@ -663,7 +663,7 @@ run_as: link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5 admin: link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5 code_id: 1 label: testing -init_msg: '{"verifier":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5","beneficiary":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5"}' +msg: '{"verifier":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5","beneficiary":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5"}' funds: [] `, }, @@ -675,7 +675,7 @@ run_as: link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5 admin: "" code_id: 1 label: testing -init_msg: '{"verifier":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5","beneficiary":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5"}' +msg: '{"verifier":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5","beneficiary":"link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5"}' funds: [] `, }, @@ -780,7 +780,7 @@ func TestUnmarshalContentFromJson(t *testing.T) { "admin": "myAdminAddress", "code_id": 1, "funds": [{"denom": "ALX", "amount": "2"},{"denom": "BLX","amount": "3"}], - "init_msg": "e30=", + "msg": "e30=", "label": "testing", "run_as": "myRunAsAddress" }`, @@ -803,7 +803,7 @@ func TestUnmarshalContentFromJson(t *testing.T) { "description": "bar", "code_id": 1, "contract": "myContractAddr", - "migrate_msg": "e30=", + "msg": "e30=", "run_as": "myRunAsAddress" }`, got: &MigrateContractProposal{}, From 94367c0aeb662f1011cd857c3ba85936fb0fa8fe Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Tue, 27 Jul 2021 14:20:01 +0200 Subject: [PATCH 36/90] Fix up whitespace issues --- x/wasm/types/proposal.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/x/wasm/types/proposal.go b/x/wasm/types/proposal.go index f8752f416a..216153f4ce 100644 --- a/x/wasm/types/proposal.go +++ b/x/wasm/types/proposal.go @@ -204,7 +204,7 @@ func (p InstantiateContractProposal) String() string { Admin: %s Code id: %d Label: %s - Msg: %q + Msg: %q Funds: %s `, p.Title, p.Description, p.RunAs, p.Admin, p.CodeID, p.Label, p.Msg, p.Funds) } @@ -272,7 +272,7 @@ func (p MigrateContractProposal) String() string { Contract: %s Code id: %d Run as: %s - Msg %q + Msg: %q `, p.Title, p.Description, p.Contract, p.CodeID, p.RunAs, p.Msg) } From 67546d78de984edba80080e08b77a0781d96260e Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Tue, 27 Jul 2021 14:25:22 +0200 Subject: [PATCH 37/90] Fixed remaining PR comments --- x/wasm/client/proposal_handler_test.go | 2 +- x/wasm/types/wasmer_engine.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/x/wasm/client/proposal_handler_test.go b/x/wasm/client/proposal_handler_test.go index 1072d1a58d..ab03d02590 100644 --- a/x/wasm/client/proposal_handler_test.go +++ b/x/wasm/client/proposal_handler_test.go @@ -158,7 +158,7 @@ func TestGovRestHandlers(t *testing.T) { "admin": "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", "code_id": "1", "label": "https://example.com/", - "msg": "my/builder:tag", + "msg": dict{"recipient": "cosmos100dejzacpanrldpjjwksjm62shqhyss44jf5xz"}, "funds": []dict{{"denom": "ustake", "amount": "100"}}, "deposit": []dict{{"denom": "ustake", "amount": "10"}}, "proposer": "link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5", diff --git a/x/wasm/types/wasmer_engine.go b/x/wasm/types/wasmer_engine.go index 7dc3abdf63..2d4835d2aa 100644 --- a/x/wasm/types/wasmer_engine.go +++ b/x/wasm/types/wasmer_engine.go @@ -82,7 +82,7 @@ type WasmerEngine interface { // replace it. This allows it to run a migration step if needed, or return an error if unable to migrate // the given data. // - // Msg has some data on how to perform the migration. + // MigrateMsg has some data on how to perform the migration. Migrate( checksum wasmvm.Checksum, env wasmvmtypes.Env, From 39c63e69d1f8fbc7597c9cd714daa06d41aa01a6 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 10:14:06 +0200 Subject: [PATCH 38/90] Add failing tests showing nothing filtered now --- x/wasm/keeper/query_plugins_test.go | 74 ++++++++++++++++++++++++++++- 1 file changed, 73 insertions(+), 1 deletion(-) diff --git a/x/wasm/keeper/query_plugins_test.go b/x/wasm/keeper/query_plugins_test.go index ad832058cf..66a0561b9a 100644 --- a/x/wasm/keeper/query_plugins_test.go +++ b/x/wasm/keeper/query_plugins_test.go @@ -15,6 +15,7 @@ import ( func TestIBCQuerier(t *testing.T) { myExampleChannels := []channeltypes.IdentifiedChannel{ + // this is returned { State: channeltypes.OPEN, Ordering: channeltypes.ORDERED, @@ -27,9 +28,22 @@ func TestIBCQuerier(t *testing.T) { PortId: "myPortID", ChannelId: "myChannelID", }, + // this is filtered out { State: channeltypes.INIT, Ordering: channeltypes.UNORDERED, + Counterparty: channeltypes.Counterparty{ + PortId: "foobar", + }, + ConnectionHops: []string{"one"}, + Version: "initversion", + PortId: "initPortID", + ChannelId: "initChannelID", + }, + // this is returned + { + State: channeltypes.OPEN, + Ordering: channeltypes.UNORDERED, Counterparty: channeltypes.Counterparty{ PortId: "otherCounterPartyPortID", ChannelId: "otherCounterPartyChannelID", @@ -39,6 +53,19 @@ func TestIBCQuerier(t *testing.T) { PortId: "otherPortID", ChannelId: "otherChannelID", }, + // this is filtered out + { + State: channeltypes.CLOSED, + Ordering: channeltypes.ORDERED, + Counterparty: channeltypes.Counterparty{ + PortId: "super", + ChannelId: "duper", + }, + ConnectionHops: []string{"no-more"}, + Version: "closedVersion", + PortId: "closedPortID", + ChannelId: "closedChannelID", + }, } specs := map[string]struct { srcQuery *wasmvmtypes.IBCQuery @@ -184,7 +211,7 @@ func TestIBCQuerier(t *testing.T) { channelKeeper: &wasmtesting.MockChannelKeeper{ GetChannelFn: func(ctx sdk.Context, srcPort, srcChan string) (channel channeltypes.Channel, found bool) { return channeltypes.Channel{ - State: channeltypes.INIT, + State: channeltypes.OPEN, Ordering: channeltypes.UNORDERED, Counterparty: channeltypes.Counterparty{ PortId: "counterPartyPortID", @@ -211,6 +238,51 @@ func TestIBCQuerier(t *testing.T) { } }`, }, + "query channel in init state": { + srcQuery: &wasmvmtypes.IBCQuery{ + Channel: &wasmvmtypes.ChannelQuery{ + PortID: "myQueryPortID", + ChannelID: "myQueryChannelID", + }, + }, + channelKeeper: &wasmtesting.MockChannelKeeper{ + GetChannelFn: func(ctx sdk.Context, srcPort, srcChan string) (channel channeltypes.Channel, found bool) { + return channeltypes.Channel{ + State: channeltypes.INIT, + Ordering: channeltypes.UNORDERED, + Counterparty: channeltypes.Counterparty{ + PortId: "foobar", + }, + ConnectionHops: []string{"one"}, + Version: "initversion", + }, true + }, + }, + expJsonResult: "{}", + }, + "query channel in closed state": { + srcQuery: &wasmvmtypes.IBCQuery{ + Channel: &wasmvmtypes.ChannelQuery{ + PortID: "myQueryPortID", + ChannelID: "myQueryChannelID", + }, + }, + channelKeeper: &wasmtesting.MockChannelKeeper{ + GetChannelFn: func(ctx sdk.Context, srcPort, srcChan string) (channel channeltypes.Channel, found bool) { + return channeltypes.Channel{ + State: channeltypes.CLOSED, + Ordering: channeltypes.ORDERED, + Counterparty: channeltypes.Counterparty{ + PortId: "super", + ChannelId: "duper", + }, + ConnectionHops: []string{"no-more"}, + Version: "closedVersion", + }, true + }, + }, + expJsonResult: "{}", + }, "query channel - empty result": { srcQuery: &wasmvmtypes.IBCQuery{ Channel: &wasmvmtypes.ChannelQuery{ From d775734596661a429e0cfda7c5a1a0b2ea822b51 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 10:17:24 +0200 Subject: [PATCH 39/90] Add filtering to logic, tests pass --- x/wasm/keeper/query_plugins.go | 6 ++++-- x/wasm/keeper/query_plugins_test.go | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index fb951c8767..fd86d3bcbb 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -218,7 +218,8 @@ func IBCQuerier(wasm contractMetaDataSource, channelKeeper types.ChannelKeeper) portID := request.ListChannels.PortID channels := make(wasmvmtypes.IBCChannels, 0) channelKeeper.IterateChannels(ctx, func(ch channeltypes.IdentifiedChannel) bool { - if portID == "" || portID == ch.PortId { + // it must match the port and be in open state + if (portID == "" || portID == ch.PortId) && ch.State == channeltypes.OPEN { newChan := wasmvmtypes.IBCChannel{ Endpoint: wasmvmtypes.IBCEndpoint{ PortID: ch.PortId, @@ -250,7 +251,8 @@ func IBCQuerier(wasm contractMetaDataSource, channelKeeper types.ChannelKeeper) } got, found := channelKeeper.GetChannel(ctx, portID, channelID) var channel *wasmvmtypes.IBCChannel - if found { + // it must be in open state + if found && got.State == channeltypes.OPEN { channel = &wasmvmtypes.IBCChannel{ Endpoint: wasmvmtypes.IBCEndpoint{ PortID: portID, diff --git a/x/wasm/keeper/query_plugins_test.go b/x/wasm/keeper/query_plugins_test.go index 66a0561b9a..2f91c84d46 100644 --- a/x/wasm/keeper/query_plugins_test.go +++ b/x/wasm/keeper/query_plugins_test.go @@ -172,7 +172,7 @@ func TestIBCQuerier(t *testing.T) { channelKeeper: &wasmtesting.MockChannelKeeper{ GetChannelFn: func(ctx sdk.Context, srcPort, srcChan string) (channel channeltypes.Channel, found bool) { return channeltypes.Channel{ - State: channeltypes.INIT, + State: channeltypes.OPEN, Ordering: channeltypes.UNORDERED, Counterparty: channeltypes.Counterparty{ PortId: "counterPartyPortID", From e43687ae0acbe92387194f769f4f8dc285345933 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 00:58:31 +0200 Subject: [PATCH 40/90] Update hash algorithm --- x/wasm/keeper/keeper.go | 46 +++++++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index a6b90b078b..378685b796 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -2,6 +2,7 @@ package keeper import ( "bytes" + "crypto/sha256" "encoding/binary" "fmt" "math" @@ -925,13 +926,46 @@ func (k Keeper) generateContractAddress(ctx sdk.Context, codeID uint64) sdk.AccA // BuildContractAddress builds an sdk account address for a contract. func BuildContractAddress(codeID, instanceID uint64) sdk.AccAddress { - if codeID > math.MaxUint32 || instanceID > math.MaxUint32 { - // 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. - panic(fmt.Sprintf("address uint32 reached: codeID: %d, instanceID: %d", codeID, instanceID)) + contractID := make([]byte, 16) + binary.BigEndian.PutUint64(contractID[:8], codeID) + binary.BigEndian.PutUint64(contractID[8:], instanceID) + return sdk.BytesToAccAddress(Module(types.ModuleName, contractID)) +} + +// Hash and Module is taken from https://github.com/cosmos/cosmos-sdk/blob/v0.43.0-rc2/types/address/hash.go +// (PR #9088 included in Cosmos SDK 0.43 - can be swapped out for the sdk version when we upgrade) + +// Hash creates a new address from address type and key +func Hash(typ string, key []byte) []byte { + hasher := sha256.New() + _, err := hasher.Write([]byte(typ)) + // the error always nil, it's here only to satisfy the io.Writer interface + assertNil(err) + th := hasher.Sum(nil) + + hasher.Reset() + _, err = hasher.Write(th) + assertNil(err) + _, err = hasher.Write(key) + assertNil(err) + hashed := hasher.Sum(nil) + // 20 bytes to work with Cosmos SDK 0.42 (0.43 pushes for 32 bytes) + // TODO: remove truncate if we update to 0.43 before wasmd 1.0 + return hashed[:20] +} + +// Module is a specialized version of a composed address for modules. Each module account +// is constructed from a module name and module account key. +func Module(moduleName string, key []byte) []byte { + mKey := append([]byte(moduleName), 0) + return Hash("module", append(mKey, key...)) +} + +// Also from the 0.43 Cosmos SDK... sigh (sdkerrors.AssertNil) +func assertNil(err error) { + if err != nil { + panic(fmt.Errorf("logic error - this should never happen. %w", err)) } - contractID := codeID<<32 + instanceID - return addrFromUint64(contractID) } // GetNextCodeID reads the next sequence id used for storing wasm code. From de0b22a0e5e3ae4f1185f7bc8f4e5457fc7b6081 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 00:58:46 +0200 Subject: [PATCH 41/90] Update tests (new default contract addr) --- x/wasm/keeper/keeper_test.go | 25 ++++++++-------------- x/wasm/keeper/proposal_integration_test.go | 2 +- 2 files changed, 10 insertions(+), 17 deletions(-) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 234ade0e5e..4dd350561c 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -284,7 +284,7 @@ func TestInstantiate(t *testing.T) { // create with no balance is also legal gotContractAddr, _, err := keepers.ContractKeeper.Instantiate(ctx, codeID, creator, "", initMsgBz, "demo contract 1", nil) require.NoError(t, err) - require.Equal(t, "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", gotContractAddr.String()) + require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", gotContractAddr.String()) gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { @@ -486,7 +486,7 @@ func TestExecute(t *testing.T) { addr, _, err := keepers.ContractKeeper.Instantiate(ctx, contractID, creator, "", initMsgBz, "demo contract 3", deposit) require.NoError(t, err) - require.Equal(t, "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", addr.String()) + require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", addr.String()) // ensure bob doesn't exist bobAcct := accKeeper.GetAccount(ctx, bob) @@ -792,7 +792,7 @@ func TestExecuteInactiveContract(t *testing.T) { addr, _, err := keeper.Instantiate(ctx, contractID, creator, "", initMsgBz, "demo contract 3", deposit) require.NoError(t, err) - require.Equal(t, "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", addr.String()) + require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", addr.String()) // execute inactive contract params := wasmKeeper.GetParams(ctx) @@ -1240,7 +1240,7 @@ func TestSudo(t *testing.T) { addr, _, err := keepers.ContractKeeper.Instantiate(ctx, contractID, creator, "", initMsgBz, "demo contract 3", deposit) require.NoError(t, err) - require.Equal(t, "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", addr.String()) + require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", addr.String()) // the community is broke _, _, community := keyPubAddr() @@ -1756,7 +1756,6 @@ func TestBuildContractAddress(t *testing.T) { specs := map[string]struct { srcCodeID uint64 srcInstanceID uint64 - expPanic bool }{ "both empty": {}, "both below max": { @@ -1767,23 +1766,17 @@ func TestBuildContractAddress(t *testing.T) { srcCodeID: math.MaxUint32, srcInstanceID: math.MaxUint32, }, - "codeID > max": { - srcCodeID: math.MaxUint32 + 1, - expPanic: true, + "codeID > max u32": { + srcCodeID: math.MaxUint32 + 1, + srcInstanceID: 17, }, - "instanceID > max": { + "instanceID > max u32": { + srcCodeID: 22, srcInstanceID: math.MaxUint32 + 1, - expPanic: true, }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { - if spec.expPanic { - require.Panics(t, func() { - BuildContractAddress(spec.srcCodeID, spec.srcInstanceID) - }) - return - } gotAddr := BuildContractAddress(spec.srcCodeID, spec.srcInstanceID) require.NotNil(t, gotAddr) assert.Nil(t, sdk.ValidateAccAddress(gotAddr.String())) diff --git a/x/wasm/keeper/proposal_integration_test.go b/x/wasm/keeper/proposal_integration_test.go index 2ee57cae0c..d17a4dbf7a 100644 --- a/x/wasm/keeper/proposal_integration_test.go +++ b/x/wasm/keeper/proposal_integration_test.go @@ -106,7 +106,7 @@ func TestInstantiateProposal(t *testing.T) { require.NoError(t, err) // then - contractAddr := "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu" + contractAddr := "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j" err = sdk.ValidateAccAddress(contractAddr) require.NoError(t, err) From 91cbea36cc12ab94d1b453504cfa4ef49d80d991 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 01:04:11 +0200 Subject: [PATCH 42/90] Almost all tests pass --- x/wasm/client/cli/genesis_msg_test.go | 3 ++- x/wasm/module_test.go | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/x/wasm/client/cli/genesis_msg_test.go b/x/wasm/client/cli/genesis_msg_test.go index d73e602d4a..bccb793189 100644 --- a/x/wasm/client/cli/genesis_msg_test.go +++ b/x/wasm/client/cli/genesis_msg_test.go @@ -315,7 +315,7 @@ func TestInstantiateContractCmd(t *testing.T) { } func TestExecuteContractCmd(t *testing.T) { - const firstContractAddress = "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu" + const firstContractAddress = "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j" minimalWasmGenesis := types.GenesisState{ Params: types.DefaultParams(), } @@ -396,6 +396,7 @@ func TestExecuteContractCmd(t *testing.T) { }, }, mutator: func(cmd *cobra.Command) { + // TODO: calculate desired address cmd.SetArgs([]string{"link1weh0k0l6t6v4jkmkde8e90tzkw2c59g4lkcapz", `{}`}) flagSet := cmd.Flags() flagSet.Set("run-as", myWellFundedAccount) diff --git a/x/wasm/module_test.go b/x/wasm/module_test.go index 7d1e52ba83..c70ce742f3 100644 --- a/x/wasm/module_test.go +++ b/x/wasm/module_test.go @@ -179,7 +179,7 @@ func TestHandleInstantiate(t *testing.T) { require.NoError(t, err) contractBech32Addr := parseInitResponse(t, res.Data) - require.Equal(t, "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", contractBech32Addr) + require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", contractBech32Addr) // this should be standard x/wasm init event, nothing from contract require.Equal(t, 3, len(res.Events), prettyEvents(res.Events)) assert.Equal(t, "wasm", res.Events[0].Type) @@ -232,7 +232,7 @@ func TestHandleStoreAndInstantiate(t *testing.T) { codeID, contractBech32Addr := parseStoreAndInitResponse(t, res.Data) require.Equal(t, uint64(1), codeID) - require.Equal(t, "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", contractBech32Addr) + require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", contractBech32Addr) // this should be standard x/wasm init event, nothing from contract require.Equal(t, 4, len(res.Events), prettyEvents(res.Events)) assert.Equal(t, "message", res.Events[0].Type) @@ -270,7 +270,7 @@ func TestErrorsCreateAndInstantiate(t *testing.T) { invalidInitMsgBz, err := json.Marshal(emptyMsg{}) - expectedContractBech32Addr := "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu" + expectedContractBech32Addr := "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j" // test cases cases := map[string]struct { @@ -412,7 +412,7 @@ func TestHandleExecute(t *testing.T) { require.NoError(t, err) contractBech32Addr := parseInitResponse(t, res.Data) - require.Equal(t, "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", contractBech32Addr) + require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", contractBech32Addr) // this should be standard x/wasm init event, plus a bank send event (2), with no custom contract events require.Equal(t, 4, len(res.Events), prettyEvents(res.Events)) assert.Equal(t, "transfer", res.Events[0].Type) @@ -535,7 +535,7 @@ func TestHandleExecuteEscrow(t *testing.T) { res, err = h(data.ctx, &initCmd) require.NoError(t, err) contractBech32Addr := parseInitResponse(t, res.Data) - require.Equal(t, "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", contractBech32Addr) + require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", contractBech32Addr) handleMsg := map[string]interface{}{ "release": map[string]interface{}{}, From 4e681e0018bddd593822c6716c3c2e9416d3f742 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 01:18:48 +0200 Subject: [PATCH 43/90] Fix last tests --- x/wasm/client/cli/genesis_msg_test.go | 4 ++-- x/wasm/keeper/keeper_test.go | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/x/wasm/client/cli/genesis_msg_test.go b/x/wasm/client/cli/genesis_msg_test.go index bccb793189..dd6c9f642b 100644 --- a/x/wasm/client/cli/genesis_msg_test.go +++ b/x/wasm/client/cli/genesis_msg_test.go @@ -396,8 +396,8 @@ func TestExecuteContractCmd(t *testing.T) { }, }, mutator: func(cmd *cobra.Command) { - // TODO: calculate desired address - cmd.SetArgs([]string{"link1weh0k0l6t6v4jkmkde8e90tzkw2c59g4lkcapz", `{}`}) + // See TestBuildContractAddress in keeper_test.go + cmd.SetArgs([]string{"link1mujpjkwhut9yjw4xueyugc02evfv46y0qnephq", `{}`}) flagSet := cmd.Flags() flagSet.Set("run-as", myWellFundedAccount) }, diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 4dd350561c..d9ad8bb651 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -1756,8 +1756,18 @@ func TestBuildContractAddress(t *testing.T) { specs := map[string]struct { srcCodeID uint64 srcInstanceID uint64 + expectedAddr string }{ - "both empty": {}, + "initial contract": { + srcCodeID: 1, + srcInstanceID: 1, + expectedAddr: "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", + }, + "demo value": { + srcCodeID: 1, + srcInstanceID: 100, + expectedAddr: "link1mujpjkwhut9yjw4xueyugc02evfv46y0qnephq", + }, "both below max": { srcCodeID: math.MaxUint32 - 1, srcInstanceID: math.MaxUint32 - 1, @@ -1769,10 +1779,12 @@ func TestBuildContractAddress(t *testing.T) { "codeID > max u32": { srcCodeID: math.MaxUint32 + 1, srcInstanceID: 17, + expectedAddr: "link1673hrexz4h6s0ft04l96ygq667djzh2ne27tt5", }, "instanceID > max u32": { srcCodeID: 22, srcInstanceID: math.MaxUint32 + 1, + expectedAddr: "link10q3pgfvmeyy0veekgtqhxujxkhz0vm9z06c5ml", }, } for name, spec := range specs { @@ -1780,6 +1792,9 @@ func TestBuildContractAddress(t *testing.T) { gotAddr := BuildContractAddress(spec.srcCodeID, spec.srcInstanceID) require.NotNil(t, gotAddr) assert.Nil(t, sdk.ValidateAccAddress(gotAddr.String())) + if len(spec.expectedAddr) > 0 { + require.Equal(t, spec.expectedAddr, gotAddr.String()) + } }) } } From 95ea586ee0ad4e68347680124b62b6cc4a42bcca Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 10:33:33 +0200 Subject: [PATCH 44/90] PR Comment: move where truncating address length to 20 --- x/wasm/keeper/keeper.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 378685b796..ef551992ba 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -929,7 +929,9 @@ func BuildContractAddress(codeID, instanceID uint64) sdk.AccAddress { contractID := make([]byte, 16) binary.BigEndian.PutUint64(contractID[:8], codeID) binary.BigEndian.PutUint64(contractID[8:], instanceID) - return sdk.BytesToAccAddress(Module(types.ModuleName, contractID)) + // 20 bytes to work with Cosmos SDK 0.42 (0.43 pushes for 32 bytes) + // TODO: remove truncate if we update to 0.43 before wasmd 1.0 + return sdk.BytesToAccAddress(Module(types.ModuleName, contractID)[:20]) } // Hash and Module is taken from https://github.com/cosmos/cosmos-sdk/blob/v0.43.0-rc2/types/address/hash.go @@ -948,10 +950,7 @@ func Hash(typ string, key []byte) []byte { assertNil(err) _, err = hasher.Write(key) assertNil(err) - hashed := hasher.Sum(nil) - // 20 bytes to work with Cosmos SDK 0.42 (0.43 pushes for 32 bytes) - // TODO: remove truncate if we update to 0.43 before wasmd 1.0 - return hashed[:20] + return hasher.Sum(nil) } // Module is a specialized version of a composed address for modules. Each module account From 29104534dc2114427489760f246104514fd25e91 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 00:03:39 +0200 Subject: [PATCH 45/90] Remove source, builder from proto files --- docs/core/proto-docs.md | 30 +- docs/proto/proto-docs.md | 1122 ++++++++++++++++++++++++++++++ proto/lbm/wasm/v1/proposal.proto | 5 +- proto/lbm/wasm/v1/query.proto | 9 +- proto/lbm/wasm/v1/tx.proto | 14 +- proto/lbm/wasm/v1/types.proto | 7 +- x/wasm/types/proposal.pb.go | 186 ++--- x/wasm/types/query.pb.go | 243 ++----- x/wasm/types/tx.pb.go | 299 ++------ x/wasm/types/types.pb.go | 275 +++----- 10 files changed, 1412 insertions(+), 778 deletions(-) create mode 100644 docs/proto/proto-docs.md diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 60c7b77cd8..1c23f07d58 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -10948,9 +10948,9 @@ CodeInfo is data for the uploaded contract WASM code | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `code_hash` | [bytes](#bytes) | | CodeHash is the unique identifier created by wasmvm | -| `creator` | [string](#string) | | Creator address who initially stored the code | -| `source` | [string](#string) | | Source is a valid absolute HTTPS URI to the contract's source code, optional | -| `builder` | [string](#string) | | Builder is a valid docker image name with tag, optional | +| `creator` | [string](#string) | | Creator address who initially stored the code + +3 and 4 intentionally left empty (used in v1beta1) | | `instantiate_config` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | InstantiateConfig access control to apply on contract creation, optional | @@ -11230,9 +11230,9 @@ MsgStoreCode submit Wasm code to the system | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `sender` | [string](#string) | | Sender is the that actor that signed the messages | -| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed | -| `source` | [string](#string) | | Source is a valid absolute HTTPS URI to the contract's source code, optional | -| `builder` | [string](#string) | | Builder is a valid docker image name with tag, optional | +| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed + +3 and 4 intentionally left empty (used in v1beta1) | | `instantiate_permission` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | InstantiatePermission access control to apply on contract creation, optional | @@ -11249,10 +11249,10 @@ MsgStoreCodeAndInstantiateContract submit Wasm code to the system and instantiat | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `sender` | [string](#string) | | Sender is the that actor that signed the messages | -| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed | -| `source` | [string](#string) | | Source is a valid absolute HTTPS URI to the contract's source code, optional | -| `builder` | [string](#string) | | Builder is a valid docker image name with tag, optional | -| `instantiate_permission` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | InstantiatePermission access control to apply on contract creation, optional | +| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed + +3 and 4 intentionally left empty (used in v1beta1) | +| `instantiate_permission` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | | | `admin` | [string](#string) | | Admin is an optional address that can execute migrations | | `label` | [string](#string) | | Label is optional metadata to be stored with a contract instance. | | `init_msg` | [bytes](#bytes) | | InitMsg json encoded message to be passed to the contract on instantiation | @@ -11622,9 +11622,9 @@ StoreCodeProposal gov proposal content type to submit WASM code to the system | `title` | [string](#string) | | Title is a short summary | | `description` | [string](#string) | | Description is a human readable text | | `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | -| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed | -| `source` | [string](#string) | | Source is a valid absolute HTTPS URI to the contract's source code, optional | -| `builder` | [string](#string) | | Builder is a valid docker image name with tag, optional | +| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed + +Source is a valid absolute HTTPS URI to the contract's source code, optional 5 and 6 intentionally left empty (used in v1beta1) | | `instantiate_permission` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | InstantiatePermission to apply on contract creation, optional | @@ -11712,9 +11712,7 @@ CodeInfoResponse contains code meta data from CodeInfo | `code_id` | [uint64](#uint64) | | id for legacy support | | `creator` | [string](#string) | | | | `data_hash` | [bytes](#bytes) | | | -| `source` | [string](#string) | | | -| `builder` | [string](#string) | | | -| `instantiate_permission` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | | +| `instantiate_permission` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | 4 and 5 intentionally left empty (used in v1beta1) | diff --git a/docs/proto/proto-docs.md b/docs/proto/proto-docs.md new file mode 100644 index 0000000000..6e8e69fabc --- /dev/null +++ b/docs/proto/proto-docs.md @@ -0,0 +1,1122 @@ + +# Protobuf Documentation + + +## Table of Contents + +- [cosmwasm/wasm/v1/types.proto](#cosmwasm/wasm/v1/types.proto) + - [AbsoluteTxPosition](#cosmwasm.wasm.v1.AbsoluteTxPosition) + - [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) + - [AccessTypeParam](#cosmwasm.wasm.v1.AccessTypeParam) + - [CodeInfo](#cosmwasm.wasm.v1.CodeInfo) + - [ContractCodeHistoryEntry](#cosmwasm.wasm.v1.ContractCodeHistoryEntry) + - [ContractInfo](#cosmwasm.wasm.v1.ContractInfo) + - [Model](#cosmwasm.wasm.v1.Model) + - [Params](#cosmwasm.wasm.v1.Params) + + - [AccessType](#cosmwasm.wasm.v1.AccessType) + - [ContractCodeHistoryOperationType](#cosmwasm.wasm.v1.ContractCodeHistoryOperationType) + +- [cosmwasm/wasm/v1/tx.proto](#cosmwasm/wasm/v1/tx.proto) + - [MsgClearAdmin](#cosmwasm.wasm.v1.MsgClearAdmin) + - [MsgClearAdminResponse](#cosmwasm.wasm.v1.MsgClearAdminResponse) + - [MsgExecuteContract](#cosmwasm.wasm.v1.MsgExecuteContract) + - [MsgExecuteContractResponse](#cosmwasm.wasm.v1.MsgExecuteContractResponse) + - [MsgInstantiateContract](#cosmwasm.wasm.v1.MsgInstantiateContract) + - [MsgInstantiateContractResponse](#cosmwasm.wasm.v1.MsgInstantiateContractResponse) + - [MsgMigrateContract](#cosmwasm.wasm.v1.MsgMigrateContract) + - [MsgMigrateContractResponse](#cosmwasm.wasm.v1.MsgMigrateContractResponse) + - [MsgStoreCode](#cosmwasm.wasm.v1.MsgStoreCode) + - [MsgStoreCodeResponse](#cosmwasm.wasm.v1.MsgStoreCodeResponse) + - [MsgUpdateAdmin](#cosmwasm.wasm.v1.MsgUpdateAdmin) + - [MsgUpdateAdminResponse](#cosmwasm.wasm.v1.MsgUpdateAdminResponse) + + - [Msg](#cosmwasm.wasm.v1.Msg) + +- [cosmwasm/wasm/v1/genesis.proto](#cosmwasm/wasm/v1/genesis.proto) + - [Code](#cosmwasm.wasm.v1.Code) + - [Contract](#cosmwasm.wasm.v1.Contract) + - [GenesisState](#cosmwasm.wasm.v1.GenesisState) + - [GenesisState.GenMsgs](#cosmwasm.wasm.v1.GenesisState.GenMsgs) + - [Sequence](#cosmwasm.wasm.v1.Sequence) + +- [cosmwasm/wasm/v1/ibc.proto](#cosmwasm/wasm/v1/ibc.proto) + - [MsgIBCCloseChannel](#cosmwasm.wasm.v1.MsgIBCCloseChannel) + - [MsgIBCSend](#cosmwasm.wasm.v1.MsgIBCSend) + +- [cosmwasm/wasm/v1/proposal.proto](#cosmwasm/wasm/v1/proposal.proto) + - [ClearAdminProposal](#cosmwasm.wasm.v1.ClearAdminProposal) + - [InstantiateContractProposal](#cosmwasm.wasm.v1.InstantiateContractProposal) + - [MigrateContractProposal](#cosmwasm.wasm.v1.MigrateContractProposal) + - [PinCodesProposal](#cosmwasm.wasm.v1.PinCodesProposal) + - [StoreCodeProposal](#cosmwasm.wasm.v1.StoreCodeProposal) + - [UnpinCodesProposal](#cosmwasm.wasm.v1.UnpinCodesProposal) + - [UpdateAdminProposal](#cosmwasm.wasm.v1.UpdateAdminProposal) + +- [cosmwasm/wasm/v1/query.proto](#cosmwasm/wasm/v1/query.proto) + - [CodeInfoResponse](#cosmwasm.wasm.v1.CodeInfoResponse) + - [QueryAllContractStateRequest](#cosmwasm.wasm.v1.QueryAllContractStateRequest) + - [QueryAllContractStateResponse](#cosmwasm.wasm.v1.QueryAllContractStateResponse) + - [QueryCodeRequest](#cosmwasm.wasm.v1.QueryCodeRequest) + - [QueryCodeResponse](#cosmwasm.wasm.v1.QueryCodeResponse) + - [QueryCodesRequest](#cosmwasm.wasm.v1.QueryCodesRequest) + - [QueryCodesResponse](#cosmwasm.wasm.v1.QueryCodesResponse) + - [QueryContractHistoryRequest](#cosmwasm.wasm.v1.QueryContractHistoryRequest) + - [QueryContractHistoryResponse](#cosmwasm.wasm.v1.QueryContractHistoryResponse) + - [QueryContractInfoRequest](#cosmwasm.wasm.v1.QueryContractInfoRequest) + - [QueryContractInfoResponse](#cosmwasm.wasm.v1.QueryContractInfoResponse) + - [QueryContractsByCodeRequest](#cosmwasm.wasm.v1.QueryContractsByCodeRequest) + - [QueryContractsByCodeResponse](#cosmwasm.wasm.v1.QueryContractsByCodeResponse) + - [QueryRawContractStateRequest](#cosmwasm.wasm.v1.QueryRawContractStateRequest) + - [QueryRawContractStateResponse](#cosmwasm.wasm.v1.QueryRawContractStateResponse) + - [QuerySmartContractStateRequest](#cosmwasm.wasm.v1.QuerySmartContractStateRequest) + - [QuerySmartContractStateResponse](#cosmwasm.wasm.v1.QuerySmartContractStateResponse) + + - [Query](#cosmwasm.wasm.v1.Query) + +- [Scalar Value Types](#scalar-value-types) + + + + +

Top

+ +## cosmwasm/wasm/v1/types.proto + + + + + +### AbsoluteTxPosition +AbsoluteTxPosition is a unique transaction position that allows for global +ordering of transactions. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `block_height` | [uint64](#uint64) | | BlockHeight is the block the contract was created at | +| `tx_index` | [uint64](#uint64) | | TxIndex is a monotonic counter within the block (actual transaction index, or gas consumed) | + + + + + + + + +### AccessConfig +AccessConfig access control type. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `permission` | [AccessType](#cosmwasm.wasm.v1.AccessType) | | | +| `address` | [string](#string) | | | + + + + + + + + +### AccessTypeParam +AccessTypeParam + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `value` | [AccessType](#cosmwasm.wasm.v1.AccessType) | | | + + + + + + + + +### CodeInfo +CodeInfo is data for the uploaded contract WASM code + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `code_hash` | [bytes](#bytes) | | CodeHash is the unique identifier created by wasmvm | +| `creator` | [string](#string) | | Creator address who initially stored the code + +3 and 4 intentionally left empty (used in v1beta1) | +| `instantiate_config` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiateConfig access control to apply on contract creation, optional | + + + + + + + + +### ContractCodeHistoryEntry +ContractCodeHistoryEntry metadata to a contract. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `operation` | [ContractCodeHistoryOperationType](#cosmwasm.wasm.v1.ContractCodeHistoryOperationType) | | | +| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | +| `updated` | [AbsoluteTxPosition](#cosmwasm.wasm.v1.AbsoluteTxPosition) | | Updated Tx position when the operation was executed. | +| `msg` | [bytes](#bytes) | | | + + + + + + + + +### ContractInfo +ContractInfo stores a WASM contract instance + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored Wasm code | +| `creator` | [string](#string) | | Creator address who initially instantiated the contract | +| `admin` | [string](#string) | | Admin is an optional address that can execute migrations | +| `label` | [string](#string) | | Label is optional metadata to be stored with a contract instance. | +| `created` | [AbsoluteTxPosition](#cosmwasm.wasm.v1.AbsoluteTxPosition) | | Created Tx position when the contract was instantiated. This data should kept internal and not be exposed via query results. Just use for sorting | +| `ibc_port_id` | [string](#string) | | | +| `extension` | [google.protobuf.Any](#google.protobuf.Any) | | Extension is an extension point to store custom metadata within the persistence model. | + + + + + + + + +### Model +Model is a struct that holds a KV pair + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `key` | [bytes](#bytes) | | hex-encode key to read it better (this is often ascii) | +| `value` | [bytes](#bytes) | | base64-encode raw value | + + + + + + + + +### Params +Params defines the set of wasm parameters. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `code_upload_access` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | | +| `instantiate_default_permission` | [AccessType](#cosmwasm.wasm.v1.AccessType) | | | +| `max_wasm_code_size` | [uint64](#uint64) | | | + + + + + + + + + + +### AccessType +AccessType permission types + +| Name | Number | Description | +| ---- | ------ | ----------- | +| ACCESS_TYPE_UNSPECIFIED | 0 | AccessTypeUnspecified placeholder for empty value | +| ACCESS_TYPE_NOBODY | 1 | AccessTypeNobody forbidden | +| ACCESS_TYPE_ONLY_ADDRESS | 2 | AccessTypeOnlyAddress restricted to an address | +| ACCESS_TYPE_EVERYBODY | 3 | AccessTypeEverybody unrestricted | + + + + + +### ContractCodeHistoryOperationType +ContractCodeHistoryOperationType actions that caused a code change + +| Name | Number | Description | +| ---- | ------ | ----------- | +| CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED | 0 | ContractCodeHistoryOperationTypeUnspecified placeholder for empty value | +| CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT | 1 | ContractCodeHistoryOperationTypeInit on chain contract instantiation | +| CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE | 2 | ContractCodeHistoryOperationTypeMigrate code migration | +| CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS | 3 | ContractCodeHistoryOperationTypeGenesis based on genesis data | + + + + + + + + + + + +

Top

+ +## cosmwasm/wasm/v1/tx.proto + + + + + +### MsgClearAdmin +MsgClearAdmin removes any admin stored for a smart contract + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `sender` | [string](#string) | | Sender is the that actor that signed the messages | +| `contract` | [string](#string) | | Contract is the address of the smart contract | + + + + + + + + +### MsgClearAdminResponse +MsgClearAdminResponse returns empty data + + + + + + + + +### MsgExecuteContract +MsgExecuteContract submits the given message data to a smart contract + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `sender` | [string](#string) | | Sender is the that actor that signed the messages | +| `contract` | [string](#string) | | Contract is the address of the smart contract | +| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract | +| `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on execution | + + + + + + + + +### MsgExecuteContractResponse +MsgExecuteContractResponse returns execution result data. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `data` | [bytes](#bytes) | | Data contains base64-encoded bytes to returned from the contract | + + + + + + + + +### MsgInstantiateContract +MsgInstantiateContract create a new smart contract instance for the given +code id. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `sender` | [string](#string) | | Sender is the that actor that signed the messages | +| `admin` | [string](#string) | | Admin is an optional address that can execute migrations | +| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | +| `label` | [string](#string) | | Label is optional metadata to be stored with a contract instance. | +| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on instantiation | +| `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation | + + + + + + + + +### MsgInstantiateContractResponse +MsgInstantiateContractResponse return instantiation result data + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `address` | [string](#string) | | Address is the bech32 address of the new contract instance. | +| `data` | [bytes](#bytes) | | Data contains base64-encoded bytes to returned from the contract | + + + + + + + + +### MsgMigrateContract +MsgMigrateContract runs a code upgrade/ downgrade for a smart contract + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `sender` | [string](#string) | | Sender is the that actor that signed the messages | +| `contract` | [string](#string) | | Contract is the address of the smart contract | +| `code_id` | [uint64](#uint64) | | CodeID references the new WASM code | +| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on migration | + + + + + + + + +### MsgMigrateContractResponse +MsgMigrateContractResponse returns contract migration result data. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `data` | [bytes](#bytes) | | Data contains same raw bytes returned as data from the wasm contract. (May be empty) | + + + + + + + + +### MsgStoreCode +MsgStoreCode submit Wasm code to the system + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `sender` | [string](#string) | | Sender is the that actor that signed the messages | +| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed + +3 and 4 intentionally left empty (used in v1beta1) | +| `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission access control to apply on contract creation, optional | + + + + + + + + +### MsgStoreCodeResponse +MsgStoreCodeResponse returns store result data. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | + + + + + + + + +### MsgUpdateAdmin +MsgUpdateAdmin sets a new admin for a smart contract + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `sender` | [string](#string) | | Sender is the that actor that signed the messages | +| `new_admin` | [string](#string) | | NewAdmin address to be set | +| `contract` | [string](#string) | | Contract is the address of the smart contract | + + + + + + + + +### MsgUpdateAdminResponse +MsgUpdateAdminResponse returns empty data + + + + + + + + + + + + + + +### Msg +Msg defines the wasm Msg service. + +| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | +| ----------- | ------------ | ------------- | ------------| ------- | -------- | +| `StoreCode` | [MsgStoreCode](#cosmwasm.wasm.v1.MsgStoreCode) | [MsgStoreCodeResponse](#cosmwasm.wasm.v1.MsgStoreCodeResponse) | StoreCode to submit Wasm code to the system | | +| `InstantiateContract` | [MsgInstantiateContract](#cosmwasm.wasm.v1.MsgInstantiateContract) | [MsgInstantiateContractResponse](#cosmwasm.wasm.v1.MsgInstantiateContractResponse) | Instantiate creates a new smart contract instance for the given code id. | | +| `ExecuteContract` | [MsgExecuteContract](#cosmwasm.wasm.v1.MsgExecuteContract) | [MsgExecuteContractResponse](#cosmwasm.wasm.v1.MsgExecuteContractResponse) | Execute submits the given message data to a smart contract | | +| `MigrateContract` | [MsgMigrateContract](#cosmwasm.wasm.v1.MsgMigrateContract) | [MsgMigrateContractResponse](#cosmwasm.wasm.v1.MsgMigrateContractResponse) | Migrate runs a code upgrade/ downgrade for a smart contract | | +| `UpdateAdmin` | [MsgUpdateAdmin](#cosmwasm.wasm.v1.MsgUpdateAdmin) | [MsgUpdateAdminResponse](#cosmwasm.wasm.v1.MsgUpdateAdminResponse) | UpdateAdmin sets a new admin for a smart contract | | +| `ClearAdmin` | [MsgClearAdmin](#cosmwasm.wasm.v1.MsgClearAdmin) | [MsgClearAdminResponse](#cosmwasm.wasm.v1.MsgClearAdminResponse) | ClearAdmin removes any admin stored for a smart contract | | + + + + + + +

Top

+ +## cosmwasm/wasm/v1/genesis.proto + + + + + +### Code +Code struct encompasses CodeInfo and CodeBytes + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `code_id` | [uint64](#uint64) | | | +| `code_info` | [CodeInfo](#cosmwasm.wasm.v1.CodeInfo) | | | +| `code_bytes` | [bytes](#bytes) | | | +| `pinned` | [bool](#bool) | | Pinned to wasmvm cache | + + + + + + + + +### Contract +Contract struct encompasses ContractAddress, ContractInfo, and ContractState + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `contract_address` | [string](#string) | | | +| `contract_info` | [ContractInfo](#cosmwasm.wasm.v1.ContractInfo) | | | +| `contract_state` | [Model](#cosmwasm.wasm.v1.Model) | repeated | | + + + + + + + + +### GenesisState +GenesisState - genesis state of x/wasm + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `params` | [Params](#cosmwasm.wasm.v1.Params) | | | +| `codes` | [Code](#cosmwasm.wasm.v1.Code) | repeated | | +| `contracts` | [Contract](#cosmwasm.wasm.v1.Contract) | repeated | | +| `sequences` | [Sequence](#cosmwasm.wasm.v1.Sequence) | repeated | | +| `gen_msgs` | [GenesisState.GenMsgs](#cosmwasm.wasm.v1.GenesisState.GenMsgs) | repeated | | + + + + + + + + +### GenesisState.GenMsgs +GenMsgs define the messages that can be executed during genesis phase in +order. The intention is to have more human readable data that is auditable. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `store_code` | [MsgStoreCode](#cosmwasm.wasm.v1.MsgStoreCode) | | | +| `instantiate_contract` | [MsgInstantiateContract](#cosmwasm.wasm.v1.MsgInstantiateContract) | | | +| `execute_contract` | [MsgExecuteContract](#cosmwasm.wasm.v1.MsgExecuteContract) | | | + + + + + + + + +### Sequence +Sequence key and value of an id generation counter + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `id_key` | [bytes](#bytes) | | | +| `value` | [uint64](#uint64) | | | + + + + + + + + + + + + + + + + +

Top

+ +## cosmwasm/wasm/v1/ibc.proto + + + + + +### MsgIBCCloseChannel +MsgIBCCloseChannel port and channel need to be owned by the contract + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `channel` | [string](#string) | | | + + + + + + + + +### MsgIBCSend +MsgIBCSend + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `channel` | [string](#string) | | the channel by which the packet will be sent | +| `timeout_height` | [uint64](#uint64) | | Timeout height relative to the current block height. The timeout is disabled when set to 0. | +| `timeout_timestamp` | [uint64](#uint64) | | Timeout timestamp (in nanoseconds) relative to the current block timestamp. The timeout is disabled when set to 0. | +| `data` | [bytes](#bytes) | | data is the payload to transfer | + + + + + + + + + + + + + + + + +

Top

+ +## cosmwasm/wasm/v1/proposal.proto + + + + + +### ClearAdminProposal +ClearAdminProposal gov proposal content type to clear the admin of a +contract. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `title` | [string](#string) | | Title is a short summary | +| `description` | [string](#string) | | Description is a human readable text | +| `contract` | [string](#string) | | Contract is the address of the smart contract | + + + + + + + + +### InstantiateContractProposal +InstantiateContractProposal gov proposal content type to instantiate a +contract. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `title` | [string](#string) | | Title is a short summary | +| `description` | [string](#string) | | Description is a human readable text | +| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | +| `admin` | [string](#string) | | Admin is an optional address that can execute migrations | +| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | +| `label` | [string](#string) | | Label is optional metadata to be stored with a constract instance. | +| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on instantiation | +| `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation | + + + + + + + + +### MigrateContractProposal +MigrateContractProposal gov proposal content type to migrate a contract. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `title` | [string](#string) | | Title is a short summary | +| `description` | [string](#string) | | Description is a human readable text | +| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | +| `contract` | [string](#string) | | Contract is the address of the smart contract | +| `code_id` | [uint64](#uint64) | | CodeID references the new WASM code | +| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on migration | + + + + + + + + +### PinCodesProposal +PinCodesProposal gov proposal content type to pin a set of code ids in the +wasmvm cache. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `title` | [string](#string) | | Title is a short summary | +| `description` | [string](#string) | | Description is a human readable text | +| `code_ids` | [uint64](#uint64) | repeated | CodeIDs references the new WASM codes | + + + + + + + + +### StoreCodeProposal +StoreCodeProposal gov proposal content type to submit WASM code to the system + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `title` | [string](#string) | | Title is a short summary | +| `description` | [string](#string) | | Description is a human readable text | +| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | +| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed + +5 and 6 intentionally left empty (used in v1beta1) | +| `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission to apply on contract creation, optional | + + + + + + + + +### UnpinCodesProposal +UnpinCodesProposal gov proposal content type to unpin a set of code ids in +the wasmvm cache. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `title` | [string](#string) | | Title is a short summary | +| `description` | [string](#string) | | Description is a human readable text | +| `code_ids` | [uint64](#uint64) | repeated | CodeIDs references the WASM codes | + + + + + + + + +### UpdateAdminProposal +UpdateAdminProposal gov proposal content type to set an admin for a contract. + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `title` | [string](#string) | | Title is a short summary | +| `description` | [string](#string) | | Description is a human readable text | +| `new_admin` | [string](#string) | | NewAdmin address to be set | +| `contract` | [string](#string) | | Contract is the address of the smart contract | + + + + + + + + + + + + + + + + +

Top

+ +## cosmwasm/wasm/v1/query.proto + + + + + +### CodeInfoResponse +CodeInfoResponse contains code meta data from CodeInfo + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `code_id` | [uint64](#uint64) | | id for legacy support | +| `creator` | [string](#string) | | | +| `data_hash` | [bytes](#bytes) | | 4 and 5 intentionally left empty (used in v1beta1) | + + + + + + + + +### QueryAllContractStateRequest +QueryAllContractStateRequest is the request type for the +Query/AllContractState RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `address` | [string](#string) | | address is the address of the contract | +| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an optional pagination for the request. | + + + + + + + + +### QueryAllContractStateResponse +QueryAllContractStateResponse is the response type for the +Query/AllContractState RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `models` | [Model](#cosmwasm.wasm.v1.Model) | repeated | | +| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines the pagination in the response. | + + + + + + + + +### QueryCodeRequest +QueryCodeRequest is the request type for the Query/Code RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `code_id` | [uint64](#uint64) | | grpc-gateway_out does not support Go style CodID | + + + + + + + + +### QueryCodeResponse +QueryCodeResponse is the response type for the Query/Code RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `code_info` | [CodeInfoResponse](#cosmwasm.wasm.v1.CodeInfoResponse) | | | +| `data` | [bytes](#bytes) | | | + + + + + + + + +### QueryCodesRequest +QueryCodesRequest is the request type for the Query/Codes RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an optional pagination for the request. | + + + + + + + + +### QueryCodesResponse +QueryCodesResponse is the response type for the Query/Codes RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `code_infos` | [CodeInfoResponse](#cosmwasm.wasm.v1.CodeInfoResponse) | repeated | | +| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines the pagination in the response. | + + + + + + + + +### QueryContractHistoryRequest +QueryContractHistoryRequest is the request type for the Query/ContractHistory +RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `address` | [string](#string) | | address is the address of the contract to query | +| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an optional pagination for the request. | + + + + + + + + +### QueryContractHistoryResponse +QueryContractHistoryResponse is the response type for the +Query/ContractHistory RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `entries` | [ContractCodeHistoryEntry](#cosmwasm.wasm.v1.ContractCodeHistoryEntry) | repeated | | +| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines the pagination in the response. | + + + + + + + + +### QueryContractInfoRequest +QueryContractInfoRequest is the request type for the Query/ContractInfo RPC +method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `address` | [string](#string) | | address is the address of the contract to query | + + + + + + + + +### QueryContractInfoResponse +QueryContractInfoResponse is the response type for the Query/ContractInfo RPC +method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `address` | [string](#string) | | address is the address of the contract | +| `contract_info` | [ContractInfo](#cosmwasm.wasm.v1.ContractInfo) | | | + + + + + + + + +### QueryContractsByCodeRequest +QueryContractsByCodeRequest is the request type for the Query/ContractsByCode +RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `code_id` | [uint64](#uint64) | | grpc-gateway_out does not support Go style CodID | +| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an optional pagination for the request. | + + + + + + + + +### QueryContractsByCodeResponse +QueryContractsByCodeResponse is the response type for the +Query/ContractsByCode RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `contracts` | [string](#string) | repeated | contracts are a set of contract addresses | +| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines the pagination in the response. | + + + + + + + + +### QueryRawContractStateRequest +QueryRawContractStateRequest is the request type for the +Query/RawContractState RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `address` | [string](#string) | | address is the address of the contract | +| `query_data` | [bytes](#bytes) | | | + + + + + + + + +### QueryRawContractStateResponse +QueryRawContractStateResponse is the response type for the +Query/RawContractState RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `data` | [bytes](#bytes) | | Data contains the raw store data | + + + + + + + + +### QuerySmartContractStateRequest +QuerySmartContractStateRequest is the request type for the +Query/SmartContractState RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `address` | [string](#string) | | address is the address of the contract | +| `query_data` | [bytes](#bytes) | | QueryData contains the query data passed to the contract | + + + + + + + + +### QuerySmartContractStateResponse +QuerySmartContractStateResponse is the response type for the +Query/SmartContractState RPC method + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `data` | [bytes](#bytes) | | Data contains the json data returned from the smart contract | + + + + + + + + + + + + + + +### Query +Query provides defines the gRPC querier service + +| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | +| ----------- | ------------ | ------------- | ------------| ------- | -------- | +| `ContractInfo` | [QueryContractInfoRequest](#cosmwasm.wasm.v1.QueryContractInfoRequest) | [QueryContractInfoResponse](#cosmwasm.wasm.v1.QueryContractInfoResponse) | ContractInfo gets the contract meta data | GET|/wasm/v1/contract/{address}| +| `ContractHistory` | [QueryContractHistoryRequest](#cosmwasm.wasm.v1.QueryContractHistoryRequest) | [QueryContractHistoryResponse](#cosmwasm.wasm.v1.QueryContractHistoryResponse) | ContractHistory gets the contract code history | GET|/wasm/v1/contract/{address}/history| +| `ContractsByCode` | [QueryContractsByCodeRequest](#cosmwasm.wasm.v1.QueryContractsByCodeRequest) | [QueryContractsByCodeResponse](#cosmwasm.wasm.v1.QueryContractsByCodeResponse) | ContractsByCode lists all smart contracts for a code id | GET|/wasm/v1/code/{code_id}/contracts| +| `AllContractState` | [QueryAllContractStateRequest](#cosmwasm.wasm.v1.QueryAllContractStateRequest) | [QueryAllContractStateResponse](#cosmwasm.wasm.v1.QueryAllContractStateResponse) | AllContractState gets all raw store data for a single contract | GET|/wasm/v1/contract/{address}/state| +| `RawContractState` | [QueryRawContractStateRequest](#cosmwasm.wasm.v1.QueryRawContractStateRequest) | [QueryRawContractStateResponse](#cosmwasm.wasm.v1.QueryRawContractStateResponse) | RawContractState gets single key from the raw store data of a contract | GET|/wasm/v1/contract/{address}/raw/{query_data}| +| `SmartContractState` | [QuerySmartContractStateRequest](#cosmwasm.wasm.v1.QuerySmartContractStateRequest) | [QuerySmartContractStateResponse](#cosmwasm.wasm.v1.QuerySmartContractStateResponse) | SmartContractState get smart query result from the contract | GET|/wasm/v1/contract/{address}/smart/{query_data}| +| `Code` | [QueryCodeRequest](#cosmwasm.wasm.v1.QueryCodeRequest) | [QueryCodeResponse](#cosmwasm.wasm.v1.QueryCodeResponse) | Code gets the binary code and metadata for a singe wasm code | GET|/wasm/v1/code/{code_id}| +| `Codes` | [QueryCodesRequest](#cosmwasm.wasm.v1.QueryCodesRequest) | [QueryCodesResponse](#cosmwasm.wasm.v1.QueryCodesResponse) | Codes gets the metadata for all stored wasm codes | GET|/wasm/v1/code| + + + + + +## Scalar Value Types + +| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | +| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | +| double | | double | double | float | float64 | double | float | Float | +| float | | float | float | float | float32 | float | float | Float | +| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | +| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | +| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | +| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | +| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | +| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | +| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | +| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | +| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | + diff --git a/proto/lbm/wasm/v1/proposal.proto b/proto/lbm/wasm/v1/proposal.proto index 9e85beb976..2baf367f90 100644 --- a/proto/lbm/wasm/v1/proposal.proto +++ b/proto/lbm/wasm/v1/proposal.proto @@ -21,9 +21,8 @@ message StoreCodeProposal { // WASMByteCode can be raw or gzip compressed bytes wasm_byte_code = 4 [(gogoproto.customname) = "WASMByteCode"]; // Source is a valid absolute HTTPS URI to the contract's source code, optional - string source = 5; - // Builder is a valid docker image name with tag, optional - string builder = 6; + // 5 and 6 intentionally left empty (used in v1beta1) + // InstantiatePermission to apply on contract creation, optional AccessConfig instantiate_permission = 7; } diff --git a/proto/lbm/wasm/v1/query.proto b/proto/lbm/wasm/v1/query.proto index 5aa5ce0236..bfc19f4efe 100644 --- a/proto/lbm/wasm/v1/query.proto +++ b/proto/lbm/wasm/v1/query.proto @@ -148,12 +148,11 @@ message QueryCodeRequest { message CodeInfoResponse { option (gogoproto.equal) = true; - uint64 code_id = 1 [(gogoproto.customname) = "CodeID", + uint64 code_id = 1 [(gogoproto.customname) = "CodeID", (gogoproto.jsontag) = "id"]; // id for legacy support - string creator = 2; - bytes data_hash = 3 [(gogoproto.casttype) = "github.com/line/ostracon/libs/bytes.HexBytes"]; - string source = 4; - string builder = 5; + string creator = 2; + bytes data_hash = 3 [(gogoproto.casttype) = "github.com/line/ostracon/libs/bytes.HexBytes"]; + // 4 and 5 intentionally left empty (used in v1beta1) AccessConfig instantiate_permission = 6 [(gogoproto.nullable) = false]; } diff --git a/proto/lbm/wasm/v1/tx.proto b/proto/lbm/wasm/v1/tx.proto index 7cacdfbb10..06d27984b6 100644 --- a/proto/lbm/wasm/v1/tx.proto +++ b/proto/lbm/wasm/v1/tx.proto @@ -35,11 +35,8 @@ message MsgStoreCode { string sender = 1; // WASMByteCode can be raw or gzip compressed bytes wasm_byte_code = 2 [(gogoproto.customname) = "WASMByteCode"]; - // Source is a valid absolute HTTPS URI to the contract's source code, - // optional - string source = 3; - // Builder is a valid docker image name with tag, optional - string builder = 4; + // 3 and 4 intentionally left empty (used in v1beta1) + // InstantiatePermission access control to apply on contract creation, // optional AccessConfig instantiate_permission = 5; @@ -81,11 +78,8 @@ message MsgStoreCodeAndInstantiateContract { string sender = 1; // WASMByteCode can be raw or gzip compressed bytes wasm_byte_code = 2 [(gogoproto.customname) = "WASMByteCode"]; - // Source is a valid absolute HTTPS URI to the contract's source code, optional - string source = 3; - // Builder is a valid docker image name with tag, optional - string builder = 4; - // InstantiatePermission access control to apply on contract creation, optional + // 3 and 4 intentionally left empty (used in v1beta1) + AccessConfig instantiate_permission = 5; // Admin is an optional address that can execute migrations string admin = 6; diff --git a/proto/lbm/wasm/v1/types.proto b/proto/lbm/wasm/v1/types.proto index e4ecb5da39..174582a7e3 100644 --- a/proto/lbm/wasm/v1/types.proto +++ b/proto/lbm/wasm/v1/types.proto @@ -69,11 +69,8 @@ message CodeInfo { bytes code_hash = 1; // Creator address who initially stored the code string creator = 2; - // Source is a valid absolute HTTPS URI to the contract's source code, - // optional - string source = 3; - // Builder is a valid docker image name with tag, optional - string builder = 4; + // 3 and 4 intentionally left empty (used in v1beta1) + // InstantiateConfig access control to apply on contract creation, optional AccessConfig instantiate_config = 5 [(gogoproto.nullable) = false]; } diff --git a/x/wasm/types/proposal.pb.go b/x/wasm/types/proposal.pb.go index 22f6b45667..7692bf9b17 100644 --- a/x/wasm/types/proposal.pb.go +++ b/x/wasm/types/proposal.pb.go @@ -36,10 +36,6 @@ type StoreCodeProposal struct { RunAs string `protobuf:"bytes,3,opt,name=run_as,json=runAs,proto3" json:"run_as,omitempty"` // WASMByteCode can be raw or gzip compressed WASMByteCode []byte `protobuf:"bytes,4,opt,name=wasm_byte_code,json=wasmByteCode,proto3" json:"wasm_byte_code,omitempty"` - // Source is a valid absolute HTTPS URI to the contract's source code, optional - Source string `protobuf:"bytes,5,opt,name=source,proto3" json:"source,omitempty"` - // Builder is a valid docker image name with tag, optional - Builder string `protobuf:"bytes,6,opt,name=builder,proto3" json:"builder,omitempty"` // InstantiatePermission to apply on contract creation, optional InstantiatePermission *AccessConfig `protobuf:"bytes,7,opt,name=instantiate_permission,json=instantiatePermission,proto3" json:"instantiate_permission,omitempty"` } @@ -404,52 +400,50 @@ func init() { func init() { proto.RegisterFile("lbm/wasm/v1/proposal.proto", fileDescriptor_38b6af62537450c9) } var fileDescriptor_38b6af62537450c9 = []byte{ - // 712 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x55, 0xcd, 0x6e, 0xd3, 0x4a, - 0x14, 0x8e, 0x9b, 0xc6, 0x69, 0x27, 0x51, 0x6f, 0xea, 0x9b, 0xa6, 0xbe, 0xe9, 0x95, 0x1d, 0xb9, - 0x57, 0x57, 0x91, 0xae, 0x6e, 0xa2, 0xb6, 0x12, 0x02, 0x76, 0x71, 0xd8, 0x14, 0xa9, 0x52, 0xe4, - 0x52, 0x21, 0xb1, 0x89, 0xfc, 0x33, 0x4d, 0x47, 0xd8, 0x33, 0x96, 0x67, 0xd2, 0x92, 0xb7, 0xe0, - 0x01, 0x10, 0x3b, 0x04, 0x62, 0x83, 0x58, 0xf3, 0x02, 0x5d, 0x76, 0xd9, 0x95, 0xa1, 0xe9, 0x1b, - 0xe4, 0x09, 0xd0, 0xcc, 0x38, 0x21, 0x41, 0x80, 0x90, 0xa0, 0x48, 0xec, 0x7c, 0xe6, 0x3b, 0x67, - 0xbe, 0x6f, 0xbe, 0x73, 0x3c, 0x03, 0xea, 0xa1, 0x17, 0xb5, 0xcf, 0x5c, 0x1a, 0xb5, 0x4f, 0x77, - 0xda, 0x71, 0x42, 0x62, 0x42, 0xdd, 0xb0, 0x15, 0x27, 0x84, 0x11, 0xad, 0x14, 0x7a, 0x51, 0x8b, - 0x63, 0xad, 0xd3, 0x9d, 0x7a, 0x75, 0x40, 0x06, 0x44, 0xac, 0xb7, 0xf9, 0x97, 0x4c, 0xa9, 0xd7, - 0x78, 0xb9, 0xe7, 0x52, 0xc8, 0xcb, 0x7d, 0x82, 0x70, 0xb6, 0xbe, 0x39, 0xbf, 0x2d, 0x1b, 0xc5, - 0x90, 0x4a, 0xc0, 0x7a, 0xbe, 0x04, 0xd6, 0x0f, 0x19, 0x49, 0x60, 0x97, 0x04, 0xb0, 0x97, 0xf1, - 0x69, 0x55, 0x50, 0x60, 0x88, 0x85, 0x50, 0x57, 0x1a, 0x4a, 0x73, 0xd5, 0x91, 0x81, 0xd6, 0x00, - 0xa5, 0x00, 0x52, 0x3f, 0x41, 0x31, 0x43, 0x04, 0xeb, 0x4b, 0x02, 0x9b, 0x5f, 0xd2, 0x36, 0x80, - 0x9a, 0x0c, 0x71, 0xdf, 0xa5, 0x7a, 0x5e, 0x16, 0x26, 0x43, 0xdc, 0xa1, 0xda, 0x2d, 0xb0, 0xc6, - 0xb9, 0xfb, 0xde, 0x88, 0xc1, 0xbe, 0x4f, 0x02, 0xa8, 0x2f, 0x37, 0x94, 0x66, 0xd9, 0xae, 0x8c, - 0x53, 0xb3, 0xfc, 0xb0, 0x73, 0x78, 0x60, 0x8f, 0x98, 0x10, 0xe0, 0x94, 0x79, 0xde, 0x34, 0xd2, - 0x6a, 0x40, 0xa5, 0x64, 0x98, 0xf8, 0x50, 0x2f, 0x88, 0xed, 0xb2, 0x48, 0xd3, 0x41, 0xd1, 0x1b, - 0xa2, 0x30, 0x80, 0x89, 0xae, 0x0a, 0x60, 0x1a, 0x6a, 0x3d, 0x50, 0x43, 0x98, 0x32, 0x17, 0x33, - 0xe4, 0x32, 0xd8, 0x8f, 0x61, 0x12, 0x21, 0x4a, 0xb9, 0xda, 0x62, 0x43, 0x69, 0x96, 0x76, 0xff, - 0x6a, 0xcd, 0x79, 0xd8, 0xea, 0xf8, 0x3e, 0xa4, 0xb4, 0x4b, 0xf0, 0x31, 0x1a, 0x38, 0x1b, 0x73, - 0x85, 0xbd, 0x59, 0x9d, 0xf5, 0x62, 0x09, 0x6c, 0xed, 0x7f, 0x42, 0xba, 0x04, 0xb3, 0xc4, 0xf5, - 0xd9, 0x4d, 0x59, 0x55, 0x05, 0x05, 0x37, 0x88, 0x10, 0x16, 0x0e, 0xad, 0x3a, 0x32, 0xd0, 0xb6, - 0x41, 0x91, 0xdb, 0xd6, 0x47, 0x81, 0x70, 0x62, 0xd9, 0x06, 0xe3, 0xd4, 0x54, 0xb9, 0x47, 0xfb, - 0xf7, 0x1c, 0x95, 0x43, 0xfb, 0x01, 0x2f, 0x0d, 0x5d, 0x0f, 0x86, 0x99, 0x27, 0x32, 0xd0, 0x2a, - 0x20, 0x1f, 0xd1, 0x81, 0x38, 0x7e, 0xd9, 0xe1, 0x9f, 0xda, 0x03, 0x50, 0x38, 0x1e, 0xe2, 0x80, - 0xea, 0x2b, 0x8d, 0x7c, 0xb3, 0xb4, 0xbb, 0x2e, 0x2c, 0xe1, 0x33, 0xc3, 0x2d, 0xe9, 0x12, 0x84, - 0xed, 0xff, 0xce, 0x53, 0x33, 0xf7, 0xfa, 0xbd, 0xb9, 0x3d, 0x40, 0xec, 0x64, 0xe8, 0xb5, 0x7c, - 0x12, 0xb5, 0x43, 0x84, 0x61, 0x3b, 0xf4, 0xa2, 0xff, 0x69, 0xf0, 0x38, 0x9b, 0x20, 0x9e, 0x4b, - 0x1d, 0xb9, 0x99, 0xf5, 0x4e, 0x01, 0x9b, 0x07, 0x68, 0x90, 0xfc, 0x02, 0x8f, 0xea, 0x60, 0xc5, - 0xcf, 0x28, 0x32, 0x9b, 0x66, 0xf1, 0xf7, 0x39, 0x95, 0x79, 0xa2, 0xce, 0x3c, 0xb1, 0x9e, 0x29, - 0xe0, 0xcf, 0xa3, 0x38, 0x70, 0x19, 0xec, 0x70, 0xc3, 0x7f, 0x58, 0xf9, 0x0e, 0x58, 0xc5, 0xf0, - 0xac, 0x2f, 0x5b, 0x29, 0xc4, 0xdb, 0xd5, 0x49, 0x6a, 0x56, 0x46, 0x6e, 0x14, 0xde, 0xb5, 0x66, - 0x90, 0xe5, 0xac, 0x60, 0x78, 0x26, 0x28, 0xbf, 0x75, 0x2a, 0xeb, 0x04, 0x68, 0xdd, 0x10, 0xba, - 0xc9, 0xcf, 0x11, 0x37, 0xcf, 0x94, 0xff, 0x8c, 0xe9, 0x8d, 0x02, 0x2a, 0x3d, 0x84, 0xb9, 0x61, - 0x74, 0x46, 0xf4, 0xef, 0x02, 0x91, 0x5d, 0x99, 0xa4, 0x66, 0x59, 0x9e, 0x44, 0x2c, 0x5b, 0x53, - 0xea, 0xdb, 0x5f, 0xa0, 0xb6, 0x6b, 0x93, 0xd4, 0xd4, 0x64, 0xf6, 0x1c, 0x68, 0x2d, 0x4a, 0xba, - 0xc3, 0x25, 0x89, 0xb6, 0xf1, 0x5e, 0xe7, 0x9b, 0xcb, 0xb6, 0x31, 0x4e, 0xcd, 0xa2, 0xec, 0x1b, - 0x9d, 0xa4, 0xe6, 0x1f, 0x72, 0x87, 0x69, 0x92, 0xe5, 0x14, 0x65, 0x2f, 0xa9, 0xf5, 0x56, 0x01, - 0xda, 0x11, 0x8e, 0x7f, 0x2b, 0xcd, 0x2f, 0x15, 0xf0, 0xb7, 0x1c, 0xb7, 0xe9, 0xbf, 0x72, 0xc8, - 0x5c, 0x36, 0xa4, 0x37, 0xd9, 0x5a, 0x6d, 0x0f, 0xa8, 0x54, 0xb0, 0x88, 0xf1, 0x5a, 0xdb, 0xdd, - 0x5a, 0xb8, 0x0b, 0x17, 0x85, 0x38, 0x59, 0xaa, 0x7d, 0xff, 0xfc, 0xca, 0xc8, 0x5d, 0x5e, 0x19, - 0xb9, 0x57, 0x63, 0x43, 0x39, 0x1f, 0x1b, 0xca, 0xc5, 0xd8, 0x50, 0x3e, 0x8c, 0x0d, 0xe5, 0xe9, - 0xb5, 0x91, 0xbb, 0xb8, 0x36, 0x72, 0x97, 0xd7, 0x46, 0xee, 0xd1, 0x3f, 0x5f, 0xbb, 0x28, 0x9e, - 0xc8, 0x47, 0x47, 0xdc, 0x17, 0x9e, 0x2a, 0x9e, 0x9c, 0xbd, 0x8f, 0x01, 0x00, 0x00, 0xff, 0xff, - 0xd0, 0xa1, 0x87, 0xa6, 0xe4, 0x06, 0x00, 0x00, + // 687 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x55, 0x4f, 0x6b, 0x13, 0x4d, + 0x18, 0xcf, 0x34, 0x4d, 0xd2, 0x4e, 0x42, 0xdf, 0x74, 0xdf, 0xb4, 0xcd, 0x9b, 0xbe, 0xec, 0x86, + 0xad, 0x48, 0x40, 0x4c, 0x68, 0x0b, 0xa2, 0xde, 0xb2, 0xf1, 0x52, 0xa1, 0x10, 0xb6, 0x16, 0xc1, + 0x4b, 0xd8, 0x3f, 0xd3, 0x74, 0x70, 0x77, 0x66, 0xd9, 0x99, 0xb4, 0xe6, 0x5b, 0xf8, 0x01, 0xbc, + 0x8a, 0xe2, 0x45, 0x3c, 0xfb, 0x05, 0x7a, 0xec, 0xb1, 0xa7, 0xd5, 0xa6, 0x57, 0x4f, 0xf9, 0x04, + 0x32, 0x33, 0x9b, 0x98, 0x88, 0x8a, 0xa0, 0x15, 0xbc, 0xed, 0xf3, 0x6f, 0x7e, 0xbf, 0xe7, 0xf7, + 0x3c, 0x3b, 0x03, 0x6b, 0x81, 0x1b, 0xb6, 0x4e, 0x1d, 0x16, 0xb6, 0x4e, 0xb6, 0x5b, 0x51, 0x4c, + 0x23, 0xca, 0x9c, 0xa0, 0x19, 0xc5, 0x94, 0x53, 0xad, 0x18, 0xb8, 0x61, 0x53, 0xc4, 0x9a, 0x27, + 0xdb, 0xb5, 0x4a, 0x9f, 0xf6, 0xa9, 0xf4, 0xb7, 0xc4, 0x97, 0x4a, 0xa9, 0xad, 0x8b, 0x72, 0xd7, + 0x61, 0x48, 0x94, 0x7b, 0x14, 0x93, 0xd4, 0xbf, 0x31, 0x7b, 0x2c, 0x1f, 0x46, 0x88, 0xa9, 0x80, + 0xf9, 0x09, 0xc0, 0xd5, 0x03, 0x4e, 0x63, 0xd4, 0xa1, 0x3e, 0xea, 0xa6, 0x78, 0x5a, 0x05, 0xe6, + 0x38, 0xe6, 0x01, 0xaa, 0x82, 0x3a, 0x68, 0x2c, 0xdb, 0xca, 0xd0, 0xea, 0xb0, 0xe8, 0x23, 0xe6, + 0xc5, 0x38, 0xe2, 0x98, 0x92, 0xea, 0x82, 0x8c, 0xcd, 0xba, 0xb4, 0x35, 0x98, 0x8f, 0x07, 0xa4, + 0xe7, 0xb0, 0x6a, 0x56, 0x15, 0xc6, 0x03, 0xd2, 0x66, 0xda, 0x1d, 0xb8, 0x22, 0xb0, 0x7b, 0xee, + 0x90, 0xa3, 0x9e, 0x47, 0x7d, 0x54, 0x5d, 0xac, 0x83, 0x46, 0xc9, 0x2a, 0x8f, 0x12, 0xa3, 0xf4, + 0xb8, 0x7d, 0xb0, 0x6f, 0x0d, 0xb9, 0x24, 0x60, 0x97, 0x44, 0xde, 0xc4, 0xd2, 0xba, 0x70, 0x1d, + 0x13, 0xc6, 0x1d, 0xc2, 0xb1, 0xc3, 0x51, 0x2f, 0x42, 0x71, 0x88, 0x19, 0x13, 0xd8, 0x85, 0x3a, + 0x68, 0x14, 0x77, 0xfe, 0x6b, 0xce, 0x28, 0xd2, 0x6c, 0x7b, 0x1e, 0x62, 0xac, 0x43, 0xc9, 0x11, + 0xee, 0xdb, 0x6b, 0x33, 0x85, 0xdd, 0x69, 0x9d, 0xf9, 0x72, 0x01, 0x6e, 0xee, 0x7d, 0x89, 0x74, + 0x28, 0xe1, 0xb1, 0xe3, 0xf1, 0xeb, 0x6a, 0xbc, 0x02, 0x73, 0x8e, 0x1f, 0x62, 0x22, 0xfb, 0x5d, + 0xb6, 0x95, 0xa1, 0x6d, 0xc1, 0x82, 0x10, 0xa1, 0x87, 0xfd, 0x6a, 0xae, 0x0e, 0x1a, 0x8b, 0x16, + 0x1c, 0x25, 0x46, 0x5e, 0x74, 0xbc, 0xf7, 0xc0, 0xce, 0x8b, 0xd0, 0x9e, 0x2f, 0x4a, 0x03, 0xc7, + 0x45, 0x41, 0x35, 0xaf, 0x4a, 0xa5, 0xa1, 0x95, 0x61, 0x36, 0x64, 0x7d, 0xd9, 0x7e, 0xc9, 0x16, + 0x9f, 0xda, 0x23, 0x98, 0x3b, 0x1a, 0x10, 0x9f, 0x55, 0x97, 0xea, 0xd9, 0x46, 0x71, 0x67, 0x55, + 0x4a, 0x22, 0x36, 0x40, 0x48, 0xd2, 0xa1, 0x98, 0x58, 0xb7, 0xce, 0x12, 0x23, 0xf3, 0xe6, 0x83, + 0xb1, 0xd5, 0xc7, 0xfc, 0x78, 0xe0, 0x36, 0x3d, 0x1a, 0xb6, 0x02, 0x4c, 0x50, 0x2b, 0x70, 0xc3, + 0xdb, 0xcc, 0x7f, 0x9a, 0xee, 0x83, 0xc8, 0x65, 0xb6, 0x3a, 0xcc, 0x7c, 0x0f, 0xe0, 0xc6, 0x3e, + 0xee, 0xc7, 0x7f, 0x40, 0xa3, 0x1a, 0x5c, 0xf2, 0x52, 0x88, 0x54, 0xa6, 0xa9, 0xfd, 0x73, 0x4a, + 0xa5, 0x9a, 0xe4, 0xa7, 0x9a, 0x98, 0x2f, 0x00, 0xfc, 0xf7, 0x30, 0xf2, 0x1d, 0x8e, 0xda, 0x42, + 0xf0, 0x5f, 0x66, 0xbe, 0x0d, 0x97, 0x09, 0x3a, 0xed, 0xa9, 0x51, 0x4a, 0xf2, 0x56, 0x65, 0x9c, + 0x18, 0xe5, 0xa1, 0x13, 0x06, 0xf7, 0xcd, 0x69, 0xc8, 0xb4, 0x97, 0x08, 0x3a, 0x95, 0x90, 0x3f, + 0xea, 0xca, 0x3c, 0x86, 0x5a, 0x27, 0x40, 0x4e, 0xfc, 0x7b, 0xc8, 0xcd, 0x22, 0x65, 0xbf, 0x42, + 0x7a, 0x0b, 0x60, 0xb9, 0x8b, 0x89, 0x10, 0x8c, 0x4d, 0x81, 0x6e, 0xce, 0x01, 0x59, 0xe5, 0x71, + 0x62, 0x94, 0x54, 0x27, 0xd2, 0x6d, 0x4e, 0xa0, 0xef, 0x7e, 0x03, 0xda, 0x5a, 0x1f, 0x27, 0x86, + 0xa6, 0xb2, 0x67, 0x82, 0xe6, 0x3c, 0xa5, 0x7b, 0x82, 0x92, 0x1c, 0x9b, 0x98, 0x75, 0xb6, 0xb1, + 0x68, 0xe9, 0xa3, 0xc4, 0x28, 0xa8, 0xb9, 0xb1, 0x71, 0x62, 0xfc, 0xa3, 0x4e, 0x98, 0x24, 0x99, + 0x76, 0x41, 0xcd, 0x92, 0x99, 0xef, 0x00, 0xd4, 0x0e, 0x49, 0xf4, 0x57, 0x71, 0x7e, 0x05, 0xe0, + 0xff, 0x6a, 0xdd, 0x26, 0xff, 0xca, 0x01, 0x77, 0xf8, 0x80, 0x5d, 0xe7, 0x68, 0xb5, 0x5d, 0x98, + 0x67, 0x12, 0x45, 0xae, 0xd7, 0xca, 0xce, 0xe6, 0xdc, 0x5d, 0x38, 0x4f, 0xc4, 0x4e, 0x53, 0xad, + 0x87, 0x67, 0x97, 0x7a, 0xe6, 0xe2, 0x52, 0xcf, 0xbc, 0x1e, 0xe9, 0xe0, 0x6c, 0xa4, 0x83, 0xf3, + 0x91, 0x0e, 0x3e, 0x8e, 0x74, 0xf0, 0xfc, 0x4a, 0xcf, 0x9c, 0x5f, 0xe9, 0x99, 0x8b, 0x2b, 0x3d, + 0xf3, 0xe4, 0xc6, 0xf7, 0x2e, 0x8a, 0x67, 0xea, 0x09, 0x91, 0xf7, 0x85, 0x9b, 0x97, 0x0f, 0xc8, + 0xee, 0xe7, 0x00, 0x00, 0x00, 0xff, 0xff, 0xee, 0x0e, 0x94, 0x33, 0xb2, 0x06, 0x00, 0x00, } func (this *StoreCodeProposal) Equal(that interface{}) bool { @@ -483,12 +477,6 @@ func (this *StoreCodeProposal) Equal(that interface{}) bool { if !bytes.Equal(this.WASMByteCode, that1.WASMByteCode) { return false } - if this.Source != that1.Source { - return false - } - if this.Builder != that1.Builder { - return false - } if !this.InstantiatePermission.Equal(that1.InstantiatePermission) { return false } @@ -781,20 +769,6 @@ func (m *StoreCodeProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x3a } - if len(m.Builder) > 0 { - i -= len(m.Builder) - copy(dAtA[i:], m.Builder) - i = encodeVarintProposal(dAtA, i, uint64(len(m.Builder))) - i-- - dAtA[i] = 0x32 - } - if len(m.Source) > 0 { - i -= len(m.Source) - copy(dAtA[i:], m.Source) - i = encodeVarintProposal(dAtA, i, uint64(len(m.Source))) - i-- - dAtA[i] = 0x2a - } if len(m.WASMByteCode) > 0 { i -= len(m.WASMByteCode) copy(dAtA[i:], m.WASMByteCode) @@ -1260,14 +1234,6 @@ func (m *StoreCodeProposal) Size() (n int) { if l > 0 { n += 1 + l + sovProposal(uint64(l)) } - l = len(m.Source) - if l > 0 { - n += 1 + l + sovProposal(uint64(l)) - } - l = len(m.Builder) - if l > 0 { - n += 1 + l + sovProposal(uint64(l)) - } if m.InstantiatePermission != nil { l = m.InstantiatePermission.Size() n += 1 + l + sovProposal(uint64(l)) @@ -1632,70 +1598,6 @@ func (m *StoreCodeProposal) Unmarshal(dAtA []byte) error { m.WASMByteCode = []byte{} } iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - 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 ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Source = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Builder", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowProposal - } - 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 ErrInvalidLengthProposal - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthProposal - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Builder = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 7: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field InstantiatePermission", wireType) diff --git a/x/wasm/types/query.pb.go b/x/wasm/types/query.pb.go index f16b7ebead..26d048b7e4 100644 --- a/x/wasm/types/query.pb.go +++ b/x/wasm/types/query.pb.go @@ -560,12 +560,11 @@ var xxx_messageInfo_QueryCodeRequest proto.InternalMessageInfo // CodeInfoResponse contains code meta data from CodeInfo type CodeInfoResponse struct { - CodeID uint64 `protobuf:"varint,1,opt,name=code_id,json=codeId,proto3" json:"id"` - Creator string `protobuf:"bytes,2,opt,name=creator,proto3" json:"creator,omitempty"` - DataHash github_com_line_ostracon_libs_bytes.HexBytes `protobuf:"bytes,3,opt,name=data_hash,json=dataHash,proto3,casttype=github.com/line/ostracon/libs/bytes.HexBytes" json:"data_hash,omitempty"` - Source string `protobuf:"bytes,4,opt,name=source,proto3" json:"source,omitempty"` - Builder string `protobuf:"bytes,5,opt,name=builder,proto3" json:"builder,omitempty"` - InstantiatePermission AccessConfig `protobuf:"bytes,6,opt,name=instantiate_permission,json=instantiatePermission,proto3" json:"instantiate_permission"` + CodeID uint64 `protobuf:"varint,1,opt,name=code_id,json=codeId,proto3" json:"id"` + Creator string `protobuf:"bytes,2,opt,name=creator,proto3" json:"creator,omitempty"` + DataHash github_com_line_ostracon_libs_bytes.HexBytes `protobuf:"bytes,3,opt,name=data_hash,json=dataHash,proto3,casttype=github.com/line/ostracon/libs/bytes.HexBytes" json:"data_hash,omitempty"` + // 4 and 5 intentionally left empty (used in v1beta1) + InstantiatePermission AccessConfig `protobuf:"bytes,6,opt,name=instantiate_permission,json=instantiatePermission,proto3" json:"instantiate_permission"` } func (m *CodeInfoResponse) Reset() { *m = CodeInfoResponse{} } @@ -742,77 +741,75 @@ func init() { func init() { proto.RegisterFile("lbm/wasm/v1/query.proto", fileDescriptor_f1bdb66850244231) } var fileDescriptor_f1bdb66850244231 = []byte{ - // 1107 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xf6, 0xa4, 0x8e, 0x13, 0x4f, 0x52, 0x35, 0x8c, 0x68, 0xe3, 0xb8, 0xc9, 0x6e, 0xd9, 0x50, - 0x94, 0x90, 0xb0, 0x9b, 0xa4, 0x15, 0x07, 0x0e, 0xa0, 0x3a, 0x29, 0x4a, 0x25, 0x22, 0x95, 0x8d, - 0x04, 0x82, 0x8b, 0x35, 0xde, 0x9d, 0x38, 0x0b, 0xeb, 0x1d, 0x77, 0x67, 0xf2, 0xc3, 0x8a, 0x72, - 0xe9, 0x8d, 0x1b, 0x50, 0x2e, 0x9c, 0xe0, 0x04, 0xfc, 0x05, 0xfc, 0x0d, 0x39, 0x46, 0xe2, 0xc2, - 0xc9, 0x02, 0x87, 0x03, 0xca, 0x9f, 0xd0, 0x13, 0x9a, 0xd9, 0x59, 0x7b, 0xd7, 0xf1, 0x3a, 0xa9, - 0x42, 0x6f, 0x1e, 0xcf, 0x7b, 0xef, 0xfb, 0xde, 0xb7, 0x6f, 0xdf, 0x67, 0xc3, 0x69, 0xbf, 0xd6, - 0xb0, 0x0e, 0x30, 0x6b, 0x58, 0xfb, 0xab, 0xd6, 0xb3, 0x3d, 0x12, 0xb6, 0xcc, 0x66, 0x48, 0x39, - 0x45, 0x13, 0x7e, 0xad, 0x61, 0x8a, 0x0b, 0x73, 0x7f, 0xb5, 0xfc, 0x66, 0x9d, 0xd6, 0xa9, 0xfc, - 0xde, 0x12, 0x9f, 0xa2, 0x90, 0xf2, 0x6c, 0x9d, 0xd2, 0xba, 0x4f, 0x2c, 0xdc, 0xf4, 0x2c, 0x1c, - 0x04, 0x94, 0x63, 0xee, 0xd1, 0x80, 0xa9, 0x5b, 0x43, 0x54, 0xae, 0x61, 0x46, 0xa2, 0xb2, 0xa2, - 0x7e, 0x13, 0xd7, 0xbd, 0x40, 0x06, 0xa9, 0x98, 0x14, 0x3a, 0x6f, 0x35, 0x89, 0x4a, 0x36, 0x1e, - 0xc2, 0xd2, 0xa7, 0x22, 0x6b, 0x9d, 0x06, 0x3c, 0xc4, 0x0e, 0x7f, 0x12, 0xec, 0x50, 0x9b, 0x3c, - 0xdb, 0x23, 0x8c, 0xa3, 0x12, 0x1c, 0xc3, 0xae, 0x1b, 0x12, 0xc6, 0x4a, 0xe0, 0x1e, 0x58, 0x28, - 0xda, 0xf1, 0xd1, 0xf8, 0x06, 0xc0, 0x99, 0x01, 0x69, 0xac, 0x49, 0x03, 0x46, 0xb2, 0xf3, 0xd0, - 0x27, 0xf0, 0xa6, 0xa3, 0x32, 0xaa, 0x5e, 0xb0, 0x43, 0x4b, 0x23, 0xf7, 0xc0, 0xc2, 0xc4, 0xda, - 0x8c, 0x99, 0xd0, 0xc0, 0x4c, 0xd6, 0xac, 0x4c, 0x9e, 0xb4, 0xf5, 0xdc, 0x69, 0x5b, 0x07, 0xe7, - 0x6d, 0x3d, 0x67, 0x4f, 0x3a, 0x89, 0xbb, 0x0f, 0xf2, 0xff, 0xfe, 0xac, 0x03, 0xe3, 0x00, 0xde, - 0x4d, 0x51, 0xd9, 0xf4, 0x18, 0xa7, 0x61, 0xeb, 0xd2, 0x26, 0xd0, 0x87, 0x10, 0xf6, 0x74, 0x52, - 0x4c, 0x34, 0xc9, 0x44, 0x88, 0x69, 0x46, 0xcf, 0x68, 0x7f, 0xd5, 0x7c, 0x8a, 0xeb, 0x44, 0x55, - 0xb3, 0x13, 0x19, 0xc6, 0x2f, 0x00, 0xce, 0x0e, 0x46, 0x56, 0x3a, 0x3c, 0x86, 0x63, 0x24, 0xe0, - 0xa1, 0x47, 0x04, 0xf4, 0x8d, 0x85, 0x89, 0xb5, 0xfb, 0x03, 0xfb, 0x5c, 0xa7, 0x2e, 0x51, 0xa9, - 0x8f, 0x03, 0x1e, 0xb6, 0x2a, 0x79, 0xd1, 0xb3, 0x1d, 0xe7, 0xa2, 0x8f, 0x06, 0xf0, 0xd4, 0x33, - 0x79, 0x46, 0xd8, 0x29, 0xa2, 0xfb, 0x7d, 0x0a, 0xb1, 0x4a, 0x4b, 0x60, 0xc6, 0x0a, 0x4d, 0xc3, - 0x31, 0x87, 0xba, 0xa4, 0xea, 0xb9, 0x52, 0xa1, 0xbc, 0x5d, 0x10, 0xc7, 0x27, 0xee, 0xb5, 0x05, - 0x3a, 0xee, 0xd3, 0xa7, 0x8b, 0xab, 0xf4, 0x99, 0x85, 0xc5, 0xf8, 0x79, 0x46, 0x0a, 0x15, 0xed, - 0xde, 0x17, 0xd7, 0x6f, 0xfb, 0x50, 0xc1, 0x3f, 0xf2, 0xfd, 0x98, 0xc1, 0x36, 0xc7, 0x9c, 0xbc, - 0xfe, 0xc9, 0xf8, 0x1e, 0xc0, 0xb9, 0x0c, 0x68, 0xd5, 0xfa, 0x0a, 0x2c, 0x34, 0xa8, 0x4b, 0xfc, - 0x78, 0x32, 0x50, 0x6a, 0x32, 0xb6, 0xc4, 0x95, 0x1a, 0x03, 0x15, 0x77, 0x7d, 0x39, 0x3e, 0x57, - 0x72, 0xd8, 0xf8, 0xe0, 0x15, 0xe5, 0x98, 0x83, 0x50, 0x96, 0xaf, 0xba, 0x98, 0x63, 0x09, 0x3d, - 0x69, 0x17, 0xe5, 0x37, 0x1b, 0x98, 0x63, 0xe3, 0x81, 0x6a, 0xf6, 0x62, 0x61, 0xd5, 0x2c, 0x82, - 0x79, 0x99, 0x09, 0x64, 0xa6, 0xfc, 0x6c, 0x7c, 0x01, 0x35, 0x99, 0xb4, 0xdd, 0xc0, 0x21, 0xff, - 0x7f, 0xf9, 0x6c, 0x43, 0x3d, 0xb3, 0x74, 0x57, 0xfe, 0x04, 0xa3, 0xca, 0xec, 0xcb, 0xb6, 0x5e, - 0x22, 0x81, 0x43, 0x5d, 0x2f, 0xa8, 0x5b, 0x5f, 0x31, 0x1a, 0x98, 0x36, 0x3e, 0xd8, 0x22, 0x8c, - 0x09, 0x2d, 0x23, 0xbe, 0x4b, 0x70, 0x4a, 0xcd, 0xf2, 0xe5, 0x2f, 0x8e, 0xf1, 0xfb, 0x08, 0x9c, - 0x12, 0x81, 0xa9, 0xad, 0xb8, 0xd8, 0x17, 0x5d, 0x99, 0xea, 0xb4, 0xf5, 0x82, 0x0c, 0xdb, 0x38, - 0x6f, 0xeb, 0x23, 0x9e, 0xdb, 0x7d, 0xf1, 0x4a, 0x70, 0xcc, 0x09, 0x09, 0xe6, 0x34, 0x94, 0xdd, - 0x15, 0xed, 0xf8, 0x88, 0xb6, 0x60, 0x51, 0xd0, 0xa9, 0xee, 0x62, 0xb6, 0x5b, 0xba, 0x21, 0xd9, - 0xaf, 0xbc, 0x6c, 0xeb, 0xcb, 0x75, 0x8f, 0xef, 0xee, 0xd5, 0x4c, 0x87, 0x36, 0x2c, 0xdf, 0x0b, - 0x88, 0x45, 0x99, 0xe8, 0x9a, 0x06, 0x96, 0xef, 0xd5, 0x98, 0x55, 0x6b, 0x71, 0xc2, 0xcc, 0x4d, - 0x72, 0x58, 0x11, 0x1f, 0xec, 0x71, 0x51, 0x62, 0x13, 0xb3, 0x5d, 0x74, 0x07, 0x16, 0x18, 0xdd, - 0x0b, 0x1d, 0x52, 0xca, 0x4b, 0x1c, 0x75, 0x12, 0x04, 0x6a, 0x7b, 0x9e, 0xef, 0x92, 0xb0, 0x34, - 0x1a, 0x11, 0x50, 0x47, 0xf4, 0x19, 0xbc, 0xe3, 0x05, 0x8c, 0xe3, 0x80, 0x7b, 0x98, 0x93, 0x6a, - 0x93, 0x84, 0x0d, 0x8f, 0x31, 0x31, 0x92, 0x85, 0x01, 0xab, 0xfc, 0x91, 0xe3, 0x10, 0xc6, 0xd6, - 0x69, 0xb0, 0xe3, 0xd5, 0xd5, 0x3c, 0xdf, 0x4e, 0xa4, 0x3f, 0xed, 0x66, 0xab, 0x5d, 0x7e, 0x0c, - 0xdf, 0x48, 0xa8, 0xac, 0x84, 0xdb, 0x10, 0x6b, 0x42, 0x08, 0x27, 0x0c, 0x03, 0x48, 0x94, 0xb9, - 0xbe, 0x45, 0x9a, 0x96, 0xba, 0x32, 0xde, 0x35, 0x8c, 0x71, 0x47, 0xdd, 0xa1, 0x59, 0xf5, 0xc8, - 0xe5, 0xb8, 0x54, 0xc6, 0xcf, 0xdb, 0xba, 0x3c, 0x47, 0x8f, 0x57, 0xc1, 0x6f, 0x27, 0xe0, 0x59, - 0xfc, 0x94, 0xd3, 0xcb, 0x00, 0xbc, 0xf2, 0x32, 0xf8, 0x11, 0x40, 0x94, 0xac, 0xaa, 0xba, 0xaa, - 0x40, 0xd8, 0xed, 0x2a, 0xde, 0x02, 0x97, 0xb4, 0x15, 0x09, 0x58, 0x8c, 0x5b, 0xba, 0xfe, 0x4e, - 0x58, 0xeb, 0x8c, 0xc3, 0x51, 0xc9, 0x0d, 0x3d, 0x07, 0x70, 0x32, 0x69, 0xbc, 0x28, 0xed, 0x55, - 0x59, 0xbf, 0x11, 0xca, 0xef, 0x5c, 0x16, 0x16, 0xa1, 0x1a, 0xf3, 0xcf, 0xff, 0xf8, 0xe7, 0xc5, - 0xc8, 0x1c, 0xba, 0xdb, 0xfd, 0x15, 0x12, 0x6f, 0x7a, 0xeb, 0x48, 0xbd, 0xd7, 0xc7, 0xe8, 0x05, - 0x80, 0xb7, 0xfa, 0xcc, 0x14, 0x2d, 0x64, 0x03, 0xa4, 0x9d, 0xbe, 0xbc, 0x78, 0x85, 0x48, 0xc5, - 0x66, 0x49, 0xb2, 0xb9, 0x8f, 0xe6, 0x87, 0xb0, 0xb1, 0x76, 0x15, 0x83, 0xef, 0x12, 0xac, 0x94, - 0x85, 0x0d, 0x63, 0x95, 0x76, 0xd7, 0x61, 0xac, 0xfa, 0xfc, 0xd0, 0x58, 0x94, 0xac, 0xe6, 0xd1, - 0x5b, 0x09, 0x56, 0x2e, 0xb1, 0x8e, 0xd4, 0xda, 0x38, 0xb6, 0x7a, 0xe6, 0xf8, 0x03, 0x80, 0x53, - 0xfd, 0xe6, 0x82, 0x06, 0x40, 0x65, 0x78, 0x5f, 0xf9, 0xdd, 0xab, 0x84, 0x0e, 0xa1, 0x75, 0x41, - 0x2c, 0x26, 0x19, 0xfc, 0x04, 0xe0, 0x54, 0xbf, 0x0d, 0x0c, 0xa2, 0x95, 0xe1, 0x41, 0x83, 0x68, - 0x65, 0xb9, 0x8a, 0xf1, 0x50, 0xd2, 0x32, 0xd1, 0xf2, 0x30, 0x5a, 0x21, 0x3e, 0xb0, 0x8e, 0x7a, - 0x66, 0x71, 0x8c, 0x7e, 0x05, 0x10, 0x5d, 0x34, 0x06, 0xb4, 0x74, 0x11, 0x38, 0xd3, 0x99, 0xca, - 0xcb, 0x57, 0x0b, 0x56, 0x3c, 0xdf, 0x97, 0x3c, 0x57, 0x90, 0x39, 0x54, 0x3e, 0x91, 0x9f, 0x66, - 0xba, 0x03, 0xf3, 0x72, 0xd4, 0xe6, 0x06, 0x0d, 0x50, 0x6f, 0xbe, 0xb4, 0xac, 0x6b, 0x05, 0xaf, - 0x4b, 0xf8, 0x19, 0x34, 0x9d, 0x31, 0x54, 0xa8, 0x0a, 0x47, 0xe5, 0x66, 0x42, 0x19, 0x95, 0xe2, - 0x45, 0x58, 0xd6, 0x33, 0xef, 0x15, 0xd4, 0x6d, 0x09, 0x75, 0x0b, 0xdd, 0x4c, 0x41, 0x55, 0x3e, - 0x3e, 0xf9, 0x5b, 0xcb, 0xfd, 0xd6, 0xd1, 0x72, 0x27, 0x1d, 0x0d, 0x9c, 0x76, 0x34, 0xf0, 0x57, - 0x47, 0x03, 0xdf, 0x9e, 0x69, 0xb9, 0xd3, 0x33, 0x2d, 0xf7, 0xe7, 0x99, 0x96, 0xfb, 0xf2, 0xed, - 0x7e, 0xfb, 0xf2, 0x6b, 0x8d, 0xf7, 0x98, 0xfb, 0xb5, 0x75, 0x18, 0x55, 0x92, 0x7f, 0x58, 0x6a, - 0x05, 0xf9, 0x8f, 0xe5, 0xc1, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x40, 0x59, 0xb1, 0xce, 0x4a, - 0x0d, 0x00, 0x00, + // 1079 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcf, 0x6f, 0xe3, 0x44, + 0x14, 0xce, 0x74, 0xbb, 0x6d, 0x33, 0xed, 0x6a, 0xcb, 0x88, 0xa5, 0x69, 0xb6, 0xb5, 0x17, 0x97, + 0x45, 0x2d, 0x2d, 0x76, 0xdb, 0x5d, 0x71, 0xe0, 0x00, 0x5a, 0xb7, 0x8b, 0xba, 0x12, 0x95, 0x16, + 0x57, 0x02, 0xc1, 0x25, 0x9a, 0xd8, 0xd3, 0xc4, 0x90, 0x78, 0xb2, 0x9e, 0x69, 0xd3, 0xa8, 0xca, + 0x65, 0xc5, 0x85, 0x1b, 0xb0, 0x5c, 0x38, 0xc1, 0x09, 0xf8, 0x53, 0x7a, 0xac, 0xc4, 0x85, 0x53, + 0x04, 0x29, 0x07, 0xd4, 0x3f, 0x61, 0x4f, 0x68, 0xc6, 0xe3, 0xc4, 0x4e, 0xe3, 0xb4, 0xab, 0xc2, + 0xcd, 0xf6, 0xbc, 0xf7, 0xbe, 0xef, 0x7d, 0xf3, 0x7e, 0x24, 0x70, 0xae, 0x56, 0xae, 0x5b, 0x4d, + 0xcc, 0xea, 0xd6, 0xe1, 0x86, 0xf5, 0xec, 0x80, 0x84, 0x2d, 0xb3, 0x11, 0x52, 0x4e, 0xd1, 0x74, + 0xad, 0x5c, 0x37, 0xc5, 0x81, 0x79, 0xb8, 0x51, 0x7c, 0xbd, 0x42, 0x2b, 0x54, 0x7e, 0xb7, 0xc4, + 0x53, 0x64, 0x52, 0x5c, 0xa8, 0x50, 0x5a, 0xa9, 0x11, 0x0b, 0x37, 0x7c, 0x0b, 0x07, 0x01, 0xe5, + 0x98, 0xfb, 0x34, 0x60, 0xea, 0xd4, 0x10, 0x91, 0xcb, 0x98, 0x91, 0x28, 0xac, 0x88, 0xdf, 0xc0, + 0x15, 0x3f, 0x90, 0x46, 0xca, 0x26, 0x85, 0xce, 0x5b, 0x0d, 0xa2, 0x9c, 0x8d, 0x87, 0xb0, 0xf0, + 0x89, 0xf0, 0xda, 0xa2, 0x01, 0x0f, 0xb1, 0xcb, 0x9f, 0x04, 0xfb, 0xd4, 0x21, 0xcf, 0x0e, 0x08, + 0xe3, 0xa8, 0x00, 0x27, 0xb1, 0xe7, 0x85, 0x84, 0xb1, 0x02, 0xb8, 0x07, 0x96, 0xf3, 0x4e, 0xfc, + 0x6a, 0x7c, 0x03, 0xe0, 0xfc, 0x10, 0x37, 0xd6, 0xa0, 0x01, 0x23, 0xd9, 0x7e, 0xe8, 0x63, 0x78, + 0xcb, 0x55, 0x1e, 0x25, 0x3f, 0xd8, 0xa7, 0x85, 0xb1, 0x7b, 0x60, 0x79, 0x7a, 0x73, 0xde, 0x4c, + 0x68, 0x60, 0x26, 0x63, 0xda, 0x33, 0x27, 0x1d, 0x3d, 0x77, 0xda, 0xd1, 0xc1, 0x79, 0x47, 0xcf, + 0x39, 0x33, 0x6e, 0xe2, 0xec, 0xfd, 0xf1, 0x7f, 0x7e, 0xd6, 0x81, 0xd1, 0x84, 0x77, 0x53, 0x54, + 0x76, 0x7c, 0xc6, 0x69, 0xd8, 0xba, 0x34, 0x09, 0xf4, 0x01, 0x84, 0x7d, 0x9d, 0x14, 0x13, 0x4d, + 0x32, 0x11, 0x62, 0x9a, 0xd1, 0x1d, 0x1d, 0x6e, 0x98, 0x4f, 0x71, 0x85, 0xa8, 0x68, 0x4e, 0xc2, + 0xc3, 0xf8, 0x05, 0xc0, 0x85, 0xe1, 0xc8, 0x4a, 0x87, 0xc7, 0x70, 0x92, 0x04, 0x3c, 0xf4, 0x89, + 0x80, 0xbe, 0xb1, 0x3c, 0xbd, 0x79, 0x7f, 0x68, 0x9e, 0x5b, 0xd4, 0x23, 0xca, 0xf5, 0x71, 0xc0, + 0xc3, 0x96, 0x3d, 0x2e, 0x72, 0x76, 0x62, 0x5f, 0xf4, 0xe1, 0x10, 0x9e, 0x7a, 0x26, 0xcf, 0x08, + 0x3b, 0x45, 0xf4, 0x70, 0x40, 0x21, 0x66, 0xb7, 0x04, 0x66, 0xac, 0xd0, 0x1c, 0x9c, 0x74, 0xa9, + 0x47, 0x4a, 0xbe, 0x27, 0x15, 0x1a, 0x77, 0x26, 0xc4, 0xeb, 0x13, 0xef, 0xda, 0x02, 0xb5, 0x07, + 0xf4, 0xe9, 0xe1, 0x2a, 0x7d, 0x16, 0x60, 0x3e, 0xbe, 0xcf, 0x48, 0xa1, 0xbc, 0xd3, 0xff, 0x70, + 0xfd, 0xb4, 0x8f, 0x14, 0xfc, 0xa3, 0x5a, 0x2d, 0x66, 0xb0, 0xc7, 0x31, 0x27, 0xff, 0x7f, 0x65, + 0x7c, 0x0f, 0xe0, 0x62, 0x06, 0xb4, 0x4a, 0x7d, 0x1d, 0x4e, 0xd4, 0xa9, 0x47, 0x6a, 0x71, 0x65, + 0xa0, 0x54, 0x65, 0xec, 0x8a, 0x23, 0x55, 0x06, 0xca, 0xee, 0xfa, 0x72, 0x7c, 0xa6, 0xe4, 0x70, + 0x70, 0xf3, 0x15, 0xe5, 0x58, 0x84, 0x50, 0x86, 0x2f, 0x79, 0x98, 0x63, 0x09, 0x3d, 0xe3, 0xe4, + 0xe5, 0x97, 0x6d, 0xcc, 0xb1, 0xf1, 0x40, 0x25, 0x7b, 0x31, 0xb0, 0x4a, 0x16, 0xc1, 0x71, 0xe9, + 0x09, 0xa4, 0xa7, 0x7c, 0x36, 0x3e, 0x87, 0x9a, 0x74, 0xda, 0xab, 0xe3, 0x90, 0xff, 0xb7, 0x7c, + 0xf6, 0xa0, 0x9e, 0x19, 0xba, 0x27, 0x7f, 0x82, 0x91, 0xbd, 0xf0, 0xb2, 0xa3, 0x17, 0x48, 0xe0, + 0x52, 0xcf, 0x0f, 0x2a, 0xd6, 0x97, 0x8c, 0x06, 0xa6, 0x83, 0x9b, 0xbb, 0x84, 0x31, 0xa1, 0x65, + 0xc4, 0x77, 0x15, 0xce, 0xaa, 0x5a, 0xbe, 0xbc, 0x71, 0x8c, 0xaf, 0xc7, 0xe0, 0xac, 0x30, 0x4c, + 0x4d, 0xc5, 0x95, 0x01, 0x6b, 0x7b, 0xb6, 0xdb, 0xd1, 0x27, 0xa4, 0xd9, 0xf6, 0x79, 0x47, 0x1f, + 0xf3, 0xbd, 0x5e, 0xe3, 0x15, 0xe0, 0xa4, 0x1b, 0x12, 0xcc, 0x69, 0x28, 0xb3, 0xcb, 0x3b, 0xf1, + 0x2b, 0xda, 0x85, 0x79, 0x41, 0xa7, 0x54, 0xc5, 0xac, 0x5a, 0xb8, 0x21, 0xd9, 0xaf, 0xbf, 0xec, + 0xe8, 0x6b, 0x15, 0x9f, 0x57, 0x0f, 0xca, 0xa6, 0x4b, 0xeb, 0x56, 0xcd, 0x0f, 0x88, 0x45, 0x99, + 0xc8, 0x9a, 0x06, 0x56, 0xcd, 0x2f, 0x33, 0xab, 0xdc, 0xe2, 0x84, 0x99, 0x3b, 0xe4, 0xc8, 0x16, + 0x0f, 0xce, 0x94, 0x08, 0xb1, 0x83, 0x59, 0x15, 0x7d, 0x0a, 0xdf, 0xf0, 0x03, 0xc6, 0x71, 0xc0, + 0x7d, 0xcc, 0x49, 0xa9, 0x41, 0xc2, 0xba, 0xcf, 0x98, 0x28, 0xb0, 0x89, 0x21, 0x83, 0xf9, 0x91, + 0xeb, 0x12, 0xc6, 0xb6, 0x68, 0xb0, 0xef, 0x57, 0x54, 0x75, 0xde, 0x49, 0xb8, 0x3f, 0xed, 0x79, + 0xab, 0xc9, 0xdc, 0x86, 0xaf, 0x25, 0x34, 0x53, 0x32, 0x6c, 0x8b, 0xa6, 0x17, 0x32, 0x88, 0xf1, + 0x0f, 0x24, 0xca, 0xe2, 0xc0, 0x58, 0x4c, 0x0b, 0x67, 0x4f, 0xf5, 0xc6, 0xff, 0x94, 0xab, 0xce, + 0xd0, 0x82, 0xba, 0x40, 0x79, 0xf9, 0xf6, 0xd4, 0x79, 0x47, 0x97, 0xef, 0xd1, 0x65, 0x29, 0xf8, + 0xbd, 0x04, 0x3c, 0x8b, 0xef, 0x2c, 0xdd, 0xda, 0xe0, 0x95, 0x5b, 0xfb, 0x47, 0x00, 0x51, 0x32, + 0xaa, 0xca, 0xca, 0x86, 0xb0, 0x97, 0x55, 0xdc, 0xd3, 0x97, 0xa4, 0x15, 0x09, 0x98, 0x8f, 0x53, + 0xba, 0x7e, 0x87, 0x6f, 0x76, 0xa7, 0xe0, 0x4d, 0xc9, 0x0d, 0x3d, 0x07, 0x70, 0x26, 0xb9, 0x46, + 0x51, 0x7a, 0xf3, 0x64, 0x6d, 0xfc, 0xe2, 0xdb, 0x97, 0x99, 0x45, 0xa8, 0xc6, 0xd2, 0xf3, 0xdf, + 0xff, 0x7e, 0x31, 0xb6, 0x88, 0xee, 0xf6, 0x7e, 0x53, 0xc4, 0x73, 0xdb, 0x3a, 0x56, 0x5d, 0xda, + 0x46, 0x2f, 0x00, 0xbc, 0x3d, 0xb0, 0x1a, 0xd1, 0x72, 0x36, 0x40, 0x7a, 0x6f, 0x17, 0x57, 0xae, + 0x60, 0xa9, 0xd8, 0xac, 0x4a, 0x36, 0xf7, 0xd1, 0xd2, 0x08, 0x36, 0x56, 0x55, 0x31, 0xf8, 0x2e, + 0xc1, 0x4a, 0x2d, 0xa4, 0x51, 0xac, 0xd2, 0xbb, 0x72, 0x14, 0xab, 0x81, 0xed, 0x66, 0xac, 0x48, + 0x56, 0x4b, 0xe8, 0xcd, 0x04, 0x2b, 0x8f, 0x58, 0xc7, 0x6a, 0x08, 0xb4, 0xad, 0xfe, 0xaa, 0xfb, + 0x01, 0xc0, 0xd9, 0xc1, 0x55, 0x81, 0x86, 0x40, 0x65, 0x6c, 0xb2, 0xe2, 0x3b, 0x57, 0x31, 0x1d, + 0x41, 0xeb, 0x82, 0x58, 0x4c, 0x32, 0xf8, 0x09, 0xc0, 0xd9, 0xc1, 0xa1, 0x3e, 0x8c, 0x56, 0xc6, + 0x46, 0x19, 0x46, 0x2b, 0x6b, 0x47, 0x18, 0x0f, 0x25, 0x2d, 0x13, 0xad, 0x8d, 0xa2, 0x15, 0xe2, + 0xa6, 0x75, 0xdc, 0x1f, 0xfd, 0x6d, 0xf4, 0x2b, 0x80, 0xe8, 0xe2, 0x98, 0x47, 0xab, 0x17, 0x81, + 0x33, 0xf7, 0x4c, 0x71, 0xed, 0x6a, 0xc6, 0x8a, 0xe7, 0x7b, 0x92, 0xe7, 0x3a, 0x32, 0x47, 0xca, + 0x27, 0xfc, 0xd3, 0x4c, 0xf7, 0xe1, 0xb8, 0x2c, 0xb5, 0xc5, 0x61, 0x05, 0xd4, 0xaf, 0x2f, 0x2d, + 0xeb, 0x58, 0xc1, 0xeb, 0x12, 0x7e, 0x1e, 0xcd, 0x65, 0x14, 0x15, 0x2a, 0xc1, 0x9b, 0x72, 0x32, + 0xa1, 0x8c, 0x48, 0xf1, 0x20, 0x2c, 0xea, 0x99, 0xe7, 0x0a, 0xea, 0x8e, 0x84, 0xba, 0x8d, 0x6e, + 0xa5, 0xa0, 0xec, 0x8f, 0x4e, 0xfe, 0xd2, 0x72, 0xbf, 0x75, 0xb5, 0xdc, 0x49, 0x57, 0x03, 0xa7, + 0x5d, 0x0d, 0xfc, 0xd9, 0xd5, 0xc0, 0xb7, 0x67, 0x5a, 0xee, 0xf4, 0x4c, 0xcb, 0xfd, 0x71, 0xa6, + 0xe5, 0xbe, 0x78, 0x6b, 0x70, 0x19, 0xd5, 0xca, 0xf5, 0x77, 0x99, 0xf7, 0x95, 0x75, 0x14, 0x45, + 0x92, 0x7f, 0x3f, 0xca, 0x13, 0xf2, 0xff, 0xc7, 0x83, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x7a, + 0x0e, 0x54, 0x90, 0x18, 0x0d, 0x00, 0x00, } func (this *QueryContractInfoResponse) Equal(that interface{}) bool { @@ -870,12 +867,6 @@ func (this *CodeInfoResponse) Equal(that interface{}) bool { if !bytes.Equal(this.DataHash, that1.DataHash) { return false } - if this.Source != that1.Source { - return false - } - if this.Builder != that1.Builder { - return false - } if !this.InstantiatePermission.Equal(&that1.InstantiatePermission) { return false } @@ -1785,20 +1776,6 @@ func (m *CodeInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x32 - if len(m.Builder) > 0 { - i -= len(m.Builder) - copy(dAtA[i:], m.Builder) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Builder))) - i-- - dAtA[i] = 0x2a - } - if len(m.Source) > 0 { - i -= len(m.Source) - copy(dAtA[i:], m.Source) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Source))) - i-- - dAtA[i] = 0x22 - } if len(m.DataHash) > 0 { i -= len(m.DataHash) copy(dAtA[i:], m.DataHash) @@ -2182,14 +2159,6 @@ func (m *CodeInfoResponse) Size() (n int) { if l > 0 { n += 1 + l + sovQuery(uint64(l)) } - l = len(m.Source) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - l = len(m.Builder) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } l = m.InstantiatePermission.Size() n += 1 + l + sovQuery(uint64(l)) return n @@ -3729,70 +3698,6 @@ func (m *CodeInfoResponse) Unmarshal(dAtA []byte) error { m.DataHash = []byte{} } iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - 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 ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Source = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Builder", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - 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 ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Builder = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field InstantiatePermission", wireType) diff --git a/x/wasm/types/tx.pb.go b/x/wasm/types/tx.pb.go index 4107d6bb4c..9f1488da18 100644 --- a/x/wasm/types/tx.pb.go +++ b/x/wasm/types/tx.pb.go @@ -37,11 +37,6 @@ type MsgStoreCode struct { Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` // WASMByteCode can be raw or gzip compressed WASMByteCode []byte `protobuf:"bytes,2,opt,name=wasm_byte_code,json=wasmByteCode,proto3" json:"wasm_byte_code,omitempty"` - // Source is a valid absolute HTTPS URI to the contract's source code, - // optional - Source string `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` - // Builder is a valid docker image name with tag, optional - Builder string `protobuf:"bytes,4,opt,name=builder,proto3" json:"builder,omitempty"` // InstantiatePermission access control to apply on contract creation, // optional InstantiatePermission *AccessConfig `protobuf:"bytes,5,opt,name=instantiate_permission,json=instantiatePermission,proto3" json:"instantiate_permission,omitempty"` @@ -215,12 +210,7 @@ type MsgStoreCodeAndInstantiateContract struct { // Sender is the that actor that signed the messages Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty"` // WASMByteCode can be raw or gzip compressed - WASMByteCode []byte `protobuf:"bytes,2,opt,name=wasm_byte_code,json=wasmByteCode,proto3" json:"wasm_byte_code,omitempty"` - // Source is a valid absolute HTTPS URI to the contract's source code, optional - Source string `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` - // Builder is a valid docker image name with tag, optional - Builder string `protobuf:"bytes,4,opt,name=builder,proto3" json:"builder,omitempty"` - // InstantiatePermission access control to apply on contract creation, optional + WASMByteCode []byte `protobuf:"bytes,2,opt,name=wasm_byte_code,json=wasmByteCode,proto3" json:"wasm_byte_code,omitempty"` InstantiatePermission *AccessConfig `protobuf:"bytes,5,opt,name=instantiate_permission,json=instantiatePermission,proto3" json:"instantiate_permission,omitempty"` // Admin is an optional address that can execute migrations Admin string `protobuf:"bytes,6,opt,name=admin,proto3" json:"admin,omitempty"` @@ -741,64 +731,63 @@ func init() { func init() { proto.RegisterFile("lbm/wasm/v1/tx.proto", fileDescriptor_751e1d2b9f9bf9e8) } var fileDescriptor_751e1d2b9f9bf9e8 = []byte{ - // 904 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x56, 0x4f, 0x6f, 0xe3, 0x44, - 0x14, 0x8f, 0xd7, 0x69, 0xd2, 0xbc, 0x86, 0xb2, 0x98, 0x6c, 0x6b, 0x5c, 0x94, 0x74, 0xdd, 0x95, - 0xa8, 0x58, 0x48, 0xd8, 0xae, 0xc4, 0x1e, 0x38, 0x35, 0x81, 0x43, 0x25, 0x0c, 0x2b, 0x17, 0x84, - 0x04, 0x87, 0x68, 0x6c, 0xcf, 0x1a, 0x2f, 0xc9, 0x4c, 0xe4, 0x99, 0x6c, 0xdb, 0xd3, 0x4a, 0x5c, - 0xe1, 0xc0, 0xe7, 0xe0, 0x84, 0xc4, 0x97, 0xe8, 0x71, 0x8f, 0x9c, 0x0a, 0xa4, 0x27, 0xbe, 0x02, - 0x27, 0x34, 0x13, 0xdb, 0x9d, 0xb8, 0x76, 0x9b, 0x42, 0x2f, 0xdc, 0xfc, 0xfc, 0xde, 0xfb, 0xbd, - 0xf7, 0x7e, 0xef, 0x8f, 0x0d, 0xad, 0x91, 0x37, 0xee, 0x1d, 0x21, 0x36, 0xee, 0xbd, 0x78, 0xd4, - 0xe3, 0xc7, 0xdd, 0x49, 0x4c, 0x39, 0x35, 0xd6, 0x46, 0xde, 0xb8, 0x2b, 0xde, 0x76, 0x5f, 0x3c, - 0xb2, 0x5a, 0x21, 0x0d, 0xa9, 0x7c, 0xdf, 0x13, 0x4f, 0x73, 0x13, 0x6b, 0x43, 0x38, 0x7a, 0x88, - 0x61, 0xe1, 0xe8, 0xd3, 0x88, 0x24, 0xef, 0x37, 0x17, 0x00, 0x4f, 0x26, 0x98, 0xcd, 0x15, 0xf6, - 0x4c, 0x83, 0xa6, 0xc3, 0xc2, 0x43, 0x4e, 0x63, 0x3c, 0xa0, 0x01, 0x36, 0x36, 0xa0, 0xc6, 0x30, - 0x09, 0x70, 0x6c, 0x6a, 0xdb, 0xda, 0x6e, 0xc3, 0x4d, 0x24, 0xe3, 0x43, 0x58, 0x17, 0xfe, 0x43, - 0xef, 0x84, 0xe3, 0xa1, 0x4f, 0x03, 0x6c, 0xde, 0xd9, 0xd6, 0x76, 0x9b, 0xfd, 0xbb, 0xb3, 0xb3, - 0x4e, 0xf3, 0xab, 0xfd, 0x43, 0xa7, 0x7f, 0xc2, 0x25, 0x82, 0xdb, 0x14, 0x76, 0xa9, 0x24, 0xf1, - 0xe8, 0x34, 0xf6, 0xb1, 0xa9, 0x27, 0x78, 0x52, 0x32, 0x4c, 0xa8, 0x7b, 0xd3, 0x68, 0x24, 0x02, - 0x55, 0xa5, 0x22, 0x15, 0x8d, 0xa7, 0xb0, 0x11, 0x11, 0xc6, 0x11, 0xe1, 0x11, 0xe2, 0x78, 0x38, - 0xc1, 0xf1, 0x38, 0x62, 0x2c, 0xa2, 0xc4, 0x5c, 0xd9, 0xd6, 0x76, 0xd7, 0xf6, 0xde, 0xea, 0x2a, - 0x3c, 0x74, 0xf7, 0x7d, 0x1f, 0x33, 0x36, 0xa0, 0xe4, 0x59, 0x14, 0xba, 0xf7, 0x14, 0xc7, 0xa7, - 0x99, 0x9f, 0xfd, 0x11, 0xb4, 0xd4, 0x1a, 0x5d, 0xcc, 0x26, 0x94, 0x30, 0x6c, 0xec, 0x40, 0x5d, - 0x54, 0x32, 0x8c, 0x02, 0x59, 0x6c, 0xb5, 0x0f, 0xb3, 0xb3, 0x4e, 0x4d, 0x98, 0x1c, 0x7c, 0xec, - 0xd6, 0x84, 0xea, 0x20, 0xb0, 0xff, 0xd2, 0x60, 0xc3, 0x61, 0xe1, 0xc1, 0x05, 0xf2, 0x80, 0x12, - 0x1e, 0x23, 0x9f, 0x97, 0x72, 0xd5, 0x82, 0x15, 0x14, 0x8c, 0x23, 0x22, 0x29, 0x6a, 0xb8, 0x73, - 0x41, 0x8d, 0xa6, 0x97, 0x45, 0x13, 0xae, 0x23, 0xe4, 0xe1, 0x51, 0x42, 0xca, 0x5c, 0x30, 0xee, - 0x82, 0x3e, 0x66, 0xa1, 0xac, 0xbf, 0xe9, 0x8a, 0x47, 0xe3, 0x0b, 0x58, 0x79, 0x36, 0x25, 0x01, - 0x33, 0x6b, 0xdb, 0xfa, 0xee, 0xda, 0xde, 0x1b, 0x92, 0x13, 0xd1, 0x78, 0xc1, 0xc9, 0x80, 0x46, - 0xa4, 0xff, 0xf0, 0xf4, 0xac, 0x53, 0xf9, 0xf9, 0xf7, 0xce, 0x4e, 0x18, 0xf1, 0x6f, 0xa7, 0x5e, - 0xd7, 0xa7, 0xe3, 0xde, 0x28, 0x22, 0xb8, 0x37, 0xf2, 0xc6, 0xef, 0xb3, 0xe0, 0xbb, 0x64, 0x0c, - 0x84, 0x2d, 0x73, 0xe7, 0x60, 0xf6, 0x67, 0xd0, 0x2e, 0x2e, 0x35, 0xa3, 0xcc, 0x84, 0x3a, 0x0a, - 0x82, 0x18, 0x33, 0x96, 0xd4, 0x9c, 0x8a, 0x86, 0x01, 0xd5, 0x00, 0x71, 0x34, 0x1f, 0x0b, 0x57, - 0x3e, 0xdb, 0xbf, 0xea, 0x60, 0xab, 0xcc, 0xef, 0x93, 0xe0, 0x26, 0x3c, 0xfe, 0x8f, 0x67, 0xee, - 0x62, 0x06, 0x6a, 0xea, 0x0c, 0x64, 0xed, 0xad, 0xab, 0xed, 0x7d, 0x02, 0xab, 0x11, 0x89, 0xf8, - 0x50, 0xf4, 0x78, 0x55, 0x56, 0xf8, 0xf6, 0xdf, 0x67, 0x1d, 0x13, 0x13, 0x9f, 0x06, 0x11, 0x09, - 0x7b, 0xcf, 0x19, 0x25, 0x5d, 0x17, 0x1d, 0x39, 0x98, 0x31, 0x14, 0x62, 0xb7, 0x2e, 0xac, 0x1d, - 0x75, 0x0a, 0x1a, 0xb7, 0x39, 0x05, 0x2f, 0xe1, 0xdd, 0xeb, 0x9b, 0x76, 0xa3, 0x25, 0x52, 0xc7, - 0xe6, 0x4e, 0xf1, 0xd8, 0xe8, 0xca, 0xd8, 0xfc, 0xa2, 0x81, 0xe1, 0xb0, 0xf0, 0x93, 0x63, 0xec, - 0x4f, 0x97, 0x18, 0x13, 0x0b, 0x56, 0xfd, 0xc4, 0x26, 0x41, 0xcf, 0xe4, 0x74, 0x73, 0xf4, 0x82, - 0xcd, 0xa9, 0xde, 0x26, 0x67, 0x1f, 0x80, 0x75, 0x39, 0xe3, 0x8c, 0xa3, 0xb4, 0x48, 0x4d, 0x29, - 0xf2, 0xa5, 0xac, 0xd1, 0x89, 0xc2, 0x18, 0xfd, 0xc7, 0x1a, 0x97, 0x3a, 0x2c, 0x09, 0x11, 0xd5, - 0x8c, 0x88, 0x24, 0xe5, 0x5c, 0x02, 0x57, 0xa6, 0x8c, 0x60, 0xdd, 0x61, 0xe1, 0x97, 0x93, 0x00, - 0x71, 0xbc, 0x2f, 0xe7, 0xb9, 0x2c, 0xdd, 0x2d, 0x68, 0x10, 0x7c, 0x34, 0x54, 0xaf, 0xe0, 0x2a, - 0xc1, 0x47, 0x73, 0x27, 0xb5, 0x16, 0x7d, 0xb1, 0x16, 0xdb, 0x94, 0xc7, 0x56, 0x09, 0x91, 0x26, - 0x64, 0x0f, 0xe0, 0x35, 0x87, 0x85, 0x83, 0x11, 0x46, 0xf1, 0xd5, 0xb1, 0xaf, 0x82, 0xdf, 0x84, - 0x7b, 0x0b, 0x20, 0x19, 0xfa, 0xf7, 0x1a, 0x6c, 0x66, 0x81, 0x53, 0x32, 0x0e, 0x39, 0xe2, 0x53, - 0xf6, 0xaf, 0x7a, 0xf2, 0x18, 0x6a, 0x4c, 0x7a, 0xcb, 0x14, 0xd6, 0xf7, 0xb6, 0x16, 0x0e, 0xc8, - 0x62, 0x00, 0x37, 0x31, 0xb5, 0xef, 0x43, 0xa7, 0x24, 0x87, 0x34, 0xcf, 0xbd, 0x1f, 0x6b, 0xa0, - 0x8b, 0xcd, 0x3f, 0x80, 0xc6, 0xc5, 0x37, 0x7b, 0xf1, 0x3a, 0xa9, 0xbb, 0x6b, 0xdd, 0x2f, 0x55, - 0x65, 0x9d, 0x0e, 0xe1, 0xcd, 0xa2, 0xa3, 0xbc, 0x93, 0xf7, 0x2c, 0x30, 0xb2, 0x1e, 0x2e, 0x61, - 0x94, 0x05, 0xfa, 0x41, 0x83, 0xce, 0x75, 0x9f, 0x82, 0x5e, 0x69, 0xbe, 0xc5, 0x0e, 0xd6, 0x93, - 0x1b, 0x3a, 0x64, 0xd9, 0x7c, 0x03, 0xaf, 0xe7, 0x0f, 0x4c, 0x27, 0x8f, 0x95, 0x33, 0xb0, 0xde, - 0xb9, 0xc6, 0x40, 0x05, 0xcf, 0x6f, 0xf6, 0x25, 0xf0, 0x9c, 0xc1, 0x65, 0xf0, 0xb2, 0xd5, 0xfc, - 0x1c, 0xd6, 0xd4, 0x1d, 0xdc, 0xca, 0xfb, 0x29, 0x4a, 0x6b, 0xe7, 0x0a, 0x65, 0x06, 0xf8, 0x29, - 0x80, 0xb2, 0x57, 0x56, 0xde, 0xe5, 0x42, 0x67, 0xd9, 0xe5, 0xba, 0x0c, 0xed, 0x39, 0xb4, 0x0a, - 0xd7, 0xe8, 0x41, 0x71, 0x2a, 0x8b, 0x56, 0xd6, 0x7b, 0xcb, 0x58, 0xa5, 0xb1, 0xfa, 0xfd, 0xd3, - 0x3f, 0xdb, 0x95, 0xd3, 0x59, 0x5b, 0x7b, 0x35, 0x6b, 0x6b, 0x7f, 0xcc, 0xda, 0xda, 0x4f, 0xe7, - 0xed, 0xca, 0xab, 0xf3, 0x76, 0xe5, 0xb7, 0xf3, 0x76, 0xe5, 0xeb, 0x07, 0x65, 0x07, 0xfc, 0x78, - 0xfe, 0x2f, 0x2c, 0xef, 0xb8, 0x57, 0x93, 0x7f, 0xc2, 0x8f, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, - 0x07, 0xd6, 0x9f, 0x7f, 0x75, 0x0b, 0x00, 0x00, + // 882 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0x4f, 0x73, 0xdb, 0x44, + 0x14, 0xb7, 0x6a, 0xc7, 0x89, 0x5f, 0x4c, 0x28, 0xc2, 0x4d, 0x8c, 0xc2, 0xd8, 0xa9, 0xd2, 0x19, + 0x32, 0x14, 0x2c, 0x9a, 0xce, 0xd0, 0x03, 0xa7, 0xd8, 0x70, 0xc8, 0x0c, 0x82, 0x8e, 0x02, 0xc3, + 0x0c, 0x1c, 0x3c, 0x2b, 0x69, 0x2b, 0x54, 0xac, 0x5d, 0x8f, 0x76, 0xd3, 0x24, 0xa7, 0x0e, 0x5c, + 0xe1, 0xc0, 0xe7, 0xe0, 0xd4, 0x8f, 0x91, 0x63, 0x8f, 0x9c, 0x02, 0x38, 0x27, 0xbe, 0x02, 0x27, + 0x66, 0x57, 0x7f, 0xb2, 0x56, 0xa4, 0xc4, 0x81, 0x1e, 0x7a, 0xd3, 0xee, 0x7b, 0xef, 0xf7, 0x7e, + 0xef, 0xfd, 0xf6, 0x3d, 0x1b, 0x3a, 0x13, 0x37, 0xb2, 0x8e, 0x10, 0x8b, 0xac, 0x67, 0x0f, 0x2c, + 0x7e, 0x3c, 0x98, 0xc6, 0x94, 0x53, 0x7d, 0x75, 0xe2, 0x46, 0x03, 0x71, 0x3b, 0x78, 0xf6, 0xc0, + 0xe8, 0x04, 0x34, 0xa0, 0xf2, 0xde, 0x12, 0x5f, 0x89, 0x8b, 0xb1, 0x2e, 0x02, 0x5d, 0xc4, 0xb0, + 0x08, 0xf4, 0x68, 0x48, 0xd2, 0xfb, 0x8d, 0x39, 0xc0, 0x93, 0x29, 0x66, 0x89, 0xc1, 0x7c, 0xa1, + 0x41, 0xdb, 0x66, 0xc1, 0x01, 0xa7, 0x31, 0x1e, 0x51, 0x1f, 0xeb, 0xeb, 0xd0, 0x64, 0x98, 0xf8, + 0x38, 0xee, 0x6a, 0x5b, 0xda, 0x4e, 0xcb, 0x49, 0x4f, 0xfa, 0xc7, 0xb0, 0x26, 0xe2, 0xc7, 0xee, + 0x09, 0xc7, 0x63, 0x8f, 0xfa, 0xb8, 0x7b, 0x6b, 0x4b, 0xdb, 0x69, 0x0f, 0x6f, 0xcf, 0xce, 0xfa, + 0xed, 0x6f, 0xf6, 0x0e, 0xec, 0xe1, 0x09, 0x97, 0x08, 0x4e, 0x5b, 0xf8, 0x65, 0x27, 0xfd, 0x31, + 0xac, 0x87, 0x84, 0x71, 0x44, 0x78, 0x88, 0x38, 0x1e, 0x4f, 0x71, 0x1c, 0x85, 0x8c, 0x85, 0x94, + 0x74, 0x97, 0xb6, 0xb4, 0x9d, 0xd5, 0xdd, 0x77, 0x06, 0x4a, 0x55, 0x83, 0x3d, 0xcf, 0xc3, 0x8c, + 0x8d, 0x28, 0x79, 0x12, 0x06, 0xce, 0x1d, 0x25, 0xf0, 0x71, 0x1e, 0x67, 0x7e, 0x02, 0x1d, 0x95, + 0xb1, 0x83, 0xd9, 0x94, 0x12, 0x86, 0xf5, 0x6d, 0x58, 0x16, 0xbc, 0xc6, 0xa1, 0x2f, 0xa9, 0x37, + 0x86, 0x30, 0x3b, 0xeb, 0x37, 0x85, 0xcb, 0xfe, 0xa7, 0x4e, 0x53, 0x98, 0xf6, 0x7d, 0xf3, 0x6f, + 0x0d, 0xd6, 0x6d, 0x16, 0xec, 0x5f, 0x20, 0x8f, 0x28, 0xe1, 0x31, 0xf2, 0x78, 0x65, 0xe5, 0x1d, + 0x58, 0x42, 0x7e, 0x14, 0x12, 0x59, 0x70, 0xcb, 0x49, 0x0e, 0x6a, 0xb6, 0x7a, 0x55, 0x36, 0x11, + 0x3a, 0x41, 0x2e, 0x9e, 0x74, 0x1b, 0x49, 0xa8, 0x3c, 0xe8, 0xb7, 0xa1, 0x1e, 0xb1, 0x40, 0xd6, + 0xdf, 0x76, 0xc4, 0xa7, 0xfe, 0x15, 0x2c, 0x3d, 0x39, 0x24, 0x3e, 0xeb, 0x36, 0xb7, 0xea, 0x3b, + 0xab, 0xbb, 0x6f, 0xc9, 0x9e, 0x08, 0x19, 0x45, 0x4f, 0x46, 0x34, 0x24, 0xc3, 0xfb, 0xa7, 0x67, + 0xfd, 0xda, 0x6f, 0x7f, 0xf4, 0xb7, 0x83, 0x90, 0x7f, 0x7f, 0xe8, 0x0e, 0x3c, 0x1a, 0x59, 0x93, + 0x90, 0x60, 0x6b, 0xe2, 0x46, 0x1f, 0x32, 0xff, 0x87, 0x54, 0x54, 0xe1, 0xcb, 0x9c, 0x04, 0xcc, + 0xfc, 0x02, 0x7a, 0xe5, 0xa5, 0xe6, 0x2d, 0xeb, 0xc2, 0x32, 0xf2, 0xfd, 0x18, 0x33, 0x96, 0xd6, + 0x9c, 0x1d, 0x75, 0x1d, 0x1a, 0x3e, 0xe2, 0x28, 0x11, 0xd9, 0x91, 0xdf, 0xe6, 0x8f, 0x75, 0x30, + 0xd5, 0xce, 0xef, 0x11, 0xff, 0x26, 0x7d, 0x7c, 0x6d, 0x5e, 0xd0, 0x85, 0xa2, 0x4d, 0x55, 0xd1, + 0x5c, 0xac, 0x65, 0x55, 0xac, 0x47, 0xb0, 0x12, 0x92, 0x90, 0x8f, 0x85, 0x62, 0x2b, 0x92, 0xef, + 0xbb, 0xff, 0x9c, 0xf5, 0xbb, 0x98, 0x78, 0xd4, 0x0f, 0x49, 0x60, 0x3d, 0x65, 0x94, 0x0c, 0x1c, + 0x74, 0x64, 0x63, 0xc6, 0x50, 0x80, 0x9d, 0x65, 0xe1, 0x6d, 0xab, 0x9a, 0xb6, 0x5e, 0xa5, 0xa6, + 0xcf, 0xe1, 0xfd, 0xeb, 0x25, 0xb8, 0xd1, 0x48, 0xa8, 0x8f, 0xe0, 0x56, 0xf9, 0x23, 0xa8, 0x2b, + 0x8f, 0xe0, 0x85, 0x06, 0xba, 0xcd, 0x82, 0xcf, 0x8e, 0xb1, 0x77, 0xb8, 0x80, 0xe8, 0x06, 0xac, + 0x78, 0xa9, 0x4f, 0x8a, 0x9e, 0x9f, 0xb3, 0x39, 0xa8, 0x97, 0xcc, 0x41, 0xe3, 0x55, 0xf6, 0xec, + 0x23, 0x30, 0x2e, 0x33, 0xce, 0x7b, 0x94, 0x15, 0xa9, 0x29, 0x45, 0x3e, 0x97, 0x35, 0xda, 0x61, + 0x10, 0xa3, 0xff, 0x59, 0xe3, 0x42, 0x6b, 0x22, 0x6d, 0x44, 0x23, 0x6f, 0x44, 0x4a, 0xb9, 0x40, + 0xe0, 0x4a, 0xca, 0x08, 0xd6, 0x6c, 0x16, 0x7c, 0x3d, 0xf5, 0x11, 0xc7, 0x7b, 0xf2, 0x3d, 0x57, + 0xd1, 0xdd, 0x84, 0x16, 0xc1, 0x47, 0x63, 0x75, 0xa7, 0xad, 0x10, 0x7c, 0x94, 0x04, 0xa9, 0xb5, + 0xd4, 0xe7, 0x6b, 0x31, 0xbb, 0x72, 0x75, 0x2a, 0x29, 0x32, 0x42, 0xe6, 0x08, 0xde, 0xb0, 0x59, + 0x30, 0x9a, 0x60, 0x14, 0x5f, 0x9d, 0xfb, 0x2a, 0xf8, 0x0d, 0xb8, 0x33, 0x07, 0x92, 0xa3, 0xff, + 0xa4, 0xc1, 0x46, 0x9e, 0x38, 0x6b, 0xc6, 0x01, 0x47, 0xfc, 0x90, 0xfd, 0x27, 0x4d, 0x1e, 0x42, + 0x93, 0xc9, 0x68, 0x49, 0x61, 0x6d, 0x77, 0x73, 0x6e, 0x81, 0xcc, 0x27, 0x70, 0x52, 0x57, 0xf3, + 0x2e, 0xf4, 0x2b, 0x38, 0x64, 0x3c, 0x77, 0x7f, 0x69, 0x42, 0x5d, 0x4c, 0xfe, 0x3e, 0xb4, 0x2e, + 0x7e, 0x4f, 0xe7, 0xb7, 0x93, 0x3a, 0xbb, 0xc6, 0xdd, 0x4a, 0x53, 0xae, 0x74, 0x00, 0x6f, 0x97, + 0xad, 0xd8, 0xed, 0x62, 0x64, 0x89, 0x93, 0x71, 0x7f, 0x01, 0xa7, 0x3c, 0xd1, 0xcf, 0x1a, 0xf4, + 0xaf, 0x5b, 0xec, 0x56, 0x25, 0xdf, 0xf2, 0x00, 0xe3, 0xd1, 0x0d, 0x03, 0x72, 0x36, 0xdf, 0xc1, + 0x9b, 0xc5, 0x05, 0xd3, 0x2f, 0x62, 0x15, 0x1c, 0x8c, 0xf7, 0xae, 0x71, 0x50, 0xc1, 0x8b, 0x93, + 0x7d, 0x09, 0xbc, 0xe0, 0x70, 0x19, 0xbc, 0x6a, 0x34, 0xbf, 0x84, 0x55, 0x75, 0x06, 0x37, 0x8b, + 0x71, 0x8a, 0xd1, 0xd8, 0xbe, 0xc2, 0x98, 0x03, 0x7e, 0x0e, 0xa0, 0xcc, 0x95, 0x51, 0x0c, 0xb9, + 0xb0, 0x19, 0x66, 0xb5, 0x2d, 0x47, 0x7b, 0x0a, 0x9d, 0xd2, 0x31, 0xba, 0x57, 0x4e, 0x65, 0xde, + 0xcb, 0xf8, 0x60, 0x11, 0xaf, 0x2c, 0xd7, 0x70, 0x78, 0xfa, 0x57, 0xaf, 0x76, 0x3a, 0xeb, 0x69, + 0x2f, 0x67, 0x3d, 0xed, 0xcf, 0x59, 0x4f, 0xfb, 0xf5, 0xbc, 0x57, 0x7b, 0x79, 0xde, 0xab, 0xfd, + 0x7e, 0xde, 0xab, 0x7d, 0x7b, 0xaf, 0x6a, 0x81, 0x1f, 0x27, 0xff, 0x53, 0xe5, 0x1e, 0x77, 0x9b, + 0xf2, 0x5f, 0xea, 0xc3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x69, 0x65, 0xfd, 0x11, 0x0b, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1181,20 +1170,6 @@ func (m *MsgStoreCode) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x2a } - if len(m.Builder) > 0 { - i -= len(m.Builder) - copy(dAtA[i:], m.Builder) - i = encodeVarintTx(dAtA, i, uint64(len(m.Builder))) - i-- - dAtA[i] = 0x22 - } - if len(m.Source) > 0 { - i -= len(m.Source) - copy(dAtA[i:], m.Source) - i = encodeVarintTx(dAtA, i, uint64(len(m.Source))) - i-- - dAtA[i] = 0x1a - } if len(m.WASMByteCode) > 0 { i -= len(m.WASMByteCode) copy(dAtA[i:], m.WASMByteCode) @@ -1414,20 +1389,6 @@ func (m *MsgStoreCodeAndInstantiateContract) MarshalToSizedBuffer(dAtA []byte) ( i-- dAtA[i] = 0x2a } - if len(m.Builder) > 0 { - i -= len(m.Builder) - copy(dAtA[i:], m.Builder) - i = encodeVarintTx(dAtA, i, uint64(len(m.Builder))) - i-- - dAtA[i] = 0x22 - } - if len(m.Source) > 0 { - i -= len(m.Source) - copy(dAtA[i:], m.Source) - i = encodeVarintTx(dAtA, i, uint64(len(m.Source))) - i-- - dAtA[i] = 0x1a - } if len(m.WASMByteCode) > 0 { i -= len(m.WASMByteCode) copy(dAtA[i:], m.WASMByteCode) @@ -1871,14 +1832,6 @@ func (m *MsgStoreCode) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Source) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Builder) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } if m.InstantiatePermission != nil { l = m.InstantiatePermission.Size() n += 1 + l + sovTx(uint64(l)) @@ -1963,14 +1916,6 @@ func (m *MsgStoreCodeAndInstantiateContract) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.Source) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Builder) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } if m.InstantiatePermission != nil { l = m.InstantiatePermission.Size() n += 1 + l + sovTx(uint64(l)) @@ -2279,70 +2224,6 @@ func (m *MsgStoreCode) Unmarshal(dAtA []byte) error { m.WASMByteCode = []byte{} } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - 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 ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Source = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Builder", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - 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 ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Builder = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field InstantiatePermission", wireType) @@ -2913,70 +2794,6 @@ func (m *MsgStoreCodeAndInstantiateContract) Unmarshal(dAtA []byte) error { m.WASMByteCode = []byte{} } iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - 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 ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Source = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Builder", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - 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 ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Builder = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field InstantiatePermission", wireType) diff --git a/x/wasm/types/types.pb.go b/x/wasm/types/types.pb.go index 93108824b5..bcbec40a6a 100644 --- a/x/wasm/types/types.pb.go +++ b/x/wasm/types/types.pb.go @@ -250,11 +250,6 @@ type CodeInfo struct { CodeHash []byte `protobuf:"bytes,1,opt,name=code_hash,json=codeHash,proto3" json:"code_hash,omitempty"` // Creator address who initially stored the code Creator string `protobuf:"bytes,2,opt,name=creator,proto3" json:"creator,omitempty"` - // Source is a valid absolute HTTPS URI to the contract's source code, - // optional - Source string `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` - // Builder is a valid docker image name with tag, optional - Builder string `protobuf:"bytes,4,opt,name=builder,proto3" json:"builder,omitempty"` // InstantiateConfig access control to apply on contract creation, optional InstantiateConfig AccessConfig `protobuf:"bytes,5,opt,name=instantiate_config,json=instantiateConfig,proto3" json:"instantiate_config"` } @@ -491,96 +486,94 @@ func init() { func init() { proto.RegisterFile("lbm/wasm/v1/types.proto", fileDescriptor_5a7988258faf20f7) } var fileDescriptor_5a7988258faf20f7 = []byte{ - // 1409 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0x4d, 0x6f, 0xdb, 0x46, - 0x1a, 0x16, 0x6d, 0x59, 0xb6, 0xc6, 0x8a, 0xa3, 0x4c, 0xfc, 0x21, 0x29, 0x89, 0xa4, 0x70, 0x13, - 0xac, 0x93, 0xd8, 0x52, 0xe2, 0x2c, 0x76, 0x37, 0x06, 0x76, 0x17, 0xfa, 0x4a, 0xcc, 0xdd, 0xb5, - 0x64, 0x8c, 0xe4, 0xa4, 0x2e, 0x50, 0x10, 0x23, 0x72, 0x2c, 0x33, 0x21, 0x39, 0x02, 0x67, 0xe4, - 0x48, 0xf9, 0x05, 0x81, 0x4e, 0x45, 0x4f, 0xbd, 0x08, 0x28, 0xd0, 0xa2, 0xc8, 0x0f, 0xe8, 0x3f, - 0xe8, 0x25, 0xc8, 0x29, 0xc7, 0x9e, 0x84, 0xd6, 0xb9, 0xb4, 0x87, 0x5e, 0x7c, 0x29, 0x90, 0x4b, - 0x0b, 0x0e, 0xa9, 0x88, 0x76, 0x5c, 0xdb, 0x37, 0xbd, 0x1f, 0xcf, 0xf3, 0xce, 0xf3, 0xbe, 0xef, - 0x0c, 0x05, 0x96, 0xcc, 0xa6, 0x95, 0x7f, 0x8e, 0x99, 0x95, 0xdf, 0xbf, 0x97, 0xe7, 0xbd, 0x36, - 0x61, 0xb9, 0xb6, 0x43, 0x39, 0x85, 0xb3, 0x66, 0xd3, 0xca, 0xb9, 0x81, 0xdc, 0xfe, 0xbd, 0x54, - 0x52, 0xa3, 0xcc, 0xa2, 0x4c, 0x15, 0xa1, 0xbc, 0x67, 0x78, 0x79, 0xa9, 0xf9, 0x16, 0x6d, 0x51, - 0xcf, 0xef, 0xfe, 0xf2, 0xbd, 0xc9, 0x16, 0xa5, 0x2d, 0x93, 0xe4, 0x85, 0xd5, 0xec, 0xec, 0xe6, - 0xb1, 0xdd, 0xf3, 0x42, 0xf2, 0x27, 0xe0, 0x62, 0x41, 0xd3, 0x08, 0x63, 0x8d, 0x5e, 0x9b, 0x6c, - 0x61, 0x07, 0x5b, 0xf0, 0x3f, 0x60, 0x6a, 0x1f, 0x9b, 0x1d, 0x92, 0x90, 0xb2, 0xd2, 0xf2, 0xdc, - 0xda, 0x52, 0x2e, 0x50, 0x3b, 0x37, 0x4e, 0x2e, 0xc6, 0x0f, 0x87, 0x99, 0x58, 0x0f, 0x5b, 0xe6, - 0xba, 0x2c, 0xf2, 0x65, 0xe4, 0xe1, 0xd6, 0xc3, 0x5f, 0x7e, 0x95, 0x91, 0xe4, 0x2f, 0x24, 0x10, - 0xf3, 0xb2, 0x4b, 0xd4, 0xde, 0x35, 0x5a, 0xb0, 0x0a, 0x40, 0x9b, 0x38, 0x96, 0xc1, 0x98, 0x41, - 0xed, 0xb3, 0xc8, 0x17, 0x0e, 0x87, 0x99, 0x4b, 0x1e, 0xf9, 0x18, 0x24, 0xa3, 0x00, 0x03, 0x5c, - 0x01, 0xd3, 0x58, 0xd7, 0x1d, 0xc2, 0x58, 0x62, 0x22, 0x2b, 0x2d, 0x47, 0x8b, 0xf0, 0x70, 0x98, - 0x99, 0xf3, 0x30, 0x7e, 0x40, 0x46, 0xa3, 0x14, 0xff, 0x50, 0xbf, 0x87, 0x41, 0x44, 0xa8, 0x64, - 0xf0, 0x29, 0x80, 0x1a, 0xd5, 0x89, 0xda, 0x69, 0x9b, 0x14, 0xeb, 0x2a, 0x16, 0xb5, 0xc5, 0xb1, - 0x66, 0xd7, 0x92, 0x27, 0x1c, 0xcb, 0x53, 0x51, 0xbc, 0xfe, 0x7a, 0x98, 0x09, 0x1d, 0x0e, 0x33, - 0x49, 0xaf, 0xd0, 0xc7, 0x14, 0x32, 0x8a, 0xbb, 0xce, 0x6d, 0xe1, 0xf3, 0xa0, 0xf0, 0xa5, 0x04, - 0xd2, 0x86, 0xcd, 0x38, 0xb6, 0xb9, 0x81, 0x39, 0x51, 0x75, 0xb2, 0x8b, 0x3b, 0x26, 0x57, 0x03, - 0xfd, 0x98, 0x38, 0xbd, 0x1f, 0xb7, 0x0e, 0x87, 0x99, 0x9b, 0x5e, 0xc9, 0xd3, 0x89, 0x64, 0x74, - 0x35, 0x90, 0x50, 0xf6, 0xe2, 0x5b, 0xe3, 0xae, 0xed, 0x83, 0x45, 0x8d, 0xda, 0xdc, 0xc1, 0x1a, - 0x57, 0x19, 0xc7, 0xbc, 0xc3, 0x46, 0xd2, 0x27, 0xcf, 0x92, 0x7e, 0xd3, 0x97, 0x7e, 0x6d, 0x24, - 0xfd, 0x24, 0x1a, 0x19, 0xcd, 0x8f, 0x02, 0x75, 0xe1, 0xf7, 0x5b, 0xf0, 0x5f, 0x00, 0x2d, 0xdc, - 0x55, 0x5d, 0x62, 0x55, 0x34, 0x8d, 0x19, 0x2f, 0x48, 0x22, 0x9c, 0x95, 0x96, 0xc3, 0xc5, 0x6b, - 0xe3, 0x7e, 0x7e, 0x9c, 0x23, 0xa3, 0x8b, 0x16, 0xee, 0x3e, 0xc1, 0xcc, 0x2a, 0x51, 0x9d, 0xd4, - 0x8d, 0x17, 0x04, 0x3e, 0x00, 0x73, 0x2d, 0xcc, 0x54, 0xab, 0x63, 0x72, 0xa3, 0x6d, 0x1a, 0xc4, - 0x49, 0x4c, 0x09, 0x9e, 0xc0, 0x02, 0xb8, 0x3c, 0x2d, 0xcc, 0x64, 0x74, 0xa1, 0x85, 0xd9, 0xe6, - 0x87, 0x44, 0xf8, 0x2f, 0x70, 0xc1, 0x6b, 0x8f, 0x46, 0x54, 0x8d, 0x32, 0x9e, 0x88, 0x08, 0x64, - 0xe2, 0x70, 0x98, 0x99, 0x0f, 0xb6, 0xd7, 0x0f, 0xcb, 0x28, 0x36, 0xb2, 0x4b, 0x94, 0x71, 0xb8, - 0x0e, 0x62, 0x1a, 0xb5, 0xda, 0x86, 0xe9, 0xa3, 0xa7, 0x05, 0x7a, 0xe9, 0x70, 0x98, 0xb9, 0x3c, - 0x6a, 0xca, 0x38, 0x2a, 0xa3, 0x59, 0xdf, 0x74, 0xb1, 0x62, 0x03, 0x43, 0xf2, 0xf7, 0x12, 0x98, - 0x71, 0x85, 0x28, 0xf6, 0x2e, 0x85, 0x57, 0x40, 0x54, 0xe8, 0xdc, 0xc3, 0x6c, 0x4f, 0xac, 0x5e, - 0x0c, 0xcd, 0xb8, 0x8e, 0x0d, 0xcc, 0xf6, 0x60, 0x02, 0x4c, 0x6b, 0x0e, 0xc1, 0x9c, 0x3a, 0xde, - 0x7e, 0xa3, 0x91, 0x09, 0x17, 0x41, 0x84, 0xd1, 0x8e, 0xa3, 0x11, 0x31, 0xb3, 0x28, 0xf2, 0x2d, - 0x17, 0xd1, 0xec, 0x18, 0xa6, 0x4e, 0x1c, 0xd1, 0xd8, 0x28, 0x1a, 0x99, 0xb0, 0x0a, 0x60, 0x70, - 0x6d, 0x34, 0x31, 0x50, 0xd1, 0xb5, 0x53, 0x27, 0x1e, 0x76, 0x27, 0x8e, 0x2e, 0x05, 0xa0, 0x5e, - 0x40, 0xfe, 0x75, 0x02, 0xc4, 0x4a, 0xfe, 0x98, 0x85, 0x92, 0xbf, 0x80, 0x69, 0xa1, 0xc4, 0xd0, - 0x85, 0x8e, 0x70, 0x11, 0x1c, 0x0c, 0x33, 0x11, 0x21, 0xb4, 0x8c, 0x22, 0x6e, 0x48, 0xd1, 0x4f, - 0x51, 0x34, 0x0f, 0xa6, 0xb0, 0x6e, 0x19, 0xb6, 0x2f, 0xc8, 0x33, 0x5c, 0xaf, 0x89, 0x9b, 0xc4, - 0xf4, 0xd5, 0x78, 0x06, 0x7c, 0xe0, 0xb3, 0x10, 0xdd, 0x17, 0x90, 0x39, 0x2a, 0xa0, 0xc9, 0xa8, - 0xd9, 0xe1, 0xa4, 0xd1, 0xdd, 0xa2, 0xcc, 0xe0, 0x06, 0xb5, 0xd1, 0x28, 0x1f, 0xae, 0x82, 0x59, - 0xa3, 0xa9, 0xa9, 0x6d, 0xea, 0x70, 0xf7, 0xa4, 0x11, 0xf1, 0x6c, 0x5c, 0x38, 0x18, 0x66, 0xa2, - 0x4a, 0xb1, 0xb4, 0x45, 0x1d, 0xae, 0x94, 0x51, 0xd4, 0x68, 0x6a, 0xe2, 0xa7, 0x0e, 0xef, 0x83, - 0x88, 0xb7, 0xdb, 0x62, 0xce, 0x73, 0x6b, 0x57, 0x8e, 0x14, 0x2a, 0x1d, 0x59, 0x73, 0xe4, 0xa7, - 0xc2, 0x4d, 0x10, 0x25, 0x5d, 0x4e, 0x6c, 0x71, 0xab, 0x67, 0xc4, 0x01, 0xe7, 0x73, 0xde, 0x03, - 0x9c, 0x1b, 0x3d, 0xc0, 0xb9, 0x82, 0xdd, 0x2b, 0x26, 0xdf, 0x7c, 0xb7, 0xba, 0x10, 0x6c, 0x62, - 0x65, 0x04, 0x43, 0x63, 0x86, 0xf5, 0xf0, 0xcf, 0xee, 0xbb, 0xf5, 0x9b, 0x04, 0x12, 0xa3, 0x54, - 0xb7, 0xa9, 0x1b, 0x06, 0xe3, 0xd4, 0xe9, 0x55, 0x6c, 0xee, 0xf4, 0xe0, 0xff, 0x40, 0x94, 0xb6, - 0x89, 0x83, 0xf9, 0xf8, 0x5d, 0x5d, 0x3d, 0xf1, 0xa4, 0x01, 0x64, 0x6d, 0x04, 0x70, 0x5f, 0x17, - 0x34, 0xc6, 0x07, 0x07, 0x39, 0xf1, 0xa7, 0x83, 0x7c, 0x00, 0xa6, 0x3b, 0x6d, 0x5d, 0x8c, 0x60, - 0xf2, 0x9c, 0x23, 0xf0, 0xf3, 0x61, 0x0e, 0x4c, 0x5a, 0xac, 0x25, 0x26, 0x1a, 0x2b, 0x5e, 0x7d, - 0x3f, 0xcc, 0x24, 0x88, 0xad, 0x51, 0xdd, 0xb0, 0x5b, 0xf9, 0xa7, 0x8c, 0xda, 0x39, 0x84, 0x9f, - 0x6f, 0x12, 0xc6, 0x70, 0x8b, 0x20, 0x37, 0x51, 0x46, 0x00, 0x7e, 0x4c, 0x07, 0xaf, 0x83, 0x58, - 0xd3, 0xa4, 0xda, 0x33, 0x75, 0x8f, 0x18, 0xad, 0x3d, 0xee, 0xed, 0x1c, 0x9a, 0x15, 0xbe, 0x0d, - 0xe1, 0x82, 0x49, 0x30, 0xc3, 0xbb, 0xaa, 0x61, 0xeb, 0xa4, 0xeb, 0x29, 0x41, 0xd3, 0xbc, 0xab, - 0xb8, 0xa6, 0x8c, 0xc1, 0xd4, 0x26, 0xd5, 0x89, 0x09, 0x8b, 0x60, 0xf2, 0x19, 0xe9, 0x79, 0x37, - 0xaf, 0x78, 0xf7, 0xfd, 0x30, 0xb3, 0xd2, 0x32, 0xf8, 0x5e, 0xa7, 0x99, 0xd3, 0xa8, 0x95, 0x37, - 0x0d, 0x9b, 0xe4, 0x29, 0x73, 0x3b, 0x47, 0xed, 0xbc, 0x69, 0x34, 0x59, 0xbe, 0xd9, 0xe3, 0x84, - 0xe5, 0x36, 0x48, 0xb7, 0xe8, 0xfe, 0x40, 0x2e, 0xd8, 0x5d, 0x52, 0xef, 0x73, 0x39, 0x21, 0xee, - 0xaf, 0x67, 0xdc, 0xfe, 0x45, 0x02, 0x60, 0xfc, 0x7c, 0xc3, 0xbf, 0x83, 0xa5, 0x42, 0xa9, 0x54, - 0xa9, 0xd7, 0xd5, 0xc6, 0xce, 0x56, 0x45, 0xdd, 0xae, 0xd6, 0xb7, 0x2a, 0x25, 0xe5, 0xa1, 0x52, - 0x29, 0xc7, 0x43, 0xa9, 0x64, 0x7f, 0x90, 0x5d, 0x18, 0x27, 0x6f, 0xdb, 0xac, 0x4d, 0x34, 0x63, - 0xd7, 0x20, 0x3a, 0x5c, 0x01, 0x30, 0x88, 0xab, 0xd6, 0x8a, 0xb5, 0xf2, 0x4e, 0x5c, 0x4a, 0xcd, - 0xf7, 0x07, 0xd9, 0xf8, 0x18, 0x52, 0xa5, 0x4d, 0xaa, 0xf7, 0xe0, 0x3f, 0x40, 0x22, 0x98, 0x5d, - 0xab, 0xfe, 0x7f, 0x47, 0x2d, 0x94, 0xcb, 0xa8, 0x52, 0xaf, 0xc7, 0x27, 0x8e, 0x97, 0xa9, 0xd9, - 0x66, 0xaf, 0xe0, 0x7d, 0x1c, 0xe1, 0x1a, 0x58, 0x08, 0x02, 0x2b, 0x8f, 0x2b, 0x68, 0x47, 0x54, - 0x9a, 0x4c, 0x2d, 0xf5, 0x07, 0xd9, 0xcb, 0x63, 0x54, 0x65, 0x9f, 0x38, 0x3d, 0xb7, 0x58, 0x6a, - 0xe6, 0xe5, 0xd7, 0xe9, 0xd0, 0xab, 0x6f, 0xd2, 0xa1, 0xdb, 0x6f, 0x24, 0x30, 0x77, 0xf4, 0x32, - 0xc0, 0x7f, 0x83, 0x2b, 0xa5, 0x5a, 0xb5, 0x81, 0x0a, 0xa5, 0x86, 0x5a, 0x6f, 0x14, 0x1a, 0xdb, - 0xf5, 0x63, 0x9a, 0xaf, 0xf5, 0x07, 0xd9, 0xe4, 0x51, 0x50, 0x50, 0xf7, 0xdf, 0xc0, 0xe2, 0x71, - 0x7c, 0xa1, 0xd4, 0x50, 0x1e, 0x57, 0xe2, 0x52, 0x2a, 0xd1, 0x1f, 0x64, 0xe7, 0x4b, 0xc7, 0xbe, - 0x31, 0xdc, 0xd8, 0x27, 0xf0, 0x9f, 0x20, 0x71, 0x1c, 0xa5, 0x54, 0x7d, 0xdc, 0x44, 0x2a, 0xd5, - 0x1f, 0x64, 0x17, 0x8f, 0xe2, 0x14, 0x1b, 0x0b, 0x64, 0x40, 0xcc, 0xb7, 0x93, 0x20, 0x7b, 0xd6, - 0x7d, 0x81, 0x04, 0xdc, 0xfd, 0x50, 0xa8, 0x54, 0x2b, 0x57, 0xd4, 0x0d, 0xa5, 0xde, 0xa8, 0xa1, - 0x1d, 0xb5, 0xb6, 0x55, 0x41, 0x85, 0x86, 0x52, 0xab, 0x9e, 0x34, 0xe7, 0x7c, 0x7f, 0x90, 0xbd, - 0x73, 0x16, 0x77, 0xb0, 0x0b, 0x4f, 0xc0, 0xad, 0x73, 0x95, 0x51, 0xaa, 0x4a, 0x23, 0x2e, 0xa5, - 0x96, 0xfb, 0x83, 0xec, 0x8d, 0xb3, 0xf8, 0x15, 0xdb, 0xe0, 0xf0, 0x33, 0xb0, 0x72, 0x2e, 0xe2, - 0x4d, 0xe5, 0x11, 0x2a, 0x34, 0xdc, 0xe6, 0xdd, 0xe9, 0x0f, 0xb2, 0x7f, 0x3d, 0x8b, 0x7b, 0xd3, - 0x68, 0x39, 0x98, 0x93, 0x73, 0xd3, 0x3f, 0xaa, 0x54, 0x2b, 0x75, 0xa5, 0x1e, 0x9f, 0x3c, 0x1f, - 0xfd, 0x23, 0x62, 0x13, 0x66, 0xb0, 0x54, 0xd8, 0x1d, 0x56, 0xf1, 0xe1, 0xeb, 0x9f, 0xd2, 0xa1, - 0x57, 0x07, 0x69, 0xe9, 0xf5, 0x41, 0x5a, 0x7a, 0x7b, 0x90, 0x96, 0x7e, 0x3c, 0x48, 0x4b, 0x9f, - 0xbf, 0x4b, 0x87, 0xde, 0xbe, 0x4b, 0x87, 0x7e, 0x78, 0x97, 0x0e, 0x7d, 0x7a, 0xe3, 0xf8, 0x65, - 0x36, 0x9b, 0xd6, 0x2a, 0xd3, 0x9f, 0xe5, 0xbb, 0xde, 0x7f, 0x6c, 0xf1, 0x07, 0xbb, 0x19, 0x11, - 0x8f, 0xf2, 0xfd, 0x3f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xa3, 0xad, 0x2c, 0x63, 0x7c, 0x0b, 0x00, - 0x00, + // 1381 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0x4d, 0x6f, 0x13, 0x47, + 0x18, 0xf6, 0x26, 0xce, 0x87, 0x27, 0x26, 0x98, 0x21, 0x21, 0xb6, 0x01, 0xdb, 0x6c, 0x41, 0x0d, + 0x90, 0xd8, 0x10, 0xaa, 0xb6, 0x44, 0x6a, 0x2b, 0x7f, 0x2c, 0x64, 0xdb, 0xc6, 0x8e, 0xc6, 0x0e, + 0x34, 0x95, 0xaa, 0xd5, 0x78, 0x77, 0xe2, 0x2c, 0xec, 0xee, 0x58, 0x3b, 0xe3, 0x60, 0xf3, 0x0b, + 0x90, 0x4f, 0x6d, 0x4f, 0xbd, 0x58, 0xaa, 0xd4, 0xaa, 0xe2, 0x07, 0xf4, 0x47, 0x20, 0x4e, 0x1c, + 0x7b, 0xb2, 0xda, 0x70, 0x69, 0x0f, 0xbd, 0xe4, 0x52, 0x89, 0x4b, 0xab, 0x9d, 0xb5, 0xf1, 0x26, + 0xa4, 0x49, 0x6e, 0x7e, 0x3f, 0x9e, 0xe7, 0xfd, 0x9c, 0x77, 0x0d, 0x16, 0xac, 0xba, 0x9d, 0x7b, + 0x82, 0x99, 0x9d, 0xdb, 0xbd, 0x9d, 0xe3, 0x9d, 0x26, 0x61, 0xd9, 0xa6, 0x4b, 0x39, 0x85, 0x33, + 0x56, 0xdd, 0xce, 0x7a, 0x86, 0xec, 0xee, 0xed, 0x64, 0x42, 0xa7, 0xcc, 0xa6, 0x4c, 0x13, 0xa6, + 0x9c, 0x2f, 0xf8, 0x7e, 0xc9, 0xb9, 0x06, 0x6d, 0x50, 0x5f, 0xef, 0xfd, 0x1a, 0x68, 0x13, 0x0d, + 0x4a, 0x1b, 0x16, 0xc9, 0x09, 0xa9, 0xde, 0xda, 0xce, 0x61, 0xa7, 0xe3, 0x9b, 0xe4, 0xaf, 0xc0, + 0xd9, 0xbc, 0xae, 0x13, 0xc6, 0x6a, 0x9d, 0x26, 0xd9, 0xc0, 0x2e, 0xb6, 0xe1, 0x67, 0x60, 0x62, + 0x17, 0x5b, 0x2d, 0x12, 0x97, 0x32, 0xd2, 0xe2, 0xec, 0xca, 0x42, 0x36, 0x10, 0x3b, 0x3b, 0x72, + 0x2e, 0xc4, 0xf6, 0xfb, 0xe9, 0x68, 0x07, 0xdb, 0xd6, 0xaa, 0x2c, 0xfc, 0x65, 0xe4, 0xe3, 0x56, + 0xc3, 0x3f, 0xfc, 0x98, 0x96, 0xe4, 0xef, 0x25, 0x10, 0xf5, 0xbd, 0x8b, 0xd4, 0xd9, 0x36, 0x1b, + 0xb0, 0x0c, 0x40, 0x93, 0xb8, 0xb6, 0xc9, 0x98, 0x49, 0x9d, 0x93, 0xc8, 0xe7, 0xf7, 0xfb, 0xe9, + 0x73, 0x3e, 0xf9, 0x08, 0x24, 0xa3, 0x00, 0x03, 0x5c, 0x02, 0x53, 0xd8, 0x30, 0x5c, 0xc2, 0x58, + 0x7c, 0x2c, 0x23, 0x2d, 0x46, 0x0a, 0x70, 0xbf, 0x9f, 0x9e, 0xf5, 0x31, 0x03, 0x83, 0x8c, 0x86, + 0x2e, 0x83, 0xa4, 0xfe, 0x0d, 0x83, 0x49, 0x51, 0x25, 0x83, 0x8f, 0x00, 0xd4, 0xa9, 0x41, 0xb4, + 0x56, 0xd3, 0xa2, 0xd8, 0xd0, 0xb0, 0x88, 0x2d, 0xd2, 0x9a, 0x59, 0x49, 0x1c, 0x91, 0x96, 0x5f, + 0x45, 0xe1, 0xca, 0x8b, 0x7e, 0x3a, 0xb4, 0xdf, 0x4f, 0x27, 0xfc, 0x40, 0xef, 0x52, 0xc8, 0x28, + 0xe6, 0x29, 0x37, 0x85, 0xce, 0x87, 0xc2, 0x67, 0x12, 0x48, 0x99, 0x0e, 0xe3, 0xd8, 0xe1, 0x26, + 0xe6, 0x44, 0x33, 0xc8, 0x36, 0x6e, 0x59, 0x5c, 0x0b, 0xf4, 0x63, 0xec, 0xf8, 0x7e, 0x5c, 0xdf, + 0xef, 0xa7, 0xaf, 0xf9, 0x21, 0x8f, 0x27, 0x92, 0xd1, 0xa5, 0x80, 0x43, 0xc9, 0xb7, 0x6f, 0x8c, + 0xba, 0xb6, 0x0b, 0x2e, 0xe8, 0xd4, 0xe1, 0x2e, 0xd6, 0xb9, 0xc6, 0x38, 0xe6, 0x2d, 0x36, 0x2c, + 0x7d, 0xfc, 0xa4, 0xd2, 0xaf, 0x0d, 0x4a, 0xbf, 0x3c, 0x2c, 0xfd, 0x28, 0x1a, 0x19, 0xcd, 0x0d, + 0x0d, 0x55, 0xa1, 0x1f, 0xb4, 0xe0, 0x73, 0x00, 0x6d, 0xdc, 0xd6, 0x3c, 0x62, 0x4d, 0x34, 0x8d, + 0x99, 0x4f, 0x49, 0x3c, 0x9c, 0x91, 0x16, 0xc3, 0x85, 0xcb, 0xa3, 0x7e, 0xbe, 0xeb, 0x23, 0xa3, + 0xb3, 0x36, 0x6e, 0x3f, 0xc4, 0xcc, 0x2e, 0x52, 0x83, 0x54, 0xcd, 0xa7, 0x04, 0xde, 0x05, 0xb3, + 0x0d, 0xcc, 0x34, 0xbb, 0x65, 0x71, 0xb3, 0x69, 0x99, 0xc4, 0x8d, 0x4f, 0x08, 0x9e, 0xc0, 0x02, + 0x78, 0x3c, 0x0d, 0xcc, 0x64, 0x74, 0xa6, 0x81, 0xd9, 0xfa, 0x5b, 0x47, 0xf8, 0x09, 0x38, 0xe3, + 0xb7, 0x47, 0x27, 0x9a, 0x4e, 0x19, 0x8f, 0x4f, 0x0a, 0x64, 0x7c, 0xbf, 0x9f, 0x9e, 0x0b, 0xb6, + 0x77, 0x60, 0x96, 0x51, 0x74, 0x28, 0x17, 0x29, 0xe3, 0x70, 0x15, 0x44, 0x75, 0x6a, 0x37, 0x4d, + 0x6b, 0x80, 0x9e, 0x12, 0xe8, 0x85, 0xfd, 0x7e, 0xfa, 0xfc, 0xb0, 0x29, 0x23, 0xab, 0x8c, 0x66, + 0x06, 0xa2, 0x87, 0x15, 0x1b, 0x18, 0x92, 0xbf, 0x93, 0xc0, 0xb4, 0x57, 0x88, 0xea, 0x6c, 0x53, + 0x78, 0x11, 0x44, 0x44, 0x9d, 0x3b, 0x98, 0xed, 0x88, 0xd5, 0x8b, 0xa2, 0x69, 0x4f, 0xb1, 0x86, + 0xd9, 0x0e, 0x8c, 0x83, 0x29, 0xdd, 0x25, 0x98, 0x53, 0xd7, 0xdf, 0x6f, 0x34, 0x14, 0x61, 0x19, + 0xc0, 0xe0, 0x12, 0xe8, 0x62, 0x3c, 0xa2, 0x07, 0xc7, 0xce, 0x2f, 0xec, 0xcd, 0x0f, 0x9d, 0x0b, + 0x40, 0x7d, 0x83, 0xfc, 0xf7, 0x18, 0x88, 0x16, 0x07, 0x43, 0x13, 0x79, 0xbd, 0x07, 0xa6, 0x44, + 0x5e, 0xa6, 0x21, 0xb2, 0x0a, 0x17, 0xc0, 0x5e, 0x3f, 0x3d, 0x29, 0xd2, 0x2e, 0xa1, 0x49, 0xcf, + 0xa4, 0x1a, 0xc7, 0xe4, 0x37, 0x07, 0x26, 0xb0, 0x61, 0x9b, 0x8e, 0x58, 0xa9, 0x08, 0xf2, 0x05, + 0x4f, 0x6b, 0xe1, 0x3a, 0xb1, 0xc4, 0xd0, 0x23, 0xc8, 0x17, 0xe0, 0xdd, 0x01, 0x0b, 0x31, 0x06, + 0x05, 0xa4, 0x0f, 0x16, 0x50, 0x67, 0xd4, 0x6a, 0x71, 0x52, 0x6b, 0x6f, 0x50, 0x66, 0x72, 0x93, + 0x3a, 0x68, 0xe8, 0x0f, 0x97, 0xc1, 0x8c, 0x59, 0xd7, 0xb5, 0x26, 0x75, 0xb9, 0x97, 0xe9, 0xa4, + 0x38, 0x02, 0x67, 0xf6, 0xfa, 0xe9, 0x88, 0x5a, 0x28, 0x6e, 0x50, 0x97, 0xab, 0x25, 0x14, 0x31, + 0xeb, 0xba, 0xf8, 0x69, 0xc0, 0x3b, 0x60, 0xd2, 0xdf, 0x54, 0x31, 0xb5, 0xd9, 0x95, 0x8b, 0x07, + 0x02, 0x15, 0x0f, 0x2c, 0x2d, 0x1a, 0xb8, 0xc2, 0x75, 0x10, 0x21, 0x6d, 0x4e, 0x1c, 0xf1, 0x46, + 0xa7, 0x45, 0x82, 0x73, 0x59, 0xff, 0x9c, 0x66, 0x87, 0xe7, 0x34, 0x9b, 0x77, 0x3a, 0x85, 0xc4, + 0xcb, 0x5f, 0x97, 0xe7, 0x83, 0x4d, 0x54, 0x86, 0x30, 0x34, 0x62, 0x58, 0x0d, 0xff, 0xe9, 0x5d, + 0xa1, 0x7f, 0x24, 0x10, 0x1f, 0xba, 0x7a, 0x4d, 0x5d, 0x33, 0x19, 0xa7, 0x6e, 0x47, 0x71, 0xb8, + 0xdb, 0x81, 0x5f, 0x80, 0x08, 0x6d, 0x12, 0x17, 0xf3, 0xd1, 0x95, 0x5c, 0x3e, 0x32, 0xd3, 0x00, + 0xb2, 0x32, 0x04, 0x78, 0xb7, 0x02, 0x8d, 0xf0, 0xc1, 0x41, 0x8e, 0xfd, 0xef, 0x20, 0xef, 0x82, + 0xa9, 0x56, 0xd3, 0x10, 0x23, 0x18, 0x3f, 0xe5, 0x08, 0x06, 0xfe, 0x30, 0x0b, 0xc6, 0x6d, 0xd6, + 0x10, 0x13, 0x8d, 0x16, 0x2e, 0xbd, 0xe9, 0xa7, 0xe3, 0xc4, 0xd1, 0xa9, 0x61, 0x3a, 0x8d, 0xdc, + 0x23, 0x46, 0x9d, 0x2c, 0xc2, 0x4f, 0xd6, 0x09, 0x63, 0xb8, 0x41, 0x90, 0xe7, 0x28, 0x23, 0x00, + 0xdf, 0xa5, 0x83, 0x57, 0x40, 0xb4, 0x6e, 0x51, 0xfd, 0xb1, 0xb6, 0x43, 0xcc, 0xc6, 0x0e, 0xf7, + 0x77, 0x0e, 0xcd, 0x08, 0xdd, 0x9a, 0x50, 0xc1, 0x04, 0x98, 0xe6, 0x6d, 0xcd, 0x74, 0x0c, 0xd2, + 0xf6, 0x2b, 0x41, 0x53, 0xbc, 0xad, 0x7a, 0xa2, 0x8c, 0xc1, 0xc4, 0x3a, 0x35, 0x88, 0x05, 0x0b, + 0x60, 0xfc, 0x31, 0xe9, 0xf8, 0xef, 0xa8, 0x70, 0xeb, 0x4d, 0x3f, 0xbd, 0xd4, 0x30, 0xf9, 0x4e, + 0xab, 0x9e, 0xd5, 0xa9, 0x9d, 0xb3, 0x4c, 0x87, 0xe4, 0x28, 0xf3, 0x3a, 0x47, 0x9d, 0x9c, 0x65, + 0xd6, 0x59, 0xae, 0xde, 0xe1, 0x84, 0x65, 0xd7, 0x48, 0xbb, 0xe0, 0xfd, 0x40, 0x1e, 0xd8, 0x5b, + 0x52, 0xff, 0xe3, 0x37, 0x26, 0x5e, 0xa3, 0x2f, 0xdc, 0xf8, 0x4b, 0x02, 0x60, 0x74, 0x8c, 0xe1, + 0x87, 0x60, 0x21, 0x5f, 0x2c, 0x2a, 0xd5, 0xaa, 0x56, 0xdb, 0xda, 0x50, 0xb4, 0xcd, 0x72, 0x75, + 0x43, 0x29, 0xaa, 0xf7, 0x54, 0xa5, 0x14, 0x0b, 0x25, 0x13, 0xdd, 0x5e, 0x66, 0x7e, 0xe4, 0xbc, + 0xe9, 0xb0, 0x26, 0xd1, 0xcd, 0x6d, 0x93, 0x18, 0x70, 0x09, 0xc0, 0x20, 0xae, 0x5c, 0x29, 0x54, + 0x4a, 0x5b, 0x31, 0x29, 0x39, 0xd7, 0xed, 0x65, 0x62, 0x23, 0x48, 0x99, 0xd6, 0xa9, 0xd1, 0x81, + 0x1f, 0x81, 0x78, 0xd0, 0xbb, 0x52, 0xfe, 0x72, 0x4b, 0xcb, 0x97, 0x4a, 0x48, 0xa9, 0x56, 0x63, + 0x63, 0x87, 0xc3, 0x54, 0x1c, 0xab, 0x93, 0xf7, 0x3f, 0x75, 0x70, 0x05, 0xcc, 0x07, 0x81, 0xca, + 0x03, 0x05, 0x6d, 0x89, 0x48, 0xe3, 0xc9, 0x85, 0x6e, 0x2f, 0x73, 0x7e, 0x84, 0x52, 0x76, 0x89, + 0xdb, 0xf1, 0x82, 0x25, 0xa7, 0x9f, 0xfd, 0x94, 0x0a, 0x3d, 0xff, 0x39, 0x15, 0xba, 0xf1, 0x52, + 0x02, 0xb3, 0x07, 0x1f, 0x03, 0xfc, 0x14, 0x5c, 0x2c, 0x56, 0xca, 0x35, 0x94, 0x2f, 0xd6, 0xb4, + 0x6a, 0x2d, 0x5f, 0xdb, 0xac, 0x1e, 0xaa, 0xf9, 0x72, 0xb7, 0x97, 0x49, 0x1c, 0x04, 0x05, 0xeb, + 0xfe, 0x00, 0x5c, 0x38, 0x8c, 0xcf, 0x17, 0x6b, 0xea, 0x03, 0x25, 0x26, 0x25, 0xe3, 0xdd, 0x5e, + 0x66, 0xae, 0x78, 0xe8, 0x8b, 0xc1, 0xcd, 0x5d, 0x02, 0x3f, 0x06, 0xf1, 0xc3, 0x28, 0xb5, 0x3c, + 0xc0, 0x8d, 0x25, 0x93, 0xdd, 0x5e, 0xe6, 0xc2, 0x41, 0x9c, 0xea, 0x60, 0x81, 0x0c, 0x14, 0xf3, + 0xcb, 0x38, 0xc8, 0x9c, 0xf4, 0x5e, 0x20, 0x01, 0xb7, 0xde, 0x06, 0x2a, 0x56, 0x4a, 0x8a, 0xb6, + 0xa6, 0x56, 0x6b, 0x15, 0xb4, 0xa5, 0x55, 0x36, 0x14, 0x94, 0xaf, 0xa9, 0x95, 0xf2, 0x51, 0x73, + 0xce, 0x75, 0x7b, 0x99, 0x9b, 0x27, 0x71, 0x07, 0xbb, 0xf0, 0x10, 0x5c, 0x3f, 0x55, 0x18, 0xb5, + 0xac, 0xd6, 0x62, 0x52, 0x72, 0xb1, 0xdb, 0xcb, 0x5c, 0x3d, 0x89, 0x5f, 0x75, 0x4c, 0x0e, 0xbf, + 0x01, 0x4b, 0xa7, 0x22, 0x5e, 0x57, 0xef, 0xa3, 0x7c, 0xcd, 0x6b, 0xde, 0xcd, 0x6e, 0x2f, 0xf3, + 0xfe, 0x49, 0xdc, 0xeb, 0x66, 0xc3, 0xc5, 0x9c, 0x9c, 0x9a, 0xfe, 0xbe, 0x52, 0x56, 0xaa, 0x6a, + 0x35, 0x36, 0x7e, 0x3a, 0xfa, 0xfb, 0xc4, 0x21, 0xcc, 0x64, 0xc9, 0xb0, 0x37, 0xac, 0xc2, 0xbd, + 0x17, 0x7f, 0xa4, 0x42, 0xcf, 0xf7, 0x52, 0xd2, 0x8b, 0xbd, 0x94, 0xf4, 0x6a, 0x2f, 0x25, 0xfd, + 0xbe, 0x97, 0x92, 0xbe, 0x7d, 0x9d, 0x0a, 0xbd, 0x7a, 0x9d, 0x0a, 0xfd, 0xf6, 0x3a, 0x15, 0xfa, + 0xfa, 0xea, 0xe1, 0xc7, 0x6c, 0xd5, 0xed, 0x65, 0x66, 0x3c, 0xce, 0xb5, 0xfd, 0x7f, 0xcc, 0xe2, + 0xef, 0x72, 0x7d, 0x52, 0x1c, 0xe5, 0x3b, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x32, 0xda, 0x3a, + 0x22, 0x4a, 0x0b, 0x00, 0x00, } func (this *AccessTypeParam) Equal(that interface{}) bool { @@ -701,12 +694,6 @@ func (this *CodeInfo) Equal(that interface{}) bool { if this.Creator != that1.Creator { return false } - if this.Source != that1.Source { - return false - } - if this.Builder != that1.Builder { - return false - } if !this.InstantiateConfig.Equal(&that1.InstantiateConfig) { return false } @@ -1005,20 +992,6 @@ func (m *CodeInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x2a - if len(m.Builder) > 0 { - i -= len(m.Builder) - copy(dAtA[i:], m.Builder) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Builder))) - i-- - dAtA[i] = 0x22 - } - if len(m.Source) > 0 { - i -= len(m.Source) - copy(dAtA[i:], m.Source) - i = encodeVarintTypes(dAtA, i, uint64(len(m.Source))) - i-- - dAtA[i] = 0x1a - } if len(m.Creator) > 0 { i -= len(m.Creator) copy(dAtA[i:], m.Creator) @@ -1324,14 +1297,6 @@ func (m *CodeInfo) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } - l = len(m.Source) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } - l = len(m.Builder) - if l > 0 { - n += 1 + l + sovTypes(uint64(l)) - } l = m.InstantiateConfig.Size() n += 1 + l + sovTypes(uint64(l)) return n @@ -1913,70 +1878,6 @@ func (m *CodeInfo) Unmarshal(dAtA []byte) error { } m.Creator = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Source = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Builder", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Builder = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field InstantiateConfig", wireType) From ac743f18af31d41198c38ce5bd6c3796fb96242a Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 00:11:32 +0200 Subject: [PATCH 46/90] x/wasm/types compiles --- x/wasm/types/proposal.go | 15 +---------- x/wasm/types/test_fixtures.go | 6 ----- x/wasm/types/tx.go | 15 ----------- x/wasm/types/types.go | 12 ++------- x/wasm/types/validation.go | 48 ----------------------------------- 5 files changed, 3 insertions(+), 93 deletions(-) diff --git a/x/wasm/types/proposal.go b/x/wasm/types/proposal.go index 216153f4ce..60f7aaa374 100644 --- a/x/wasm/types/proposal.go +++ b/x/wasm/types/proposal.go @@ -100,13 +100,6 @@ func (p StoreCodeProposal) ValidateBasic() error { return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "code bytes %s", err.Error()) } - if err := validateSourceURL(p.Source); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "source %s", err.Error()) - } - - if err := validateBuilder(p.Builder); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "builder %s", err.Error()) - } if p.InstantiatePermission != nil { if err := p.InstantiatePermission.ValidateBasic(); err != nil { return sdkerrors.Wrap(err, "instantiate permission") @@ -122,9 +115,7 @@ func (p StoreCodeProposal) String() string { Description: %s Run as: %s WasmCode: %X - Source: %s - Builder: %s -`, p.Title, p.Description, p.RunAs, p.WASMByteCode, p.Source, p.Builder) +`, p.Title, p.Description, p.RunAs, p.WASMByteCode) } // MarshalYAML pretty prints the wasm byte code @@ -134,16 +125,12 @@ func (p StoreCodeProposal) MarshalYAML() (interface{}, error) { Description string `yaml:"description"` RunAs string `yaml:"run_as"` WASMByteCode string `yaml:"wasm_byte_code"` - Source string `yaml:"source"` - Builder string `yaml:"builder"` InstantiatePermission *AccessConfig `yaml:"instantiate_permission"` }{ Title: p.Title, Description: p.Description, RunAs: p.RunAs, WASMByteCode: base64.StdEncoding.EncodeToString(p.WASMByteCode), - Source: p.Source, - Builder: p.Builder, InstantiatePermission: p.InstantiatePermission, }, nil } diff --git a/x/wasm/types/test_fixtures.go b/x/wasm/types/test_fixtures.go index e55a86f949..51b36962be 100644 --- a/x/wasm/types/test_fixtures.go +++ b/x/wasm/types/test_fixtures.go @@ -74,8 +74,6 @@ func CodeInfoFixture(mutators ...func(*CodeInfo)) CodeInfo { fixture := CodeInfo{ CodeHash: codeHash[:], Creator: anyAddress, - Source: "https://example.com", - Builder: "my/builder:tag", InstantiateConfig: AllowEverybody, } for _, m := range mutators { @@ -133,8 +131,6 @@ func MsgStoreCodeFixture(mutators ...func(*MsgStoreCode)) *MsgStoreCode { r := &MsgStoreCode{ Sender: anyAddress, WASMByteCode: wasmIdent, - Source: "https://example.com/code", - Builder: "foo/bar:latest", InstantiatePermission: &AllowEverybody, } for _, m := range mutators { @@ -189,8 +185,6 @@ func StoreCodeProposalFixture(mutators ...func(*StoreCodeProposal)) *StoreCodePr Description: "Bar", RunAs: anyAddress, WASMByteCode: []byte{0x0}, - Source: "https://example.com/code", - Builder: "foo/bar:latest", } for _, m := range mutators { m(p) diff --git a/x/wasm/types/tx.go b/x/wasm/types/tx.go index 983d380ce6..d07f5cf128 100644 --- a/x/wasm/types/tx.go +++ b/x/wasm/types/tx.go @@ -25,13 +25,6 @@ func (msg MsgStoreCode) ValidateBasic() error { return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "code bytes %s", err.Error()) } - if err := validateSourceURL(msg.Source); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "source %s", err.Error()) - } - - if err := validateBuilder(msg.Builder); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "builder %s", err.Error()) - } if msg.InstantiatePermission != nil { if err := msg.InstantiatePermission.ValidateBasic(); err != nil { return sdkerrors.Wrap(err, "instantiate permission") @@ -115,14 +108,6 @@ func (msg MsgStoreCodeAndInstantiateContract) ValidateBasic() error { return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "code bytes %s", err.Error()) } - if err := validateSourceURL(msg.Source); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "source %s", err.Error()) - } - - if err := validateBuilder(msg.Builder); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "builder %s", err.Error()) - } - if msg.InstantiatePermission != nil { if err := msg.InstantiatePermission.ValidateBasic(); err != nil { return sdkerrors.Wrap(err, "instantiate permission") diff --git a/x/wasm/types/types.go b/x/wasm/types/types.go index aa606a769a..653660647b 100644 --- a/x/wasm/types/types.go +++ b/x/wasm/types/types.go @@ -71,25 +71,17 @@ func (c CodeInfo) ValidateBasic() error { if err := sdk.ValidateAccAddress(c.Creator); err != nil { return sdkerrors.Wrap(err, "creator") } - if err := validateSourceURL(c.Source); err != nil { - return sdkerrors.Wrap(err, "source") - } - if err := validateBuilder(c.Builder); err != nil { - return sdkerrors.Wrap(err, "builder") - } if err := c.InstantiateConfig.ValidateBasic(); err != nil { return sdkerrors.Wrap(err, "instantiate config") } return nil } -// NewCodeInfo fills a new Contract struct -func NewCodeInfo(codeHash []byte, creator sdk.AccAddress, source string, builder string, instantiatePermission AccessConfig) CodeInfo { +// NewCodeInfo fills a new CodeInfo struct +func NewCodeInfo(codeHash []byte, creator sdk.AccAddress, instantiatePermission AccessConfig) CodeInfo { return CodeInfo{ CodeHash: codeHash, Creator: creator.String(), - Source: source, - Builder: builder, InstantiateConfig: instantiatePermission, } } diff --git a/x/wasm/types/validation.go b/x/wasm/types/validation.go index e399c23704..baacebf23a 100644 --- a/x/wasm/types/validation.go +++ b/x/wasm/types/validation.go @@ -1,9 +1,6 @@ package types import ( - "net/url" - "regexp" - sdkerrors "github.com/line/lbm-sdk/types/errors" ) @@ -12,53 +9,8 @@ const ( // MaxLabelSize is the longest label that can be used when Instantiating a contract MaxLabelSize = 128 - - // BuildTagRegexp is a docker image regexp. - // We only support max 128 characters, with at least one organization name (subset of all legal names). - // - // Details from https://docs.docker.com/engine/reference/commandline/tag/#extended-description : - // - // An image name is made up of slash-separated name components (optionally prefixed by a registry hostname). - // Name components may contain lowercase characters, digits and separators. - // A separator is defined as a period, one or two underscores, or one or more dashes. A name component may not start or end with a separator. - // - // A tag name must be valid ASCII and may contain lowercase and uppercase letters, digits, underscores, periods and dashes. - // A tag name may not start with a period or a dash and may contain a maximum of 128 characters. - BuildTagRegexp = "^[a-z0-9][a-z0-9._-]*[a-z0-9](/[a-z0-9][a-z0-9._-]*[a-z0-9])+:[a-zA-Z0-9_][a-zA-Z0-9_.-]*$" - - MaxBuildTagSize = 128 ) -func validateSourceURL(source string) error { - if source != "" { - u, err := url.Parse(source) - if err != nil { - return sdkerrors.Wrap(ErrInvalid, "not an url") - } - if !u.IsAbs() { - return sdkerrors.Wrap(ErrInvalid, "not an absolute url") - } - if u.Scheme != "https" { - return sdkerrors.Wrap(ErrInvalid, "must use https") - } - } - return nil -} - -func validateBuilder(buildTag string) error { - if len(buildTag) > MaxBuildTagSize { - return sdkerrors.Wrap(ErrLimit, "longer than 128 characters") - } - - if buildTag != "" { - ok, err := regexp.MatchString(BuildTagRegexp, buildTag) - if err != nil || !ok { - return ErrInvalid - } - } - return nil -} - func validateWasmCode(s []byte) error { if len(s) == 0 { return sdkerrors.Wrap(ErrEmpty, "is required") From 840fcf4b7497279616cbd1e70b2352d45528cc90 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 00:17:42 +0200 Subject: [PATCH 47/90] x/wasm/keeper compiled --- x/wasm/keeper/contract_keeper.go | 6 +++--- x/wasm/keeper/genesis_test.go | 6 +----- x/wasm/keeper/keeper.go | 4 ++-- x/wasm/keeper/keeper_test.go | 24 ++++++++++++------------ x/wasm/keeper/legacy_querier.go | 2 -- x/wasm/keeper/msg_server.go | 6 ++---- x/wasm/keeper/proposal_handler.go | 2 +- x/wasm/keeper/querier.go | 4 ---- x/wasm/keeper/test_common.go | 9 ++++----- x/wasm/types/exported_keepers.go | 2 +- 10 files changed, 26 insertions(+), 39 deletions(-) diff --git a/x/wasm/keeper/contract_keeper.go b/x/wasm/keeper/contract_keeper.go index fa4648194b..cd251aaf8a 100644 --- a/x/wasm/keeper/contract_keeper.go +++ b/x/wasm/keeper/contract_keeper.go @@ -9,7 +9,7 @@ var _ types.ContractOpsKeeper = PermissionedKeeper{} // decoratedKeeper contains a subset of the wasm keeper that are already or can be guarded by an authorization policy in the future type decoratedKeeper interface { - create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, source string, builder string, instantiateAccess *types.AccessConfig, authZ AuthorizationPolicy) (codeID uint64, err error) + create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, instantiateAccess *types.AccessConfig, authZ AuthorizationPolicy) (codeID uint64, err error) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.AccAddress, initMsg []byte, label string, deposit sdk.Coins, authZ AuthorizationPolicy) (sdk.AccAddress, []byte, error) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller sdk.AccAddress, newCodeID uint64, msg []byte, authZ AuthorizationPolicy) ([]byte, error) setContractAdmin(ctx sdk.Context, contractAddress, caller, newAdmin sdk.AccAddress, authZ AuthorizationPolicy) error @@ -37,8 +37,8 @@ func NewDefaultPermissionKeeper(nested decoratedKeeper) *PermissionedKeeper { return NewPermissionedKeeper(nested, DefaultAuthorizationPolicy{}) } -func (p PermissionedKeeper) Create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, source string, builder string, instantiateAccess *types.AccessConfig) (codeID uint64, err error) { - return p.nested.create(ctx, creator, wasmCode, source, builder, instantiateAccess, p.authZPolicy) +func (p PermissionedKeeper) Create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, instantiateAccess *types.AccessConfig) (codeID uint64, err error) { + return p.nested.create(ctx, creator, wasmCode, instantiateAccess, p.authZPolicy) } func (p PermissionedKeeper) Instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.AccAddress, initMsg []byte, label string, deposit sdk.Coins) (sdk.AccAddress, []byte, error) { diff --git a/x/wasm/keeper/genesis_test.go b/x/wasm/keeper/genesis_test.go index 5297554ed4..c55bbcef3a 100644 --- a/x/wasm/keeper/genesis_test.go +++ b/x/wasm/keeper/genesis_test.go @@ -65,7 +65,7 @@ func TestGenesisExportImport(t *testing.T) { err := sdk.ValidateAccAddress(codeInfo.Creator) require.NoError(t, err) - codeID, err := contractKeeper.Create(srcCtx, sdk.AccAddress(codeInfo.Creator), wasmCode, codeInfo.Source, codeInfo.Builder, &codeInfo.InstantiateConfig) + codeID, err := contractKeeper.Create(srcCtx, sdk.AccAddress(codeInfo.Creator), wasmCode, &codeInfo.InstantiateConfig) require.NoError(t, err) if pinned { contractKeeper.PinCode(srcCtx, codeID) @@ -469,8 +469,6 @@ func TestImportContractWithCodeHistoryReset(t *testing.T) { "code_info": { "code_hash": %q, "creator": "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu", - "source": "https://example.com", - "builder": "foo/bar:tag", "instantiate_config": { "permission": "OnlyAddress", "address": "link18vd8fpwxzck93qlwghaj6arh4p7c5n89fvcmzu" @@ -531,8 +529,6 @@ func TestImportContractWithCodeHistoryReset(t *testing.T) { expCodeInfo := types.CodeInfo{ CodeHash: wasmCodeHash[:], Creator: codeCreatorAddr, - Source: "https://example.com", - Builder: "foo/bar:tag", InstantiateConfig: wasmTypes.AccessConfig{ Permission: types.AccessTypeOnlyAddress, Address: codeCreatorAddr, diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index ef551992ba..87f7328bed 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -224,7 +224,7 @@ func (k Keeper) setParams(ctx sdk.Context, ps types.Params) { k.paramSpace.SetParamSet(ctx, &ps) } -func (k Keeper) create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, source string, builder string, instantiateAccess *types.AccessConfig, authZ AuthorizationPolicy) (codeID uint64, err error) { +func (k Keeper) create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, instantiateAccess *types.AccessConfig, authZ AuthorizationPolicy) (codeID uint64, err error) { if !authZ.CanCreateCode(k.getUploadAccessConfig(ctx), creator) { return 0, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "can not create code") } @@ -243,7 +243,7 @@ func (k Keeper) create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, defaultAccessConfig := k.getInstantiateAccessConfig(ctx).With(creator) instantiateAccess = &defaultAccessConfig } - codeInfo := types.NewCodeInfo(codeHash, creator, source, builder, *instantiateAccess) + codeInfo := types.NewCodeInfo(codeHash, creator, *instantiateAccess) k.storeCodeInfo(ctx, codeID, codeInfo) return codeID, nil } diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index d9ad8bb651..2a3ffaa57a 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -40,7 +40,7 @@ func TestCreate(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - contractID, err := keeper.Create(ctx, creator, wasmCode, "https://github.com/line/lbm-sdk/blob/main/x/wasm/internal/keeper/testdata/hackatom.wasm", "any/builder:tag", nil) + contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), contractID) // and verify content @@ -93,7 +93,7 @@ func TestCreateStoresInstantiatePermission(t *testing.T) { }) fundAccounts(t, ctx, accKeeper, bankKeeper, myAddr, deposit) - codeID, err := keeper.Create(ctx, myAddr, wasmCode, "https://github.com/line/lbm-sdk/blob/main/x/wasm/internal/keeper/testdata/hackatom.wasm", "any/builder:tag", nil) + codeID, err := keeper.Create(ctx, myAddr, wasmCode, nil) require.NoError(t, err) codeInfo := keepers.WasmKeeper.GetCodeInfo(ctx, codeID) @@ -141,7 +141,7 @@ func TestCreateWithParamPermissions(t *testing.T) { params := types.DefaultParams() params.CodeUploadAccess = spec.srcPermission keepers.WasmKeeper.setParams(ctx, params) - _, err := keeper.Create(ctx, creator, wasmCode, "https://github.com/line/lbm-sdk/blob/main/x/wasm/keeper/testdata/hackatom.wasm", "any/builder:tag", nil) + _, err := keeper.Create(ctx, creator, wasmCode, nil) require.True(t, spec.expError.Is(err), err) if spec.expError != nil { return @@ -161,12 +161,12 @@ func TestCreateDuplicate(t *testing.T) { require.NoError(t, err) // create one copy - contractID, err := keeper.Create(ctx, creator, wasmCode, "https://github.com/line/lbm-sdk/blob/main/x/wasm/internal/keeper/testdata/hackatom.wasm", "any/builder:tag", nil) + contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), contractID) // create second copy - duplicateID, err := keeper.Create(ctx, creator, wasmCode, "https://github.com/line/lbm-sdk/blob/main/x/wasm/internal/keeper/testdata/hackatom.wasm", "any/builder:tag", nil) + duplicateID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) require.Equal(t, uint64(2), duplicateID) @@ -193,14 +193,14 @@ func TestCreateWithSimulation(t *testing.T) { require.NoError(t, err) // create this once in simulation mode - contractID, err := keeper.Create(ctx, creator, wasmCode, "https://github.com/line/lbm-sdk/blob/main/x/wasm/keeper/testdata/hackatom.wasm", "any/builder:tag", nil) + contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), contractID) // then try to create it in non-simulation mode (should not fail) ctx, keepers = CreateTestInput(t, false, SupportedFeatures, nil, nil) accKeeper, keeper = keepers.AccountKeeper, keepers.ContractKeeper - contractID, err = keeper.Create(ctx, creator, wasmCode, "https://github.com/line/lbm-sdk/blob/main/x/wasm/keeper/testdata/hackatom.wasm", "any/builder:tag", nil) + contractID, err = keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), contractID) @@ -245,7 +245,7 @@ func TestCreateWithGzippedPayload(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm.gzip") require.NoError(t, err) - contractID, err := keeper.Create(ctx, creator, wasmCode, "https://github.com/line/lbm-sdk/blob/main/x/wasm/internal/keeper/testdata/hackatom.wasm", "", nil) + contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), contractID) // and verify content @@ -266,7 +266,7 @@ func TestInstantiate(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - codeID, err := keeper.Create(ctx, creator, wasmCode, "https://github.com/line/lbm-sdk/blob/main/x/wasm/internal/keeper/testdata/hackatom.wasm", "", nil) + codeID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -350,7 +350,7 @@ func TestInstantiateWithDeposit(t *testing.T) { if spec.fundAddr { fundAccounts(t, ctx, accKeeper, bankKeeper, spec.srcActor, sdk.NewCoins(sdk.NewInt64Coin("denom", 200))) } - contractID, err := keeper.Create(ctx, spec.srcActor, wasmCode, "https://github.com/line/lbm-sdk/blob/main/x/wasm/internal/keeper/testdata/hackatom.wasm", "", nil) + contractID, err := keeper.Create(ctx, spec.srcActor, wasmCode, nil) require.NoError(t, err) // when @@ -418,7 +418,7 @@ func TestInstantiateWithPermissions(t *testing.T) { accKeeper, bankKeeper, keeper := keepers.AccountKeeper, keepers.BankKeeper, keepers.ContractKeeper fundAccounts(t, ctx, accKeeper, bankKeeper, spec.srcActor, deposit) - contractID, err := keeper.Create(ctx, myAddr, wasmCode, "https://github.com/line/lbm-sdk/blob/main/x/wasm/internal/keeper/testdata/hackatom.wasm", "", &spec.srcPermission) + contractID, err := keeper.Create(ctx, myAddr, wasmCode, &spec.srcPermission) require.NoError(t, err) _, _, err = keepers.ContractKeeper.Instantiate(ctx, contractID, spec.srcActor, "", initMsgBz, "demo contract 1", nil) @@ -606,7 +606,7 @@ func TestExecuteWithDeposit(t *testing.T) { if spec.fundAddr { fundAccounts(t, ctx, accKeeper, bankKeeper, spec.srcActor, sdk.NewCoins(sdk.NewInt64Coin("denom", 200))) } - codeID, err := keeper.Create(ctx, spec.srcActor, wasmCode, "https://example.com/escrow.wasm", "", nil) + codeID, err := keeper.Create(ctx, spec.srcActor, wasmCode, nil) require.NoError(t, err) initMsg := HackatomExampleInitMsg{Verifier: spec.srcActor, Beneficiary: spec.beneficiary} diff --git a/x/wasm/keeper/legacy_querier.go b/x/wasm/keeper/legacy_querier.go index a938de7d59..9c2cc17929 100644 --- a/x/wasm/keeper/legacy_querier.go +++ b/x/wasm/keeper/legacy_querier.go @@ -136,8 +136,6 @@ func queryCodeList(ctx sdk.Context, keeper types.ViewKeeper) ([]types.CodeInfoRe CodeID: i, Creator: res.Creator, DataHash: res.CodeHash, - Source: res.Source, - Builder: res.Builder, InstantiatePermission: res.InstantiateConfig, }) return false diff --git a/x/wasm/keeper/msg_server.go b/x/wasm/keeper/msg_server.go index adb78d462a..e1f79c2d4d 100644 --- a/x/wasm/keeper/msg_server.go +++ b/x/wasm/keeper/msg_server.go @@ -26,8 +26,7 @@ func (m msgServer) StoreCode(goCtx context.Context, msg *types.MsgStoreCode) (*t if err != nil { return nil, sdkerrors.Wrap(err, "sender") } - codeID, err := m.keeper.Create(ctx, sdk.AccAddress(msg.Sender), msg.WASMByteCode, msg.Source, msg.Builder, - msg.InstantiatePermission) + codeID, err := m.keeper.Create(ctx, sdk.AccAddress(msg.Sender), msg.WASMByteCode, msg.InstantiatePermission) if err != nil { return nil, err } @@ -92,8 +91,7 @@ func (m msgServer) StoreCodeAndInstantiateContract(goCtx context.Context, if err != nil { return nil, sdkerrors.Wrap(err, "sender") } - codeID, err := m.keeper.Create(ctx, sdk.AccAddress(msg.Sender), msg.WASMByteCode, msg.Source, msg.Builder, - msg.InstantiatePermission) + codeID, err := m.keeper.Create(ctx, sdk.AccAddress(msg.Sender), msg.WASMByteCode, msg.InstantiatePermission) if err != nil { return nil, err } diff --git a/x/wasm/keeper/proposal_handler.go b/x/wasm/keeper/proposal_handler.go index d20778caa7..0fa5b66516 100644 --- a/x/wasm/keeper/proposal_handler.go +++ b/x/wasm/keeper/proposal_handler.go @@ -62,7 +62,7 @@ func handleStoreCodeProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types if err != nil { return sdkerrors.Wrap(err, "run as address") } - codeID, err := k.Create(ctx, sdk.AccAddress(p.RunAs), p.WASMByteCode, p.Source, p.Builder, p.InstantiatePermission) + codeID, err := k.Create(ctx, sdk.AccAddress(p.RunAs), p.WASMByteCode, p.InstantiatePermission) if err != nil { return err } diff --git a/x/wasm/keeper/querier.go b/x/wasm/keeper/querier.go index ea6c232d56..a07c8ab14e 100644 --- a/x/wasm/keeper/querier.go +++ b/x/wasm/keeper/querier.go @@ -237,8 +237,6 @@ func (q GrpcQuerier) Codes(c context.Context, req *types.QueryCodesRequest) (*ty CodeID: binary.BigEndian.Uint64(key), Creator: c.Creator, DataHash: c.CodeHash, - Source: c.Source, - Builder: c.Builder, InstantiatePermission: c.InstantiateConfig, }) } @@ -276,8 +274,6 @@ func queryCode(ctx sdk.Context, codeID uint64, keeper types.ViewKeeper) (*types. CodeID: codeID, Creator: res.Creator, DataHash: res.CodeHash, - Source: res.Source, - Builder: res.Builder, InstantiatePermission: res.InstantiateConfig, } diff --git a/x/wasm/keeper/test_common.go b/x/wasm/keeper/test_common.go index ae7d0737c7..98d147b0ce 100644 --- a/x/wasm/keeper/test_common.go +++ b/x/wasm/keeper/test_common.go @@ -367,8 +367,7 @@ func handleStoreCode(ctx sdk.Context, k types.ContractOpsKeeper, msg *types.MsgS if err != nil { return nil, sdkerrors.Wrap(err, "sender") } - codeID, err := k.Create(ctx, sdk.AccAddress(msg.Sender), msg.WASMByteCode, msg.Source, msg.Builder, - msg.InstantiatePermission) + codeID, err := k.Create(ctx, sdk.AccAddress(msg.Sender), msg.WASMByteCode, msg.InstantiatePermission) if err != nil { return nil, err } @@ -455,7 +454,7 @@ func StoreReflectContract(t TestingT, ctx sdk.Context, keepers TestKeepers) uint require.NoError(t, err) _, _, creatorAddr := keyPubAddr() - codeID, err := keepers.ContractKeeper.Create(ctx, creatorAddr, wasmCode, "", "", nil) + codeID, err := keepers.ContractKeeper.Create(ctx, creatorAddr, wasmCode, nil) require.NoError(t, err) return codeID } @@ -468,7 +467,7 @@ func StoreExampleContract(t TestingT, ctx sdk.Context, keepers TestKeepers, wasm wasmCode, err := ioutil.ReadFile(wasmFile) require.NoError(t, err) - codeID, err := keepers.ContractKeeper.Create(ctx, creatorAddr, wasmCode, "", "", nil) + codeID, err := keepers.ContractKeeper.Create(ctx, creatorAddr, wasmCode, nil) require.NoError(t, err) return ExampleContract{anyAmount, creator, creatorAddr, codeID} } @@ -500,7 +499,7 @@ func StoreRandomContract(t TestingT, ctx sdk.Context, keepers TestKeepers, mock fundAccounts(t, ctx, keepers.AccountKeeper, keepers.BankKeeper, creatorAddr, anyAmount) keepers.WasmKeeper.wasmVM = mock wasmCode := append(wasmIdent, rand.Bytes(10)...) - codeID, err := keepers.ContractKeeper.Create(ctx, creatorAddr, wasmCode, "", "", nil) + codeID, err := keepers.ContractKeeper.Create(ctx, creatorAddr, wasmCode, nil) require.NoError(t, err) exampleContract := ExampleContract{InitialAmount: anyAmount, Creator: creator, CreatorAddr: creatorAddr, CodeID: codeID} return exampleContract diff --git a/x/wasm/types/exported_keepers.go b/x/wasm/types/exported_keepers.go index ab93bc8ae4..5e26057344 100644 --- a/x/wasm/types/exported_keepers.go +++ b/x/wasm/types/exported_keepers.go @@ -25,7 +25,7 @@ type ViewKeeper interface { // ContractOpsKeeper contains mutable operations on a contract. type ContractOpsKeeper interface { // Create uploads and compiles a WASM contract, returning a short identifier for the contract - Create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, source string, builder string, instantiateAccess *AccessConfig) (codeID uint64, err error) + Create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, instantiateAccess *AccessConfig) (codeID uint64, err error) // Instantiate creates an instance of a WASM contract Instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.AccAddress, initMsg []byte, label string, deposit sdk.Coins) (sdk.AccAddress, []byte, error) From a3f1a77d934d035ab232ce0940c2949cc5ffe4c9 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 00:27:32 +0200 Subject: [PATCH 48/90] keeper and types pass tests --- x/wasm/keeper/keeper_test.go | 28 +++---- x/wasm/keeper/legacy_querier_test.go | 4 +- x/wasm/keeper/proposal_integration_test.go | 4 - x/wasm/keeper/querier_test.go | 2 +- x/wasm/keeper/reflect_test.go | 14 ++-- x/wasm/keeper/staking_test.go | 6 +- x/wasm/keeper/submsg_test.go | 10 +-- x/wasm/types/proposal_test.go | 22 ----- x/wasm/types/tx_test.go | 94 ---------------------- x/wasm/types/types_test.go | 23 ------ 10 files changed, 32 insertions(+), 175 deletions(-) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 2a3ffaa57a..b4a1a4a7c5 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -288,7 +288,7 @@ func TestInstantiate(t *testing.T) { gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x1121a), gasAfter-gasBefore) + require.Equal(t, uint64(0x1110f), gasAfter-gasBefore) } // ensure it is stored properly @@ -473,7 +473,7 @@ func TestExecute(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - contractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -656,7 +656,7 @@ func TestExecuteWithPanic(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - contractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -690,7 +690,7 @@ func TestExecuteWithCpuLoop(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - contractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -735,7 +735,7 @@ func TestExecuteWithStorageLoop(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - contractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -779,7 +779,7 @@ func TestExecuteInactiveContract(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - contractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -1032,9 +1032,9 @@ func TestMigrateWithDispatchedMessage(t *testing.T) { burnerCode, err := ioutil.ReadFile("./testdata/burner.wasm") require.NoError(t, err) - originalContractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) - burnerContractID, err := keeper.Create(ctx, creator, burnerCode, "", "", nil) + burnerContractID, err := keeper.Create(ctx, creator, burnerCode, nil) require.NoError(t, err) require.NotEqual(t, originalContractID, burnerContractID) @@ -1226,7 +1226,7 @@ func TestSudo(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - contractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -1307,7 +1307,7 @@ func TestUpdateContractAdmin(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - originalContractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, anyAddr := keyPubAddr() @@ -1378,7 +1378,7 @@ func TestUpdateContractAdminInactiveContract(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - originalContractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, anyAddr := keyPubAddr() @@ -1414,7 +1414,7 @@ func TestClearContractAdmin(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - originalContractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, anyAddr := keyPubAddr() @@ -1480,7 +1480,7 @@ func TestClearContractAdminInactiveContract(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - originalContractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, anyAddr := keyPubAddr() @@ -1516,7 +1516,7 @@ func TestUpdateContractStatus(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - originalContractID, err := keeper.Create(ctx, creator, wasmCode, "", "", nil) + originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, anyAddr := keyPubAddr() diff --git a/x/wasm/keeper/legacy_querier_test.go b/x/wasm/keeper/legacy_querier_test.go index 8806945219..c8893b7ee1 100644 --- a/x/wasm/keeper/legacy_querier_test.go +++ b/x/wasm/keeper/legacy_querier_test.go @@ -27,7 +27,7 @@ func TestLegacyQueryContractState(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - contractID, err := keepers.ContractKeeper.Create(ctx, creator, wasmCode, "", "", nil) + contractID, err := keepers.ContractKeeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -164,7 +164,7 @@ func TestLegacyQueryContractListByCodeOrdering(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - codeID, err := keepers.ContractKeeper.Create(ctx, creator, wasmCode, "", "", nil) + codeID, err := keepers.ContractKeeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, bob := keyPubAddr() diff --git a/x/wasm/keeper/proposal_integration_test.go b/x/wasm/keeper/proposal_integration_test.go index d17a4dbf7a..973f1dd9df 100644 --- a/x/wasm/keeper/proposal_integration_test.go +++ b/x/wasm/keeper/proposal_integration_test.go @@ -38,8 +38,6 @@ func TestStoreCodeProposal(t *testing.T) { src := types.StoreCodeProposalFixture(func(p *types.StoreCodeProposal) { p.RunAs = myActorAddress p.WASMByteCode = wasmCode - p.Source = "https://example.com/mysource" - p.Builder = "foo/bar:v0.0.0" }) // when stored @@ -55,8 +53,6 @@ func TestStoreCodeProposal(t *testing.T) { cInfo := wasmKeeper.GetCodeInfo(ctx, 1) require.NotNil(t, cInfo) assert.Equal(t, myActorAddress, cInfo.Creator) - assert.Equal(t, "foo/bar:v0.0.0", cInfo.Builder) - assert.Equal(t, "https://example.com/mysource", cInfo.Source) storedCode, err := wasmKeeper.GetByteCode(ctx, 1) require.NoError(t, err) diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index 07579e1e3b..74e1dc9bac 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -265,7 +265,7 @@ func TestQueryContractListByCodeOrdering(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - codeID, err := keepers.ContractKeeper.Create(ctx, creator, wasmCode, "", "", nil) + codeID, err := keepers.ContractKeeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) _, _, bob := keyPubAddr() diff --git a/x/wasm/keeper/reflect_test.go b/x/wasm/keeper/reflect_test.go index 7d4a3ab20b..325a9e41cd 100644 --- a/x/wasm/keeper/reflect_test.go +++ b/x/wasm/keeper/reflect_test.go @@ -95,14 +95,14 @@ func TestReflectContractSend(t *testing.T) { // upload reflect code reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm") require.NoError(t, err) - reflectID, err := keeper.Create(ctx, creator, reflectCode, "", "", nil) + reflectID, err := keeper.Create(ctx, creator, reflectCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), reflectID) // upload hackatom escrow code escrowCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - escrowID, err := keeper.Create(ctx, creator, escrowCode, "", "", nil) + escrowID, err := keeper.Create(ctx, creator, escrowCode, nil) require.NoError(t, err) require.Equal(t, uint64(2), escrowID) @@ -178,7 +178,7 @@ func TestReflectCustomMsg(t *testing.T) { // upload code reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm") require.NoError(t, err) - codeID, err := keeper.Create(ctx, creator, reflectCode, "", "", nil) + codeID, err := keeper.Create(ctx, creator, reflectCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), codeID) @@ -269,7 +269,7 @@ func TestMaskReflectCustomQuery(t *testing.T) { // upload code reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm") require.NoError(t, err) - codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, "", "", nil) + codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), codeID) @@ -321,7 +321,7 @@ func TestReflectStargateQuery(t *testing.T) { // upload code reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm") require.NoError(t, err) - codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, "", "", nil) + codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), codeID) @@ -396,7 +396,7 @@ func TestMaskReflectWasmQueries(t *testing.T) { // upload reflect code reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm") require.NoError(t, err) - reflectID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, "", "", nil) + reflectID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), reflectID) @@ -468,7 +468,7 @@ func TestWasmRawQueryWithNil(t *testing.T) { // upload reflect code reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm") require.NoError(t, err) - reflectID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, "", "", nil) + reflectID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), reflectID) diff --git a/x/wasm/keeper/staking_test.go b/x/wasm/keeper/staking_test.go index 012f03348f..d3e1ab81c7 100644 --- a/x/wasm/keeper/staking_test.go +++ b/x/wasm/keeper/staking_test.go @@ -107,7 +107,7 @@ func TestInitializeStaking(t *testing.T) { // upload staking derivates code stakingCode, err := ioutil.ReadFile("./testdata/staking.wasm") require.NoError(t, err) - stakingID, err := keeper.Create(ctx, creator, stakingCode, "", "", nil) + stakingID, err := keeper.Create(ctx, creator, stakingCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), stakingID) @@ -189,7 +189,7 @@ func initializeStaking(t *testing.T) initInfo { // upload staking derivates code stakingCode, err := ioutil.ReadFile("./testdata/staking.wasm") require.NoError(t, err) - stakingID, err := k.ContractKeeper.Create(ctx, creator, stakingCode, "", "", nil) + stakingID, err := k.ContractKeeper.Create(ctx, creator, stakingCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), stakingID) @@ -446,7 +446,7 @@ func TestQueryStakingInfo(t *testing.T) { // upload mask code maskCode, err := ioutil.ReadFile("./testdata/reflect.wasm") require.NoError(t, err) - maskID, err := initInfo.contractKeeper.Create(ctx, creator, maskCode, "", "", nil) + maskID, err := initInfo.contractKeeper.Create(ctx, creator, maskCode, nil) require.NoError(t, err) require.Equal(t, uint64(2), maskID) diff --git a/x/wasm/keeper/submsg_test.go b/x/wasm/keeper/submsg_test.go index 83001c4010..efdfb87f52 100644 --- a/x/wasm/keeper/submsg_test.go +++ b/x/wasm/keeper/submsg_test.go @@ -31,7 +31,7 @@ func TestDispatchSubMsgSuccessCase(t *testing.T) { // upload code reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm") require.NoError(t, err) - codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, "", "", nil) + codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil) require.NoError(t, err) require.Equal(t, uint64(1), codeID) @@ -137,13 +137,13 @@ func TestDispatchSubMsgErrorHandling(t *testing.T) { // upload code reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm") require.NoError(t, err) - reflectID, err := keepers.ContractKeeper.Create(ctx, uploader, reflectCode, "", "", nil) + reflectID, err := keepers.ContractKeeper.Create(ctx, uploader, reflectCode, nil) require.NoError(t, err) // create hackatom contract for testing (for infinite loop) hackatomCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - hackatomID, err := keepers.ContractKeeper.Create(ctx, uploader, hackatomCode, "", "", nil) + hackatomID, err := keepers.ContractKeeper.Create(ctx, uploader, hackatomCode, nil) require.NoError(t, err) _, _, bob := keyPubAddr() _, _, fred := keyPubAddr() @@ -400,7 +400,7 @@ func TestDispatchSubMsgEncodeToNoSdkMsg(t *testing.T) { // upload code reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm") require.NoError(t, err) - codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, "", "", nil) + codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil) require.NoError(t, err) // creator instantiates a contract and gives it tokens @@ -468,7 +468,7 @@ func TestDispatchSubMsgConditionalReplyOn(t *testing.T) { // upload code reflectCode, err := ioutil.ReadFile("./testdata/reflect.wasm") require.NoError(t, err) - codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, "", "", nil) + codeID, err := keepers.ContractKeeper.Create(ctx, creator, reflectCode, nil) require.NoError(t, err) // creator instantiates a contract and gives it tokens diff --git a/x/wasm/types/proposal_test.go b/x/wasm/types/proposal_test.go index 72ec04db3a..b42d19614c 100644 --- a/x/wasm/types/proposal_test.go +++ b/x/wasm/types/proposal_test.go @@ -112,12 +112,6 @@ func TestValidateStoreCodeProposal(t *testing.T) { p.InstantiatePermission = &accessConfig }), }, - - "without source": { - src: StoreCodeProposalFixture(func(p *StoreCodeProposal) { - p.Source = "" - }), - }, "base data missing": { src: StoreCodeProposalFixture(func(p *StoreCodeProposal) { p.Title = "" @@ -148,18 +142,6 @@ func TestValidateStoreCodeProposal(t *testing.T) { }), expErr: true, }, - "source invalid": { - src: StoreCodeProposalFixture(func(p *StoreCodeProposal) { - p.Source = "not an url" - }), - expErr: true, - }, - "builder invalid": { - src: StoreCodeProposalFixture(func(p *StoreCodeProposal) { - p.Builder = "not a builder" - }), - expErr: true, - }, "with invalid instantiate permission": { src: StoreCodeProposalFixture(func(p *StoreCodeProposal) { p.InstantiatePermission = &AccessConfig{} @@ -514,8 +496,6 @@ func TestProposalStrings(t *testing.T) { Description: Bar Run as: link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5 WasmCode: 0102030405060708090A - Source: https://example.com/code - Builder: foo/bar:latest `, }, "instantiate contract": { @@ -632,8 +612,6 @@ func TestProposalYaml(t *testing.T) { description: Bar run_as: link1qyqszqgpqyqszqgpqyqszqgpqyqszqgp8apuk5 wasm_byte_code: AQIDBAUGBwgJCg== -source: https://example.com/code -builder: foo/bar:latest instantiate_permission: null `, }, diff --git a/x/wasm/types/tx_test.go b/x/wasm/types/tx_test.go index ea44f490f0..e5f6aa9ea3 100644 --- a/x/wasm/types/tx_test.go +++ b/x/wasm/types/tx_test.go @@ -12,33 +12,6 @@ import ( const firstCodeID = 1 -func TestBuilderRegexp(t *testing.T) { - cases := map[string]struct { - example string - valid bool - }{ - "normal": {"fedora/httpd:version1.0", true}, - "another valid org": {"confio/js-builder-1:test", true}, - "no org name": {"cosmwasm-opt:0.6.3", false}, - "invalid trailing char": {"someone/cosmwasm-opt-:0.6.3", false}, - "invalid leading char": {"confio/.builder-1:manual", false}, - "multiple orgs": {"confio/assembly-script/optimizer:v0.9.1", true}, - "too long": {"over-128-character-limit/some-long-sub-path/and-yet-another-long-name/testtesttesttesttesttesttest/foobarfoobar/foobarfoobar:randomstringrandomstringrandomstringrandomstring", false}, - } - - for name, tc := range cases { - t.Run(name, func(t *testing.T) { - err := validateBuilder(tc.example) - if tc.valid { - assert.NoError(t, err) - } else { - assert.Error(t, err) - } - }) - - } -} - func TestStoreCodeValidation(t *testing.T) { bad, err := sdk.AccAddressFromHex("012345") require.NoError(t, err) @@ -78,38 +51,9 @@ func TestStoreCodeValidation(t *testing.T) { msg: MsgStoreCode{ Sender: goodAddress, WASMByteCode: []byte("foo"), - Builder: "confio/cosmwasm-opt:0.6.2", - Source: "https://crates.io/api/v1/crates/cw-erc20/0.1.0/download", }, valid: true, }, - "invalid builder": { - msg: MsgStoreCode{ - Sender: goodAddress, - WASMByteCode: []byte("foo"), - Builder: "-bad-opt:0.6.2", - Source: "https://crates.io/api/v1/crates/cw-erc20/0.1.0/download", - }, - valid: false, - }, - "invalid source scheme": { - msg: MsgStoreCode{ - Sender: goodAddress, - WASMByteCode: []byte("foo"), - Builder: "cosmwasm-opt:0.6.2", - Source: "ftp://crates.io/api/download.tar.gz", - }, - valid: false, - }, - "invalid source format": { - msg: MsgStoreCode{ - Sender: goodAddress, - WASMByteCode: []byte("foo"), - Builder: "cosmwasm-opt:0.6.2", - Source: "/api/download-ss", - }, - valid: false, - }, "invalid InstantiatePermission": { msg: MsgStoreCode{ Sender: goodAddress, @@ -292,50 +236,12 @@ func TestStoreCodeAndInstantiateContractValidation(t *testing.T) { msg: MsgStoreCodeAndInstantiateContract{ Sender: goodAddress, WASMByteCode: []byte("foo"), - Builder: "confio/cosmwasm-opt:0.6.2", - Source: "https://crates.io/api/v1/crates/cw-erc20/0.1.0/download", Label: "foo", InitMsg: []byte(`{"some": "data"}`), Funds: sdk.Coins{sdk.Coin{Denom: "foobar", Amount: sdk.NewInt(200)}}, }, valid: true, }, - "invalid builder": { - msg: MsgStoreCodeAndInstantiateContract{ - Sender: goodAddress, - WASMByteCode: []byte("foo"), - Builder: "-bad-opt:0.6.2", - Source: "https://crates.io/api/v1/crates/cw-erc20/0.1.0/download", - Label: "foo", - InitMsg: []byte(`{"some": "data"}`), - Funds: sdk.Coins{sdk.Coin{Denom: "foobar", Amount: sdk.NewInt(200)}}, - }, - valid: false, - }, - "invalid source scheme": { - msg: MsgStoreCodeAndInstantiateContract{ - Sender: goodAddress, - WASMByteCode: []byte("foo"), - Builder: "cosmwasm-opt:0.6.2", - Source: "ftp://crates.io/api/download.tar.gz", - Label: "foo", - InitMsg: []byte(`{"some": "data"}`), - Funds: sdk.Coins{sdk.Coin{Denom: "foobar", Amount: sdk.NewInt(200)}}, - }, - valid: false, - }, - "invalid source format": { - msg: MsgStoreCodeAndInstantiateContract{ - Sender: goodAddress, - WASMByteCode: []byte("foo"), - Builder: "cosmwasm-opt:0.6.2", - Source: "/api/download-ss", - Label: "foo", - InitMsg: []byte(`{"some": "data"}`), - Funds: sdk.Coins{sdk.Coin{Denom: "foobar", Amount: sdk.NewInt(200)}}, - }, - valid: false, - }, "invalid InstantiatePermission": { msg: MsgStoreCodeAndInstantiateContract{ Sender: goodAddress, diff --git a/x/wasm/types/types_test.go b/x/wasm/types/types_test.go index fc56549ba4..3fa6a60234 100644 --- a/x/wasm/types/types_test.go +++ b/x/wasm/types/types_test.go @@ -103,29 +103,6 @@ func TestCodeInfoValidateBasic(t *testing.T) { srcMutator: func(c *CodeInfo) { c.Creator = "invalid address" }, expError: true, }, - "source empty": { - srcMutator: func(c *CodeInfo) { c.Source = "" }, - }, - "source not an url": { - srcMutator: func(c *CodeInfo) { c.Source = "invalid" }, - expError: true, - }, - "source not an absolute url": { - srcMutator: func(c *CodeInfo) { c.Source = "../bar.txt" }, - expError: true, - }, - "source not https schema url": { - srcMutator: func(c *CodeInfo) { c.Source = "http://example.com" }, - expError: true, - }, - "builder tag exceeds limit": { - srcMutator: func(c *CodeInfo) { c.Builder = strings.Repeat("a", MaxBuildTagSize+1) }, - expError: true, - }, - "builder tag does not match pattern": { - srcMutator: func(c *CodeInfo) { c.Builder = "invalid" }, - expError: true, - }, "Instantiate config invalid": { srcMutator: func(c *CodeInfo) { c.InstantiateConfig = AccessConfig{} }, expError: true, From e8695faab8255f3c228d8607b9a276588612e24d Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 00:32:54 +0200 Subject: [PATCH 49/90] All code compiles and tests --- x/wasm/alias.go | 2 -- x/wasm/client/cli/genesis_msg.go | 4 ---- x/wasm/client/cli/genesis_msg_test.go | 13 ------------ x/wasm/client/cli/gov_tx.go | 4 ---- x/wasm/client/cli/tx.go | 30 --------------------------- x/wasm/client/rest/gov.go | 6 ------ x/wasm/genesis_test.go | 2 -- 7 files changed, 61 deletions(-) diff --git a/x/wasm/alias.go b/x/wasm/alias.go index 5bda2bf281..8b594581f0 100644 --- a/x/wasm/alias.go +++ b/x/wasm/alias.go @@ -16,8 +16,6 @@ const ( RouterKey = types.RouterKey MaxWasmSize = types.MaxWasmSize MaxLabelSize = types.MaxLabelSize - BuildTagRegexp = types.BuildTagRegexp - MaxBuildTagSize = types.MaxBuildTagSize WasmModuleEventType = types.WasmModuleEventType AttributeKeyContractAddr = types.AttributeKeyContractAddr ProposalTypeStoreCode = types.ProposalTypeStoreCode diff --git a/x/wasm/client/cli/genesis_msg.go b/x/wasm/client/cli/genesis_msg.go index afe9468391..f111998540 100644 --- a/x/wasm/client/cli/genesis_msg.go +++ b/x/wasm/client/cli/genesis_msg.go @@ -69,8 +69,6 @@ func GenesisStoreCodeCmd(defaultNodeHome string, genesisMutator GenesisMutator) }) }, } - cmd.Flags().String(flagSource, "", "A valid URI reference to the contract's source code, optional") - cmd.Flags().String(flagBuilder, "", "A valid docker tag for the build system, optional") cmd.Flags().String(flagRunAs, "", "The address that is stored as code creator") cmd.Flags().String(flagInstantiateByEverybody, "", "Everybody can instantiate a contract from the code, optional") cmd.Flags().String(flagInstantiateByAddress, "", "Only this address can instantiate a contract instance from the code, optional") @@ -289,8 +287,6 @@ func getAllCodes(state *types.GenesisState) ([]codeMeta, error) { Info: types.CodeInfo{ CodeHash: hash[:], Creator: msg.Sender, - Source: msg.Source, - Builder: msg.Builder, InstantiateConfig: accessConfig, }, }) diff --git a/x/wasm/client/cli/genesis_msg_test.go b/x/wasm/client/cli/genesis_msg_test.go index dd6c9f642b..158a70f736 100644 --- a/x/wasm/client/cli/genesis_msg_test.go +++ b/x/wasm/client/cli/genesis_msg_test.go @@ -55,7 +55,6 @@ func TestGenesisStoreCodeCmd(t *testing.T) { mutator: func(cmd *cobra.Command) { cmd.SetArgs([]string{anyValidWasmFile.Name()}) flagSet := cmd.Flags() - flagSet.Set("source", "https://foo.bar") flagSet.Set("run-as", keeper.RandomBech32AccountAddress(t)) }, }, @@ -80,18 +79,6 @@ func TestGenesisStoreCodeCmd(t *testing.T) { srcGenesis: minimalWasmGenesis, mutator: func(cmd *cobra.Command) { cmd.SetArgs([]string{anyValidWasmFile.Name()}) - flagSet := cmd.Flags() - flagSet.Set("source", "https://foo.bar") - }, - expError: true, - }, - "invalid msg data should fail": { - srcGenesis: minimalWasmGenesis, - mutator: func(cmd *cobra.Command) { - cmd.SetArgs([]string{anyValidWasmFile.Name()}) - flagSet := cmd.Flags() - flagSet.Set("source", "not an url") - flagSet.Set("run-as", keeper.RandomBech32AccountAddress(t)) }, expError: true, }, diff --git a/x/wasm/client/cli/gov_tx.go b/x/wasm/client/cli/gov_tx.go index ae3ae23062..49b7bec983 100644 --- a/x/wasm/client/cli/gov_tx.go +++ b/x/wasm/client/cli/gov_tx.go @@ -57,8 +57,6 @@ func ProposalStoreCodeCmd() *cobra.Command { Description: proposalDescr, RunAs: runAs, WASMByteCode: src.WASMByteCode, - Source: src.Source, - Builder: src.Builder, InstantiatePermission: src.InstantiatePermission, } @@ -74,8 +72,6 @@ func ProposalStoreCodeCmd() *cobra.Command { }, } - cmd.Flags().String(flagSource, "", "A valid URI reference to the contract's source code, optional") - cmd.Flags().String(flagBuilder, "", "A valid docker tag for the build system, optional") cmd.Flags().String(flagRunAs, "", "The address that is stored as code creator") cmd.Flags().String(flagInstantiateByEverybody, "", "Everybody can instantiate a contract from the code, optional") cmd.Flags().String(flagInstantiateByAddress, "", "Only this address can instantiate a contract instance from the code, optional") diff --git a/x/wasm/client/cli/tx.go b/x/wasm/client/cli/tx.go index 5ce1c0b31e..cd5e7198e5 100644 --- a/x/wasm/client/cli/tx.go +++ b/x/wasm/client/cli/tx.go @@ -19,8 +19,6 @@ import ( const ( flagAmount = "amount" - flagSource = "source" - flagBuilder = "builder" flagLabel = "label" flagAdmin = "admin" flagRunAs = "run-as" @@ -74,8 +72,6 @@ func StoreCodeCmd() *cobra.Command { }, } - cmd.Flags().String(flagSource, "", "A valid URI reference to the contract's source code, optional") - cmd.Flags().String(flagBuilder, "", "A valid docker tag for the build system, optional") cmd.Flags().String(flagInstantiateByEverybody, "", "Everybody can instantiate a contract from the code, optional") cmd.Flags().String(flagInstantiateByAddress, "", "Only this address can instantiate a contract instance from the code, optional") flags.AddTxFlagsToCmd(cmd) @@ -127,21 +123,9 @@ func parseStoreCodeArgs(file string, sender sdk.AccAddress, flags *flag.FlagSet) } } - // build and sign the transaction, then broadcast to Tendermint - source, err := flags.GetString(flagSource) - if err != nil { - return types.MsgStoreCode{}, fmt.Errorf("source: %s", err) - } - builder, err := flags.GetString(flagBuilder) - if err != nil { - return types.MsgStoreCode{}, fmt.Errorf("builder: %s", err) - } - msg := types.MsgStoreCode{ Sender: sender.String(), WASMByteCode: wasm, - Source: source, - Builder: builder, InstantiatePermission: perm, } return msg, nil @@ -239,8 +223,6 @@ func StoreCodeAndInstantiateContractCmd() *cobra.Command { }, } - cmd.Flags().String(flagSource, "", "A valid URI reference to the contract's source code, optional") - cmd.Flags().String(flagBuilder, "", "A valid docker tag for the build system, optional") cmd.Flags().String(flagInstantiateByEverybody, "", "Everybody can instantiate a contract from the code, optional") cmd.Flags().String(flagInstantiateByAddress, "", "Only this address can instantiate a contract instance from the code, optional") cmd.Flags().String(flagAmount, "", "Coins to send to the contract during instantiation") @@ -295,16 +277,6 @@ func parseStoreCodeAndInstantiateContractArgs(file string, initMsg string, sende } } - // build and sign the transaction, then broadcast to Tendermint - source, err := flags.GetString(flagSource) - if err != nil { - return types.MsgStoreCodeAndInstantiateContract{}, fmt.Errorf("source: %s", err) - } - builder, err := flags.GetString(flagBuilder) - if err != nil { - return types.MsgStoreCodeAndInstantiateContract{}, fmt.Errorf("builder: %s", err) - } - amountStr, err := flags.GetString(flagAmount) if err != nil { return types.MsgStoreCodeAndInstantiateContract{}, fmt.Errorf("amount: %s", err) @@ -328,8 +300,6 @@ func parseStoreCodeAndInstantiateContractArgs(file string, initMsg string, sende msg := types.MsgStoreCodeAndInstantiateContract{ Sender: sender.String(), WASMByteCode: wasm, - Source: source, - Builder: builder, InstantiatePermission: perm, Label: label, Funds: amount, diff --git a/x/wasm/client/rest/gov.go b/x/wasm/client/rest/gov.go index 28c44c48f7..f25053266c 100644 --- a/x/wasm/client/rest/gov.go +++ b/x/wasm/client/rest/gov.go @@ -24,10 +24,6 @@ type StoreCodeProposalJSONReq struct { RunAs string `json:"run_as" yaml:"run_as"` // WASMByteCode can be raw or gzip compressed WASMByteCode []byte `json:"wasm_byte_code" yaml:"wasm_byte_code"` - // Source is a valid absolute HTTPS URI to the contract's source code, optional - Source string `json:"source" yaml:"source"` - // Builder is a valid docker image name with tag, optional - Builder string `json:"builder" yaml:"builder"` // InstantiatePermission to apply on contract creation, optional InstantiatePermission *types.AccessConfig `json:"instantiate_permission" yaml:"instantiate_permission"` } @@ -38,8 +34,6 @@ func (s StoreCodeProposalJSONReq) Content() govtypes.Content { Description: s.Description, RunAs: s.RunAs, WASMByteCode: s.WASMByteCode, - Source: s.Source, - Builder: s.Builder, InstantiatePermission: s.InstantiatePermission, } } diff --git a/x/wasm/genesis_test.go b/x/wasm/genesis_test.go index cfb648061c..9a581510c7 100644 --- a/x/wasm/genesis_test.go +++ b/x/wasm/genesis_test.go @@ -22,8 +22,6 @@ func TestInitGenesis(t *testing.T) { msg := MsgStoreCode{ Sender: creator.String(), WASMByteCode: testContract, - Source: "https://github.com/line/lbm-sdk/blob/main/x/wasm/internal/keeper/testdata/hackatom.wasm", - Builder: "confio/cosmwasm-opt:0.7.0", } err := msg.ValidateBasic() require.NoError(t, err) From 5ac2f08663fef4d35fec25452de8585422a1da02 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 11:26:51 +0200 Subject: [PATCH 50/90] Used reserved keyword in protobuf --- docs/core/proto-docs.md | 18 +--- docs/proto/proto-docs.md | 14 +-- proto/lbm/wasm/v1/proposal.proto | 4 +- proto/lbm/wasm/v1/query.proto | 3 +- proto/lbm/wasm/v1/tx.proto | 8 +- proto/lbm/wasm/v1/types.proto | 4 +- x/wasm/types/proposal.pb.go | 89 ++++++++-------- x/wasm/types/query.pb.go | 148 +++++++++++++------------- x/wasm/types/tx.pb.go | 115 ++++++++++---------- x/wasm/types/types.pb.go | 177 ++++++++++++++++--------------- 10 files changed, 285 insertions(+), 295 deletions(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 1c23f07d58..55aab90ed3 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -10948,9 +10948,7 @@ CodeInfo is data for the uploaded contract WASM code | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `code_hash` | [bytes](#bytes) | | CodeHash is the unique identifier created by wasmvm | -| `creator` | [string](#string) | | Creator address who initially stored the code - -3 and 4 intentionally left empty (used in v1beta1) | +| `creator` | [string](#string) | | Creator address who initially stored the code | | `instantiate_config` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | InstantiateConfig access control to apply on contract creation, optional | @@ -11230,9 +11228,7 @@ MsgStoreCode submit Wasm code to the system | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `sender` | [string](#string) | | Sender is the that actor that signed the messages | -| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed - -3 and 4 intentionally left empty (used in v1beta1) | +| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed | | `instantiate_permission` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | InstantiatePermission access control to apply on contract creation, optional | @@ -11249,9 +11245,7 @@ MsgStoreCodeAndInstantiateContract submit Wasm code to the system and instantiat | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `sender` | [string](#string) | | Sender is the that actor that signed the messages | -| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed - -3 and 4 intentionally left empty (used in v1beta1) | +| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed | | `instantiate_permission` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | | | `admin` | [string](#string) | | Admin is an optional address that can execute migrations | | `label` | [string](#string) | | Label is optional metadata to be stored with a contract instance. | @@ -11622,9 +11616,7 @@ StoreCodeProposal gov proposal content type to submit WASM code to the system | `title` | [string](#string) | | Title is a short summary | | `description` | [string](#string) | | Description is a human readable text | | `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | -| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed - -Source is a valid absolute HTTPS URI to the contract's source code, optional 5 and 6 intentionally left empty (used in v1beta1) | +| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed | | `instantiate_permission` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | InstantiatePermission to apply on contract creation, optional | @@ -11712,7 +11704,7 @@ CodeInfoResponse contains code meta data from CodeInfo | `code_id` | [uint64](#uint64) | | id for legacy support | | `creator` | [string](#string) | | | | `data_hash` | [bytes](#bytes) | | | -| `instantiate_permission` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | 4 and 5 intentionally left empty (used in v1beta1) | +| `instantiate_permission` | [AccessConfig](#lbm.wasm.v1.AccessConfig) | | | diff --git a/docs/proto/proto-docs.md b/docs/proto/proto-docs.md index 6e8e69fabc..2212a16fc3 100644 --- a/docs/proto/proto-docs.md +++ b/docs/proto/proto-docs.md @@ -142,9 +142,7 @@ CodeInfo is data for the uploaded contract WASM code | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `code_hash` | [bytes](#bytes) | | CodeHash is the unique identifier created by wasmvm | -| `creator` | [string](#string) | | Creator address who initially stored the code - -3 and 4 intentionally left empty (used in v1beta1) | +| `creator` | [string](#string) | | Creator address who initially stored the code | | `instantiate_config` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiateConfig access control to apply on contract creation, optional | @@ -406,9 +404,7 @@ MsgStoreCode submit Wasm code to the system | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | `sender` | [string](#string) | | Sender is the that actor that signed the messages | -| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed - -3 and 4 intentionally left empty (used in v1beta1) | +| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed | | `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission access control to apply on contract creation, optional | @@ -732,9 +728,7 @@ StoreCodeProposal gov proposal content type to submit WASM code to the system | `title` | [string](#string) | | Title is a short summary | | `description` | [string](#string) | | Description is a human readable text | | `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | -| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed - -5 and 6 intentionally left empty (used in v1beta1) | +| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed | | `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission to apply on contract creation, optional | @@ -804,7 +798,7 @@ CodeInfoResponse contains code meta data from CodeInfo | ----- | ---- | ----- | ----------- | | `code_id` | [uint64](#uint64) | | id for legacy support | | `creator` | [string](#string) | | | -| `data_hash` | [bytes](#bytes) | | 4 and 5 intentionally left empty (used in v1beta1) | +| `data_hash` | [bytes](#bytes) | | | diff --git a/proto/lbm/wasm/v1/proposal.proto b/proto/lbm/wasm/v1/proposal.proto index 2baf367f90..e1001158d1 100644 --- a/proto/lbm/wasm/v1/proposal.proto +++ b/proto/lbm/wasm/v1/proposal.proto @@ -21,8 +21,8 @@ message StoreCodeProposal { // WASMByteCode can be raw or gzip compressed bytes wasm_byte_code = 4 [(gogoproto.customname) = "WASMByteCode"]; // Source is a valid absolute HTTPS URI to the contract's source code, optional - // 5 and 6 intentionally left empty (used in v1beta1) - + // Used in v1beta1 + reserved 5, 6; // InstantiatePermission to apply on contract creation, optional AccessConfig instantiate_permission = 7; } diff --git a/proto/lbm/wasm/v1/query.proto b/proto/lbm/wasm/v1/query.proto index bfc19f4efe..72096e7056 100644 --- a/proto/lbm/wasm/v1/query.proto +++ b/proto/lbm/wasm/v1/query.proto @@ -152,7 +152,8 @@ message CodeInfoResponse { (gogoproto.jsontag) = "id"]; // id for legacy support string creator = 2; bytes data_hash = 3 [(gogoproto.casttype) = "github.com/line/ostracon/libs/bytes.HexBytes"]; - // 4 and 5 intentionally left empty (used in v1beta1) + // Used in v1beta1 + reserved 4, 5; AccessConfig instantiate_permission = 6 [(gogoproto.nullable) = false]; } diff --git a/proto/lbm/wasm/v1/tx.proto b/proto/lbm/wasm/v1/tx.proto index 06d27984b6..581fb096fe 100644 --- a/proto/lbm/wasm/v1/tx.proto +++ b/proto/lbm/wasm/v1/tx.proto @@ -35,8 +35,8 @@ message MsgStoreCode { string sender = 1; // WASMByteCode can be raw or gzip compressed bytes wasm_byte_code = 2 [(gogoproto.customname) = "WASMByteCode"]; - // 3 and 4 intentionally left empty (used in v1beta1) - + // Used in v1beta1 + reserved 3, 4; // InstantiatePermission access control to apply on contract creation, // optional AccessConfig instantiate_permission = 5; @@ -78,8 +78,8 @@ message MsgStoreCodeAndInstantiateContract { string sender = 1; // WASMByteCode can be raw or gzip compressed bytes wasm_byte_code = 2 [(gogoproto.customname) = "WASMByteCode"]; - // 3 and 4 intentionally left empty (used in v1beta1) - + // Used in v1beta1 + reserved 3, 4; AccessConfig instantiate_permission = 5; // Admin is an optional address that can execute migrations string admin = 6; diff --git a/proto/lbm/wasm/v1/types.proto b/proto/lbm/wasm/v1/types.proto index 174582a7e3..0cced703f5 100644 --- a/proto/lbm/wasm/v1/types.proto +++ b/proto/lbm/wasm/v1/types.proto @@ -69,8 +69,8 @@ message CodeInfo { bytes code_hash = 1; // Creator address who initially stored the code string creator = 2; - // 3 and 4 intentionally left empty (used in v1beta1) - + // Used in v1beta1 + reserved 3, 4; // InstantiateConfig access control to apply on contract creation, optional AccessConfig instantiate_config = 5 [(gogoproto.nullable) = false]; } diff --git a/x/wasm/types/proposal.pb.go b/x/wasm/types/proposal.pb.go index 7692bf9b17..c96498586d 100644 --- a/x/wasm/types/proposal.pb.go +++ b/x/wasm/types/proposal.pb.go @@ -400,50 +400,51 @@ func init() { func init() { proto.RegisterFile("lbm/wasm/v1/proposal.proto", fileDescriptor_38b6af62537450c9) } var fileDescriptor_38b6af62537450c9 = []byte{ - // 687 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x55, 0x4f, 0x6b, 0x13, 0x4d, - 0x18, 0xcf, 0x34, 0x4d, 0xd2, 0x4e, 0x42, 0xdf, 0x74, 0xdf, 0xb4, 0xcd, 0x9b, 0xbe, 0xec, 0x86, - 0xad, 0x48, 0x40, 0x4c, 0x68, 0x0b, 0xa2, 0xde, 0xb2, 0xf1, 0x52, 0xa1, 0x10, 0xb6, 0x16, 0xc1, - 0x4b, 0xd8, 0x3f, 0xd3, 0x74, 0x70, 0x77, 0x66, 0xd9, 0x99, 0xb4, 0xe6, 0x5b, 0xf8, 0x01, 0xbc, - 0x8a, 0xe2, 0x45, 0x3c, 0xfb, 0x05, 0x7a, 0xec, 0xb1, 0xa7, 0xd5, 0xa6, 0x57, 0x4f, 0xf9, 0x04, - 0x32, 0x33, 0x9b, 0x98, 0x88, 0x8a, 0xa0, 0x15, 0xbc, 0xed, 0xf3, 0x6f, 0x7e, 0xbf, 0xe7, 0xf7, - 0x3c, 0x3b, 0x03, 0x6b, 0x81, 0x1b, 0xb6, 0x4e, 0x1d, 0x16, 0xb6, 0x4e, 0xb6, 0x5b, 0x51, 0x4c, - 0x23, 0xca, 0x9c, 0xa0, 0x19, 0xc5, 0x94, 0x53, 0xad, 0x18, 0xb8, 0x61, 0x53, 0xc4, 0x9a, 0x27, - 0xdb, 0xb5, 0x4a, 0x9f, 0xf6, 0xa9, 0xf4, 0xb7, 0xc4, 0x97, 0x4a, 0xa9, 0xad, 0x8b, 0x72, 0xd7, - 0x61, 0x48, 0x94, 0x7b, 0x14, 0x93, 0xd4, 0xbf, 0x31, 0x7b, 0x2c, 0x1f, 0x46, 0x88, 0xa9, 0x80, - 0xf9, 0x09, 0xc0, 0xd5, 0x03, 0x4e, 0x63, 0xd4, 0xa1, 0x3e, 0xea, 0xa6, 0x78, 0x5a, 0x05, 0xe6, - 0x38, 0xe6, 0x01, 0xaa, 0x82, 0x3a, 0x68, 0x2c, 0xdb, 0xca, 0xd0, 0xea, 0xb0, 0xe8, 0x23, 0xe6, - 0xc5, 0x38, 0xe2, 0x98, 0x92, 0xea, 0x82, 0x8c, 0xcd, 0xba, 0xb4, 0x35, 0x98, 0x8f, 0x07, 0xa4, - 0xe7, 0xb0, 0x6a, 0x56, 0x15, 0xc6, 0x03, 0xd2, 0x66, 0xda, 0x1d, 0xb8, 0x22, 0xb0, 0x7b, 0xee, - 0x90, 0xa3, 0x9e, 0x47, 0x7d, 0x54, 0x5d, 0xac, 0x83, 0x46, 0xc9, 0x2a, 0x8f, 0x12, 0xa3, 0xf4, - 0xb8, 0x7d, 0xb0, 0x6f, 0x0d, 0xb9, 0x24, 0x60, 0x97, 0x44, 0xde, 0xc4, 0xd2, 0xba, 0x70, 0x1d, - 0x13, 0xc6, 0x1d, 0xc2, 0xb1, 0xc3, 0x51, 0x2f, 0x42, 0x71, 0x88, 0x19, 0x13, 0xd8, 0x85, 0x3a, - 0x68, 0x14, 0x77, 0xfe, 0x6b, 0xce, 0x28, 0xd2, 0x6c, 0x7b, 0x1e, 0x62, 0xac, 0x43, 0xc9, 0x11, - 0xee, 0xdb, 0x6b, 0x33, 0x85, 0xdd, 0x69, 0x9d, 0xf9, 0x72, 0x01, 0x6e, 0xee, 0x7d, 0x89, 0x74, - 0x28, 0xe1, 0xb1, 0xe3, 0xf1, 0xeb, 0x6a, 0xbc, 0x02, 0x73, 0x8e, 0x1f, 0x62, 0x22, 0xfb, 0x5d, - 0xb6, 0x95, 0xa1, 0x6d, 0xc1, 0x82, 0x10, 0xa1, 0x87, 0xfd, 0x6a, 0xae, 0x0e, 0x1a, 0x8b, 0x16, - 0x1c, 0x25, 0x46, 0x5e, 0x74, 0xbc, 0xf7, 0xc0, 0xce, 0x8b, 0xd0, 0x9e, 0x2f, 0x4a, 0x03, 0xc7, - 0x45, 0x41, 0x35, 0xaf, 0x4a, 0xa5, 0xa1, 0x95, 0x61, 0x36, 0x64, 0x7d, 0xd9, 0x7e, 0xc9, 0x16, - 0x9f, 0xda, 0x23, 0x98, 0x3b, 0x1a, 0x10, 0x9f, 0x55, 0x97, 0xea, 0xd9, 0x46, 0x71, 0x67, 0x55, - 0x4a, 0x22, 0x36, 0x40, 0x48, 0xd2, 0xa1, 0x98, 0x58, 0xb7, 0xce, 0x12, 0x23, 0xf3, 0xe6, 0x83, - 0xb1, 0xd5, 0xc7, 0xfc, 0x78, 0xe0, 0x36, 0x3d, 0x1a, 0xb6, 0x02, 0x4c, 0x50, 0x2b, 0x70, 0xc3, - 0xdb, 0xcc, 0x7f, 0x9a, 0xee, 0x83, 0xc8, 0x65, 0xb6, 0x3a, 0xcc, 0x7c, 0x0f, 0xe0, 0xc6, 0x3e, - 0xee, 0xc7, 0x7f, 0x40, 0xa3, 0x1a, 0x5c, 0xf2, 0x52, 0x88, 0x54, 0xa6, 0xa9, 0xfd, 0x73, 0x4a, - 0xa5, 0x9a, 0xe4, 0xa7, 0x9a, 0x98, 0x2f, 0x00, 0xfc, 0xf7, 0x30, 0xf2, 0x1d, 0x8e, 0xda, 0x42, - 0xf0, 0x5f, 0x66, 0xbe, 0x0d, 0x97, 0x09, 0x3a, 0xed, 0xa9, 0x51, 0x4a, 0xf2, 0x56, 0x65, 0x9c, - 0x18, 0xe5, 0xa1, 0x13, 0x06, 0xf7, 0xcd, 0x69, 0xc8, 0xb4, 0x97, 0x08, 0x3a, 0x95, 0x90, 0x3f, - 0xea, 0xca, 0x3c, 0x86, 0x5a, 0x27, 0x40, 0x4e, 0xfc, 0x7b, 0xc8, 0xcd, 0x22, 0x65, 0xbf, 0x42, - 0x7a, 0x0b, 0x60, 0xb9, 0x8b, 0x89, 0x10, 0x8c, 0x4d, 0x81, 0x6e, 0xce, 0x01, 0x59, 0xe5, 0x71, - 0x62, 0x94, 0x54, 0x27, 0xd2, 0x6d, 0x4e, 0xa0, 0xef, 0x7e, 0x03, 0xda, 0x5a, 0x1f, 0x27, 0x86, - 0xa6, 0xb2, 0x67, 0x82, 0xe6, 0x3c, 0xa5, 0x7b, 0x82, 0x92, 0x1c, 0x9b, 0x98, 0x75, 0xb6, 0xb1, - 0x68, 0xe9, 0xa3, 0xc4, 0x28, 0xa8, 0xb9, 0xb1, 0x71, 0x62, 0xfc, 0xa3, 0x4e, 0x98, 0x24, 0x99, - 0x76, 0x41, 0xcd, 0x92, 0x99, 0xef, 0x00, 0xd4, 0x0e, 0x49, 0xf4, 0x57, 0x71, 0x7e, 0x05, 0xe0, - 0xff, 0x6a, 0xdd, 0x26, 0xff, 0xca, 0x01, 0x77, 0xf8, 0x80, 0x5d, 0xe7, 0x68, 0xb5, 0x5d, 0x98, - 0x67, 0x12, 0x45, 0xae, 0xd7, 0xca, 0xce, 0xe6, 0xdc, 0x5d, 0x38, 0x4f, 0xc4, 0x4e, 0x53, 0xad, - 0x87, 0x67, 0x97, 0x7a, 0xe6, 0xe2, 0x52, 0xcf, 0xbc, 0x1e, 0xe9, 0xe0, 0x6c, 0xa4, 0x83, 0xf3, - 0x91, 0x0e, 0x3e, 0x8e, 0x74, 0xf0, 0xfc, 0x4a, 0xcf, 0x9c, 0x5f, 0xe9, 0x99, 0x8b, 0x2b, 0x3d, - 0xf3, 0xe4, 0xc6, 0xf7, 0x2e, 0x8a, 0x67, 0xea, 0x09, 0x91, 0xf7, 0x85, 0x9b, 0x97, 0x0f, 0xc8, - 0xee, 0xe7, 0x00, 0x00, 0x00, 0xff, 0xff, 0xee, 0x0e, 0x94, 0x33, 0xb2, 0x06, 0x00, 0x00, + // 700 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x55, 0x4d, 0x6b, 0xdb, 0x48, + 0x18, 0xf6, 0xc4, 0xb6, 0xec, 0x8c, 0x4d, 0xd6, 0xd1, 0x3a, 0x89, 0xd7, 0x59, 0x24, 0xa3, 0x2c, + 0x8b, 0x61, 0x59, 0x9b, 0x24, 0xb0, 0xec, 0xee, 0xcd, 0xf2, 0x5e, 0x12, 0x08, 0x18, 0x65, 0x43, + 0xa1, 0x17, 0xa3, 0x8f, 0x89, 0x33, 0x54, 0x9a, 0x11, 0x9a, 0x71, 0x52, 0xff, 0x8b, 0xfe, 0x80, + 0x5e, 0x4b, 0x4b, 0x2f, 0xa5, 0xe7, 0xfe, 0x81, 0x1c, 0x73, 0xcc, 0x49, 0x6d, 0x9c, 0x7f, 0xe0, + 0x53, 0x8f, 0x65, 0x66, 0x6c, 0xd7, 0x2e, 0x6d, 0x29, 0xb4, 0x29, 0xf4, 0xa6, 0xf7, 0x6b, 0x9e, + 0xe7, 0x7d, 0xde, 0x57, 0x33, 0xb0, 0x1e, 0x7a, 0x51, 0xfb, 0xc2, 0x65, 0x51, 0xfb, 0x7c, 0xb7, + 0x1d, 0x27, 0x34, 0xa6, 0xcc, 0x0d, 0x5b, 0x71, 0x42, 0x39, 0xd5, 0x4b, 0xa1, 0x17, 0xb5, 0x44, + 0xac, 0x75, 0xbe, 0x5b, 0xaf, 0x0e, 0xe8, 0x80, 0x4a, 0x7f, 0x5b, 0x7c, 0xa9, 0x94, 0xfa, 0xa6, + 0x28, 0xf7, 0x5c, 0x86, 0x44, 0xb9, 0x4f, 0x31, 0x99, 0xfa, 0xb7, 0x16, 0x8f, 0xe5, 0xa3, 0x18, + 0x31, 0x15, 0xb0, 0xde, 0x02, 0xb8, 0x7e, 0xcc, 0x69, 0x82, 0xba, 0x34, 0x40, 0xbd, 0x29, 0x9e, + 0x5e, 0x85, 0x79, 0x8e, 0x79, 0x88, 0x6a, 0xa0, 0x01, 0x9a, 0xab, 0x8e, 0x32, 0xf4, 0x06, 0x2c, + 0x05, 0x88, 0xf9, 0x09, 0x8e, 0x39, 0xa6, 0xa4, 0xb6, 0x22, 0x63, 0x8b, 0x2e, 0x7d, 0x03, 0x6a, + 0xc9, 0x90, 0xf4, 0x5d, 0x56, 0xcb, 0xaa, 0xc2, 0x64, 0x48, 0x3a, 0x4c, 0xff, 0x0b, 0xae, 0x09, + 0xec, 0xbe, 0x37, 0xe2, 0xa8, 0xef, 0xd3, 0x00, 0xd5, 0x72, 0x0d, 0xd0, 0x2c, 0xdb, 0x95, 0x71, + 0x6a, 0x96, 0xef, 0x75, 0x8e, 0x8f, 0xec, 0x11, 0x97, 0x04, 0x9c, 0xb2, 0xc8, 0x9b, 0x59, 0x7a, + 0x0f, 0x6e, 0x62, 0xc2, 0xb8, 0x4b, 0x38, 0x76, 0x39, 0xea, 0xc7, 0x28, 0x89, 0x30, 0x63, 0x02, + 0xbb, 0xd0, 0x00, 0xcd, 0xd2, 0xde, 0x2f, 0xad, 0x05, 0x45, 0x5a, 0x1d, 0xdf, 0x47, 0x8c, 0x75, + 0x29, 0x39, 0xc5, 0x03, 0x67, 0x63, 0xa1, 0xb0, 0x37, 0xaf, 0x3b, 0xcc, 0x15, 0xf3, 0x15, 0xed, + 0x30, 0x57, 0xd4, 0x2a, 0x05, 0xeb, 0xc9, 0x0a, 0xdc, 0x3e, 0x78, 0x9f, 0xd5, 0xa5, 0x84, 0x27, + 0xae, 0xcf, 0xef, 0x4a, 0x84, 0x2a, 0xcc, 0xbb, 0x41, 0x84, 0x89, 0xec, 0x7d, 0xd5, 0x51, 0x86, + 0xbe, 0x03, 0x0b, 0x42, 0x90, 0x3e, 0x0e, 0x6a, 0xf9, 0x06, 0x68, 0xe6, 0x6c, 0x38, 0x4e, 0x4d, + 0x4d, 0x74, 0x7f, 0xf0, 0x9f, 0xa3, 0x89, 0xd0, 0x41, 0x20, 0x4a, 0x43, 0xd7, 0x43, 0x61, 0x4d, + 0x53, 0xa5, 0xd2, 0xd0, 0x2b, 0x30, 0x1b, 0xb1, 0x81, 0x94, 0xa2, 0xec, 0x88, 0x4f, 0xfd, 0x7f, + 0x98, 0x3f, 0x1d, 0x92, 0x80, 0xd5, 0x8a, 0x8d, 0x6c, 0xb3, 0xb4, 0xb7, 0x2e, 0xe5, 0x11, 0xdb, + 0x20, 0xe4, 0xe9, 0x52, 0x4c, 0xec, 0x3f, 0x2e, 0x53, 0x33, 0xf3, 0xfc, 0xb5, 0xb9, 0x33, 0xc0, + 0xfc, 0x6c, 0xe8, 0xb5, 0x7c, 0x1a, 0xb5, 0x43, 0x4c, 0x50, 0x3b, 0xf4, 0xa2, 0x3f, 0x59, 0xf0, + 0x60, 0xba, 0x1b, 0x22, 0x97, 0x39, 0xea, 0x30, 0xeb, 0x15, 0x80, 0x5b, 0x47, 0x78, 0x90, 0x7c, + 0x07, 0x8d, 0xea, 0xb0, 0xe8, 0x4f, 0x21, 0xa6, 0x32, 0xcd, 0xed, 0x2f, 0x53, 0x6a, 0xaa, 0x89, + 0x36, 0xd7, 0xc4, 0x7a, 0x0c, 0xe0, 0xcf, 0x27, 0x71, 0xe0, 0x72, 0xd4, 0x11, 0x82, 0x7f, 0x35, + 0xf3, 0x5d, 0xb8, 0x4a, 0xd0, 0x45, 0x5f, 0x8d, 0x52, 0x92, 0xb7, 0xab, 0x93, 0xd4, 0xac, 0x8c, + 0xdc, 0x28, 0xfc, 0xd7, 0x9a, 0x87, 0x2c, 0xa7, 0x48, 0xd0, 0x85, 0x84, 0xfc, 0x5c, 0x57, 0xd6, + 0x19, 0xd4, 0xbb, 0x21, 0x72, 0x93, 0x6f, 0x43, 0x6e, 0x11, 0x29, 0xfb, 0x01, 0xd2, 0x0b, 0x00, + 0x2b, 0x3d, 0x4c, 0x84, 0x60, 0x6c, 0x0e, 0xf4, 0xfb, 0x12, 0x90, 0x5d, 0x99, 0xa4, 0x66, 0x59, + 0x75, 0x22, 0xdd, 0xd6, 0x0c, 0xfa, 0xef, 0x8f, 0x40, 0xdb, 0x9b, 0x93, 0xd4, 0xd4, 0x55, 0xf6, + 0x42, 0xd0, 0x5a, 0xa6, 0xf4, 0x8f, 0xa0, 0x24, 0xc7, 0x26, 0x66, 0x9d, 0x6d, 0xe6, 0x6c, 0x63, + 0x9c, 0x9a, 0x05, 0x35, 0x37, 0x36, 0x49, 0xcd, 0x9f, 0xd4, 0x09, 0xb3, 0x24, 0xcb, 0x29, 0xa8, + 0x59, 0x32, 0xeb, 0x25, 0x80, 0xfa, 0x09, 0x89, 0x7f, 0x28, 0xce, 0x4f, 0x01, 0xfc, 0x55, 0xad, + 0xdb, 0xec, 0x5f, 0x39, 0xe6, 0x2e, 0x1f, 0xb2, 0xbb, 0x1c, 0xad, 0xbe, 0x0f, 0x35, 0x26, 0x51, + 0xe4, 0x7a, 0xad, 0xed, 0x6d, 0x2f, 0xdd, 0x8b, 0xcb, 0x44, 0x9c, 0x69, 0xaa, 0x7d, 0x78, 0x79, + 0x63, 0x64, 0xae, 0x6f, 0x8c, 0xcc, 0xb3, 0xb1, 0x01, 0x2e, 0xc7, 0x06, 0xb8, 0x1a, 0x1b, 0xe0, + 0xcd, 0xd8, 0x00, 0x8f, 0x6e, 0x8d, 0xcc, 0xd5, 0xad, 0x91, 0xb9, 0xbe, 0x35, 0x32, 0xf7, 0x7f, + 0xfb, 0xd4, 0x45, 0xf1, 0x50, 0x3d, 0x27, 0xf2, 0xbe, 0xf0, 0x34, 0xf9, 0x98, 0xec, 0xbf, 0x0b, + 0x00, 0x00, 0xff, 0xff, 0x0d, 0x85, 0xc2, 0x92, 0xbe, 0x06, 0x00, 0x00, } func (this *StoreCodeProposal) Equal(that interface{}) bool { diff --git a/x/wasm/types/query.pb.go b/x/wasm/types/query.pb.go index 26d048b7e4..2873f7ae5d 100644 --- a/x/wasm/types/query.pb.go +++ b/x/wasm/types/query.pb.go @@ -560,11 +560,10 @@ var xxx_messageInfo_QueryCodeRequest proto.InternalMessageInfo // CodeInfoResponse contains code meta data from CodeInfo type CodeInfoResponse struct { - CodeID uint64 `protobuf:"varint,1,opt,name=code_id,json=codeId,proto3" json:"id"` - Creator string `protobuf:"bytes,2,opt,name=creator,proto3" json:"creator,omitempty"` - DataHash github_com_line_ostracon_libs_bytes.HexBytes `protobuf:"bytes,3,opt,name=data_hash,json=dataHash,proto3,casttype=github.com/line/ostracon/libs/bytes.HexBytes" json:"data_hash,omitempty"` - // 4 and 5 intentionally left empty (used in v1beta1) - InstantiatePermission AccessConfig `protobuf:"bytes,6,opt,name=instantiate_permission,json=instantiatePermission,proto3" json:"instantiate_permission"` + CodeID uint64 `protobuf:"varint,1,opt,name=code_id,json=codeId,proto3" json:"id"` + Creator string `protobuf:"bytes,2,opt,name=creator,proto3" json:"creator,omitempty"` + DataHash github_com_line_ostracon_libs_bytes.HexBytes `protobuf:"bytes,3,opt,name=data_hash,json=dataHash,proto3,casttype=github.com/line/ostracon/libs/bytes.HexBytes" json:"data_hash,omitempty"` + InstantiatePermission AccessConfig `protobuf:"bytes,6,opt,name=instantiate_permission,json=instantiatePermission,proto3" json:"instantiate_permission"` } func (m *CodeInfoResponse) Reset() { *m = CodeInfoResponse{} } @@ -741,75 +740,76 @@ func init() { func init() { proto.RegisterFile("lbm/wasm/v1/query.proto", fileDescriptor_f1bdb66850244231) } var fileDescriptor_f1bdb66850244231 = []byte{ - // 1079 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcf, 0x6f, 0xe3, 0x44, - 0x14, 0xce, 0x74, 0xbb, 0x6d, 0x33, 0xed, 0x6a, 0xcb, 0x88, 0xa5, 0x69, 0xb6, 0xb5, 0x17, 0x97, - 0x45, 0x2d, 0x2d, 0x76, 0xdb, 0x5d, 0x71, 0xe0, 0x00, 0x5a, 0xb7, 0x8b, 0xba, 0x12, 0x95, 0x16, - 0x57, 0x02, 0xc1, 0x25, 0x9a, 0xd8, 0xd3, 0xc4, 0x90, 0x78, 0xb2, 0x9e, 0x69, 0xd3, 0xa8, 0xca, - 0x65, 0xc5, 0x85, 0x1b, 0xb0, 0x5c, 0x38, 0xc1, 0x09, 0xf8, 0x53, 0x7a, 0xac, 0xc4, 0x85, 0x53, - 0x04, 0x29, 0x07, 0xd4, 0x3f, 0x61, 0x4f, 0x68, 0xc6, 0xe3, 0xc4, 0x4e, 0xe3, 0xb4, 0xab, 0xc2, - 0xcd, 0xf6, 0xbc, 0xf7, 0xbe, 0xef, 0x7d, 0xf3, 0x7e, 0x24, 0x70, 0xae, 0x56, 0xae, 0x5b, 0x4d, - 0xcc, 0xea, 0xd6, 0xe1, 0x86, 0xf5, 0xec, 0x80, 0x84, 0x2d, 0xb3, 0x11, 0x52, 0x4e, 0xd1, 0x74, - 0xad, 0x5c, 0x37, 0xc5, 0x81, 0x79, 0xb8, 0x51, 0x7c, 0xbd, 0x42, 0x2b, 0x54, 0x7e, 0xb7, 0xc4, - 0x53, 0x64, 0x52, 0x5c, 0xa8, 0x50, 0x5a, 0xa9, 0x11, 0x0b, 0x37, 0x7c, 0x0b, 0x07, 0x01, 0xe5, - 0x98, 0xfb, 0x34, 0x60, 0xea, 0xd4, 0x10, 0x91, 0xcb, 0x98, 0x91, 0x28, 0xac, 0x88, 0xdf, 0xc0, - 0x15, 0x3f, 0x90, 0x46, 0xca, 0x26, 0x85, 0xce, 0x5b, 0x0d, 0xa2, 0x9c, 0x8d, 0x87, 0xb0, 0xf0, - 0x89, 0xf0, 0xda, 0xa2, 0x01, 0x0f, 0xb1, 0xcb, 0x9f, 0x04, 0xfb, 0xd4, 0x21, 0xcf, 0x0e, 0x08, - 0xe3, 0xa8, 0x00, 0x27, 0xb1, 0xe7, 0x85, 0x84, 0xb1, 0x02, 0xb8, 0x07, 0x96, 0xf3, 0x4e, 0xfc, - 0x6a, 0x7c, 0x03, 0xe0, 0xfc, 0x10, 0x37, 0xd6, 0xa0, 0x01, 0x23, 0xd9, 0x7e, 0xe8, 0x63, 0x78, - 0xcb, 0x55, 0x1e, 0x25, 0x3f, 0xd8, 0xa7, 0x85, 0xb1, 0x7b, 0x60, 0x79, 0x7a, 0x73, 0xde, 0x4c, - 0x68, 0x60, 0x26, 0x63, 0xda, 0x33, 0x27, 0x1d, 0x3d, 0x77, 0xda, 0xd1, 0xc1, 0x79, 0x47, 0xcf, - 0x39, 0x33, 0x6e, 0xe2, 0xec, 0xfd, 0xf1, 0x7f, 0x7e, 0xd6, 0x81, 0xd1, 0x84, 0x77, 0x53, 0x54, - 0x76, 0x7c, 0xc6, 0x69, 0xd8, 0xba, 0x34, 0x09, 0xf4, 0x01, 0x84, 0x7d, 0x9d, 0x14, 0x13, 0x4d, - 0x32, 0x11, 0x62, 0x9a, 0xd1, 0x1d, 0x1d, 0x6e, 0x98, 0x4f, 0x71, 0x85, 0xa8, 0x68, 0x4e, 0xc2, - 0xc3, 0xf8, 0x05, 0xc0, 0x85, 0xe1, 0xc8, 0x4a, 0x87, 0xc7, 0x70, 0x92, 0x04, 0x3c, 0xf4, 0x89, - 0x80, 0xbe, 0xb1, 0x3c, 0xbd, 0x79, 0x7f, 0x68, 0x9e, 0x5b, 0xd4, 0x23, 0xca, 0xf5, 0x71, 0xc0, - 0xc3, 0x96, 0x3d, 0x2e, 0x72, 0x76, 0x62, 0x5f, 0xf4, 0xe1, 0x10, 0x9e, 0x7a, 0x26, 0xcf, 0x08, - 0x3b, 0x45, 0xf4, 0x70, 0x40, 0x21, 0x66, 0xb7, 0x04, 0x66, 0xac, 0xd0, 0x1c, 0x9c, 0x74, 0xa9, - 0x47, 0x4a, 0xbe, 0x27, 0x15, 0x1a, 0x77, 0x26, 0xc4, 0xeb, 0x13, 0xef, 0xda, 0x02, 0xb5, 0x07, - 0xf4, 0xe9, 0xe1, 0x2a, 0x7d, 0x16, 0x60, 0x3e, 0xbe, 0xcf, 0x48, 0xa1, 0xbc, 0xd3, 0xff, 0x70, - 0xfd, 0xb4, 0x8f, 0x14, 0xfc, 0xa3, 0x5a, 0x2d, 0x66, 0xb0, 0xc7, 0x31, 0x27, 0xff, 0x7f, 0x65, - 0x7c, 0x0f, 0xe0, 0x62, 0x06, 0xb4, 0x4a, 0x7d, 0x1d, 0x4e, 0xd4, 0xa9, 0x47, 0x6a, 0x71, 0x65, - 0xa0, 0x54, 0x65, 0xec, 0x8a, 0x23, 0x55, 0x06, 0xca, 0xee, 0xfa, 0x72, 0x7c, 0xa6, 0xe4, 0x70, - 0x70, 0xf3, 0x15, 0xe5, 0x58, 0x84, 0x50, 0x86, 0x2f, 0x79, 0x98, 0x63, 0x09, 0x3d, 0xe3, 0xe4, - 0xe5, 0x97, 0x6d, 0xcc, 0xb1, 0xf1, 0x40, 0x25, 0x7b, 0x31, 0xb0, 0x4a, 0x16, 0xc1, 0x71, 0xe9, - 0x09, 0xa4, 0xa7, 0x7c, 0x36, 0x3e, 0x87, 0x9a, 0x74, 0xda, 0xab, 0xe3, 0x90, 0xff, 0xb7, 0x7c, - 0xf6, 0xa0, 0x9e, 0x19, 0xba, 0x27, 0x7f, 0x82, 0x91, 0xbd, 0xf0, 0xb2, 0xa3, 0x17, 0x48, 0xe0, - 0x52, 0xcf, 0x0f, 0x2a, 0xd6, 0x97, 0x8c, 0x06, 0xa6, 0x83, 0x9b, 0xbb, 0x84, 0x31, 0xa1, 0x65, - 0xc4, 0x77, 0x15, 0xce, 0xaa, 0x5a, 0xbe, 0xbc, 0x71, 0x8c, 0xaf, 0xc7, 0xe0, 0xac, 0x30, 0x4c, - 0x4d, 0xc5, 0x95, 0x01, 0x6b, 0x7b, 0xb6, 0xdb, 0xd1, 0x27, 0xa4, 0xd9, 0xf6, 0x79, 0x47, 0x1f, - 0xf3, 0xbd, 0x5e, 0xe3, 0x15, 0xe0, 0xa4, 0x1b, 0x12, 0xcc, 0x69, 0x28, 0xb3, 0xcb, 0x3b, 0xf1, - 0x2b, 0xda, 0x85, 0x79, 0x41, 0xa7, 0x54, 0xc5, 0xac, 0x5a, 0xb8, 0x21, 0xd9, 0xaf, 0xbf, 0xec, - 0xe8, 0x6b, 0x15, 0x9f, 0x57, 0x0f, 0xca, 0xa6, 0x4b, 0xeb, 0x56, 0xcd, 0x0f, 0x88, 0x45, 0x99, - 0xc8, 0x9a, 0x06, 0x56, 0xcd, 0x2f, 0x33, 0xab, 0xdc, 0xe2, 0x84, 0x99, 0x3b, 0xe4, 0xc8, 0x16, - 0x0f, 0xce, 0x94, 0x08, 0xb1, 0x83, 0x59, 0x15, 0x7d, 0x0a, 0xdf, 0xf0, 0x03, 0xc6, 0x71, 0xc0, - 0x7d, 0xcc, 0x49, 0xa9, 0x41, 0xc2, 0xba, 0xcf, 0x98, 0x28, 0xb0, 0x89, 0x21, 0x83, 0xf9, 0x91, - 0xeb, 0x12, 0xc6, 0xb6, 0x68, 0xb0, 0xef, 0x57, 0x54, 0x75, 0xde, 0x49, 0xb8, 0x3f, 0xed, 0x79, - 0xab, 0xc9, 0xdc, 0x86, 0xaf, 0x25, 0x34, 0x53, 0x32, 0x6c, 0x8b, 0xa6, 0x17, 0x32, 0x88, 0xf1, - 0x0f, 0x24, 0xca, 0xe2, 0xc0, 0x58, 0x4c, 0x0b, 0x67, 0x4f, 0xf5, 0xc6, 0xff, 0x94, 0xab, 0xce, - 0xd0, 0x82, 0xba, 0x40, 0x79, 0xf9, 0xf6, 0xd4, 0x79, 0x47, 0x97, 0xef, 0xd1, 0x65, 0x29, 0xf8, - 0xbd, 0x04, 0x3c, 0x8b, 0xef, 0x2c, 0xdd, 0xda, 0xe0, 0x95, 0x5b, 0xfb, 0x47, 0x00, 0x51, 0x32, - 0xaa, 0xca, 0xca, 0x86, 0xb0, 0x97, 0x55, 0xdc, 0xd3, 0x97, 0xa4, 0x15, 0x09, 0x98, 0x8f, 0x53, - 0xba, 0x7e, 0x87, 0x6f, 0x76, 0xa7, 0xe0, 0x4d, 0xc9, 0x0d, 0x3d, 0x07, 0x70, 0x26, 0xb9, 0x46, - 0x51, 0x7a, 0xf3, 0x64, 0x6d, 0xfc, 0xe2, 0xdb, 0x97, 0x99, 0x45, 0xa8, 0xc6, 0xd2, 0xf3, 0xdf, - 0xff, 0x7e, 0x31, 0xb6, 0x88, 0xee, 0xf6, 0x7e, 0x53, 0xc4, 0x73, 0xdb, 0x3a, 0x56, 0x5d, 0xda, - 0x46, 0x2f, 0x00, 0xbc, 0x3d, 0xb0, 0x1a, 0xd1, 0x72, 0x36, 0x40, 0x7a, 0x6f, 0x17, 0x57, 0xae, - 0x60, 0xa9, 0xd8, 0xac, 0x4a, 0x36, 0xf7, 0xd1, 0xd2, 0x08, 0x36, 0x56, 0x55, 0x31, 0xf8, 0x2e, - 0xc1, 0x4a, 0x2d, 0xa4, 0x51, 0xac, 0xd2, 0xbb, 0x72, 0x14, 0xab, 0x81, 0xed, 0x66, 0xac, 0x48, - 0x56, 0x4b, 0xe8, 0xcd, 0x04, 0x2b, 0x8f, 0x58, 0xc7, 0x6a, 0x08, 0xb4, 0xad, 0xfe, 0xaa, 0xfb, - 0x01, 0xc0, 0xd9, 0xc1, 0x55, 0x81, 0x86, 0x40, 0x65, 0x6c, 0xb2, 0xe2, 0x3b, 0x57, 0x31, 0x1d, - 0x41, 0xeb, 0x82, 0x58, 0x4c, 0x32, 0xf8, 0x09, 0xc0, 0xd9, 0xc1, 0xa1, 0x3e, 0x8c, 0x56, 0xc6, - 0x46, 0x19, 0x46, 0x2b, 0x6b, 0x47, 0x18, 0x0f, 0x25, 0x2d, 0x13, 0xad, 0x8d, 0xa2, 0x15, 0xe2, - 0xa6, 0x75, 0xdc, 0x1f, 0xfd, 0x6d, 0xf4, 0x2b, 0x80, 0xe8, 0xe2, 0x98, 0x47, 0xab, 0x17, 0x81, - 0x33, 0xf7, 0x4c, 0x71, 0xed, 0x6a, 0xc6, 0x8a, 0xe7, 0x7b, 0x92, 0xe7, 0x3a, 0x32, 0x47, 0xca, - 0x27, 0xfc, 0xd3, 0x4c, 0xf7, 0xe1, 0xb8, 0x2c, 0xb5, 0xc5, 0x61, 0x05, 0xd4, 0xaf, 0x2f, 0x2d, - 0xeb, 0x58, 0xc1, 0xeb, 0x12, 0x7e, 0x1e, 0xcd, 0x65, 0x14, 0x15, 0x2a, 0xc1, 0x9b, 0x72, 0x32, - 0xa1, 0x8c, 0x48, 0xf1, 0x20, 0x2c, 0xea, 0x99, 0xe7, 0x0a, 0xea, 0x8e, 0x84, 0xba, 0x8d, 0x6e, - 0xa5, 0xa0, 0xec, 0x8f, 0x4e, 0xfe, 0xd2, 0x72, 0xbf, 0x75, 0xb5, 0xdc, 0x49, 0x57, 0x03, 0xa7, - 0x5d, 0x0d, 0xfc, 0xd9, 0xd5, 0xc0, 0xb7, 0x67, 0x5a, 0xee, 0xf4, 0x4c, 0xcb, 0xfd, 0x71, 0xa6, - 0xe5, 0xbe, 0x78, 0x6b, 0x70, 0x19, 0xd5, 0xca, 0xf5, 0x77, 0x99, 0xf7, 0x95, 0x75, 0x14, 0x45, - 0x92, 0x7f, 0x3f, 0xca, 0x13, 0xf2, 0xff, 0xc7, 0x83, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x7a, - 0x0e, 0x54, 0x90, 0x18, 0x0d, 0x00, 0x00, + // 1092 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xf6, 0xa4, 0x8e, 0x63, 0x4f, 0x52, 0xd5, 0x8c, 0x28, 0x71, 0xdc, 0x64, 0xb7, 0x6c, 0x28, + 0x4a, 0x48, 0xd8, 0x4d, 0xd2, 0x8a, 0x03, 0x07, 0x50, 0x9d, 0x14, 0xa5, 0x15, 0x91, 0xca, 0x46, + 0x02, 0xc1, 0xc5, 0x1a, 0xef, 0x4e, 0x9c, 0x05, 0x7b, 0xc7, 0xdd, 0x99, 0xfc, 0xb0, 0xa2, 0x5c, + 0x7a, 0xe3, 0x56, 0x28, 0x17, 0x4e, 0x70, 0x02, 0xfe, 0x94, 0x1c, 0x23, 0x71, 0xe1, 0x64, 0x81, + 0xc3, 0x01, 0xe5, 0x4f, 0xe8, 0x09, 0xcd, 0xec, 0xac, 0xbd, 0xeb, 0x78, 0x9d, 0x54, 0x81, 0x9b, + 0x77, 0xe7, 0xbd, 0xf7, 0x7d, 0xef, 0xdb, 0x37, 0xef, 0x4b, 0xe0, 0x74, 0xa3, 0xd6, 0xb4, 0x0e, + 0x30, 0x6b, 0x5a, 0xfb, 0xab, 0xd6, 0xb3, 0x3d, 0x12, 0xb4, 0xcd, 0x56, 0x40, 0x39, 0x45, 0x93, + 0x8d, 0x5a, 0xd3, 0x14, 0x07, 0xe6, 0xfe, 0x6a, 0xf9, 0xcd, 0x3a, 0xad, 0x53, 0xf9, 0xde, 0x12, + 0xbf, 0xc2, 0x90, 0xf2, 0x6c, 0x9d, 0xd2, 0x7a, 0x83, 0x58, 0xb8, 0xe5, 0x59, 0xd8, 0xf7, 0x29, + 0xc7, 0xdc, 0xa3, 0x3e, 0x53, 0xa7, 0x86, 0xa8, 0x5c, 0xc3, 0x8c, 0x84, 0x65, 0x45, 0xfd, 0x16, + 0xae, 0x7b, 0xbe, 0x0c, 0x52, 0x31, 0x09, 0x74, 0xde, 0x6e, 0x11, 0x95, 0x6c, 0x3c, 0x80, 0xa5, + 0xcf, 0x44, 0xd6, 0x3a, 0xf5, 0x79, 0x80, 0x1d, 0xfe, 0xd8, 0xdf, 0xa1, 0x36, 0x79, 0xb6, 0x47, + 0x18, 0x47, 0x25, 0x38, 0x81, 0x5d, 0x37, 0x20, 0x8c, 0x95, 0xc0, 0x5d, 0xb0, 0x50, 0xb0, 0xa3, + 0x47, 0xe3, 0x5b, 0x00, 0x67, 0x86, 0xa4, 0xb1, 0x16, 0xf5, 0x19, 0x49, 0xcf, 0x43, 0x9f, 0xc2, + 0x9b, 0x8e, 0xca, 0xa8, 0x7a, 0xfe, 0x0e, 0x2d, 0x8d, 0xdd, 0x05, 0x0b, 0x93, 0x6b, 0x33, 0x66, + 0x4c, 0x03, 0x33, 0x5e, 0xb3, 0x32, 0x75, 0xd2, 0xd1, 0x33, 0xa7, 0x1d, 0x1d, 0x9c, 0x77, 0xf4, + 0x8c, 0x3d, 0xe5, 0xc4, 0xce, 0x3e, 0xcc, 0xfe, 0xf3, 0xb3, 0x0e, 0x8c, 0x03, 0x78, 0x27, 0x41, + 0x65, 0xd3, 0x63, 0x9c, 0x06, 0xed, 0x4b, 0x9b, 0x40, 0x1f, 0x41, 0xd8, 0xd7, 0x49, 0x31, 0xd1, + 0x24, 0x13, 0x21, 0xa6, 0x19, 0x7e, 0xa3, 0xfd, 0x55, 0xf3, 0x29, 0xae, 0x13, 0x55, 0xcd, 0x8e, + 0x65, 0x18, 0xbf, 0x00, 0x38, 0x3b, 0x1c, 0x59, 0xe9, 0xf0, 0x08, 0x4e, 0x10, 0x9f, 0x07, 0x1e, + 0x11, 0xd0, 0x37, 0x16, 0x26, 0xd7, 0xee, 0x0d, 0xed, 0x73, 0x9d, 0xba, 0x44, 0xa5, 0x3e, 0xf2, + 0x79, 0xd0, 0xae, 0x64, 0x45, 0xcf, 0x76, 0x94, 0x8b, 0x3e, 0x1e, 0xc2, 0x53, 0x4f, 0xe5, 0x19, + 0x62, 0x27, 0x88, 0xee, 0x0f, 0x28, 0xc4, 0x2a, 0x6d, 0x81, 0x19, 0x29, 0x34, 0x0d, 0x27, 0x1c, + 0xea, 0x92, 0xaa, 0xe7, 0x4a, 0x85, 0xb2, 0x76, 0x4e, 0x3c, 0x3e, 0x76, 0xaf, 0x2d, 0xd0, 0xf1, + 0x80, 0x3e, 0x3d, 0x5c, 0xa5, 0xcf, 0x2c, 0x2c, 0x44, 0xdf, 0x33, 0x54, 0xa8, 0x60, 0xf7, 0x5f, + 0x5c, 0xbf, 0xed, 0x43, 0x05, 0xff, 0xb0, 0xd1, 0x88, 0x18, 0x6c, 0x73, 0xcc, 0xc9, 0xff, 0x3f, + 0x19, 0xdf, 0x03, 0x38, 0x97, 0x02, 0xad, 0x5a, 0x5f, 0x81, 0xb9, 0x26, 0x75, 0x49, 0x23, 0x9a, + 0x0c, 0x94, 0x98, 0x8c, 0x2d, 0x71, 0xa4, 0xc6, 0x40, 0xc5, 0x5d, 0x5f, 0x8e, 0x2f, 0x94, 0x1c, + 0x36, 0x3e, 0x78, 0x4d, 0x39, 0xe6, 0x20, 0x94, 0xe5, 0xab, 0x2e, 0xe6, 0x58, 0x42, 0x4f, 0xd9, + 0x05, 0xf9, 0x66, 0x03, 0x73, 0x6c, 0xdc, 0x57, 0xcd, 0x5e, 0x2c, 0xac, 0x9a, 0x45, 0x30, 0x2b, + 0x33, 0x81, 0xcc, 0x94, 0xbf, 0x8d, 0x2f, 0xa1, 0x26, 0x93, 0xb6, 0x9b, 0x38, 0xe0, 0xff, 0x2d, + 0x9f, 0x6d, 0xa8, 0xa7, 0x96, 0xee, 0xc9, 0x1f, 0x63, 0x54, 0x99, 0x7d, 0xd5, 0xd1, 0x4b, 0xc4, + 0x77, 0xa8, 0xeb, 0xf9, 0x75, 0xeb, 0x6b, 0x46, 0x7d, 0xd3, 0xc6, 0x07, 0x5b, 0x84, 0x31, 0xa1, + 0x65, 0xc8, 0x77, 0x09, 0x16, 0xd5, 0x2c, 0x5f, 0x7e, 0x71, 0x8c, 0x17, 0x63, 0xb0, 0x28, 0x02, + 0x13, 0x5b, 0x71, 0x71, 0x20, 0xba, 0x52, 0xec, 0x76, 0xf4, 0x9c, 0x0c, 0xdb, 0x38, 0xef, 0xe8, + 0x63, 0x9e, 0xdb, 0xbb, 0x78, 0x25, 0x38, 0xe1, 0x04, 0x04, 0x73, 0x1a, 0xc8, 0xee, 0x0a, 0x76, + 0xf4, 0x88, 0xb6, 0x60, 0x41, 0xd0, 0xa9, 0xee, 0x62, 0xb6, 0x5b, 0xba, 0x21, 0xd9, 0xaf, 0xbc, + 0xea, 0xe8, 0xcb, 0x75, 0x8f, 0xef, 0xee, 0xd5, 0x4c, 0x87, 0x36, 0xad, 0x86, 0xe7, 0x13, 0x8b, + 0x32, 0xd1, 0x35, 0xf5, 0xad, 0x86, 0x57, 0x63, 0x56, 0xad, 0xcd, 0x09, 0x33, 0x37, 0xc9, 0x61, + 0x45, 0xfc, 0xb0, 0xf3, 0xa2, 0xc4, 0x26, 0x66, 0xbb, 0xe8, 0x73, 0xf8, 0x96, 0xe7, 0x33, 0x8e, + 0x7d, 0xee, 0x61, 0x4e, 0xaa, 0x2d, 0x12, 0x34, 0x3d, 0xc6, 0xc4, 0x80, 0xe5, 0x86, 0x2c, 0xe6, + 0x87, 0x8e, 0x43, 0x18, 0x5b, 0xa7, 0xfe, 0x8e, 0x57, 0x57, 0xd3, 0x79, 0x3b, 0x96, 0xfe, 0xb4, + 0x97, 0x1d, 0x6e, 0xe6, 0x27, 0xd9, 0x7c, 0xb6, 0x38, 0xfe, 0x24, 0x9b, 0x1f, 0x2f, 0xe6, 0x8c, + 0x63, 0xf8, 0x46, 0x4c, 0x3f, 0x25, 0xc9, 0x86, 0x58, 0x00, 0x42, 0x12, 0x61, 0x05, 0x40, 0x22, + 0xce, 0x0d, 0xac, 0xc8, 0xa4, 0x88, 0x95, 0x7c, 0xcf, 0x0a, 0xf2, 0x8e, 0x3a, 0x43, 0xb3, 0xea, + 0x63, 0xca, 0x41, 0xa8, 0xe4, 0xcf, 0x3b, 0xba, 0x7c, 0x0e, 0x3f, 0x9c, 0x32, 0x89, 0xed, 0x18, + 0x3c, 0x8b, 0xbe, 0x5f, 0xf2, 0x9a, 0x83, 0xd7, 0xbe, 0xe6, 0x3f, 0x02, 0x88, 0xe2, 0x55, 0x55, + 0x57, 0x15, 0x08, 0x7b, 0x5d, 0x45, 0xf7, 0xfb, 0x92, 0xb6, 0x42, 0x31, 0x0b, 0x51, 0x4b, 0xd7, + 0xbf, 0xed, 0x6b, 0xdd, 0x3c, 0x1c, 0x97, 0xdc, 0xd0, 0x73, 0x00, 0xa7, 0xe2, 0x96, 0x8a, 0x92, + 0x2e, 0x94, 0xe6, 0xfe, 0xe5, 0x77, 0x2f, 0x0b, 0x0b, 0x51, 0x8d, 0xf9, 0xe7, 0xbf, 0xff, 0xfd, + 0x72, 0x6c, 0x0e, 0xdd, 0xe9, 0xfd, 0x7d, 0x11, 0xed, 0x70, 0xeb, 0x48, 0xdd, 0xd8, 0x63, 0xf4, + 0x12, 0xc0, 0x5b, 0x03, 0x36, 0x89, 0x16, 0xd2, 0x01, 0x92, 0x1e, 0x5e, 0x5e, 0xbc, 0x42, 0xa4, + 0x62, 0xb3, 0x24, 0xd9, 0xdc, 0x43, 0xf3, 0x23, 0xd8, 0x58, 0xbb, 0x8a, 0xc1, 0x77, 0x31, 0x56, + 0xca, 0x9c, 0x46, 0xb1, 0x4a, 0xfa, 0xe6, 0x28, 0x56, 0x03, 0x4e, 0x67, 0x2c, 0x4a, 0x56, 0xf3, + 0xe8, 0xed, 0x18, 0x2b, 0x97, 0x58, 0x47, 0x6a, 0x21, 0x1c, 0x5b, 0x7d, 0xdb, 0xfb, 0x01, 0xc0, + 0xe2, 0xa0, 0x6d, 0xa0, 0x21, 0x50, 0x29, 0xae, 0x56, 0x7e, 0xef, 0x2a, 0xa1, 0x23, 0x68, 0x5d, + 0x10, 0x8b, 0x49, 0x06, 0x3f, 0x01, 0x58, 0x1c, 0x5c, 0xf0, 0xc3, 0x68, 0xa5, 0xb8, 0xcb, 0x30, + 0x5a, 0x69, 0x7e, 0x61, 0x3c, 0x90, 0xb4, 0x4c, 0xb4, 0x3c, 0x8a, 0x56, 0x80, 0x0f, 0xac, 0xa3, + 0xbe, 0x0d, 0x1c, 0xa3, 0x5f, 0x01, 0x44, 0x17, 0x57, 0x3e, 0x5a, 0xba, 0x08, 0x9c, 0xea, 0x39, + 0xe5, 0xe5, 0xab, 0x05, 0x2b, 0x9e, 0x1f, 0x48, 0x9e, 0x2b, 0xc8, 0x1c, 0x29, 0x9f, 0xc8, 0x4f, + 0x32, 0xdd, 0x81, 0x59, 0x39, 0x6a, 0x73, 0xc3, 0x06, 0xa8, 0x3f, 0x5f, 0x5a, 0xda, 0xb1, 0x82, + 0xd7, 0x25, 0xfc, 0x0c, 0x9a, 0x4e, 0x19, 0x2a, 0x54, 0x85, 0xe3, 0x72, 0x33, 0xa1, 0x94, 0x4a, + 0xd1, 0x22, 0x2c, 0xeb, 0xa9, 0xe7, 0x0a, 0xea, 0xb6, 0x84, 0xba, 0x85, 0x6e, 0x26, 0xa0, 0x2a, + 0x9f, 0x9c, 0xfc, 0xa5, 0x65, 0x7e, 0xeb, 0x6a, 0x99, 0x93, 0xae, 0x06, 0x4e, 0xbb, 0x1a, 0xf8, + 0xb3, 0xab, 0x81, 0x17, 0x67, 0x5a, 0xe6, 0xf4, 0x4c, 0xcb, 0xfc, 0x71, 0xa6, 0x65, 0xbe, 0x7a, + 0x67, 0xd0, 0x98, 0x1a, 0xb5, 0xe6, 0xfb, 0xcc, 0xfd, 0xc6, 0x3a, 0x0c, 0x2b, 0xc9, 0x7f, 0x45, + 0x6a, 0x39, 0xf9, 0xbf, 0xc8, 0xfd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x69, 0xdf, 0xe6, 0xc2, + 0x24, 0x0d, 0x00, 0x00, } func (this *QueryContractInfoResponse) Equal(that interface{}) bool { diff --git a/x/wasm/types/tx.pb.go b/x/wasm/types/tx.pb.go index 9f1488da18..e5559201f0 100644 --- a/x/wasm/types/tx.pb.go +++ b/x/wasm/types/tx.pb.go @@ -731,63 +731,64 @@ func init() { func init() { proto.RegisterFile("lbm/wasm/v1/tx.proto", fileDescriptor_751e1d2b9f9bf9e8) } var fileDescriptor_751e1d2b9f9bf9e8 = []byte{ - // 882 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0x4f, 0x73, 0xdb, 0x44, - 0x14, 0xb7, 0x6a, 0xc7, 0x89, 0x5f, 0x4c, 0x28, 0xc2, 0x4d, 0x8c, 0xc2, 0xd8, 0xa9, 0xd2, 0x19, - 0x32, 0x14, 0x2c, 0x9a, 0xce, 0xd0, 0x03, 0xa7, 0xd8, 0x70, 0xc8, 0x0c, 0x82, 0x8e, 0x02, 0xc3, - 0x0c, 0x1c, 0x3c, 0x2b, 0x69, 0x2b, 0x54, 0xac, 0x5d, 0x8f, 0x76, 0xd3, 0x24, 0xa7, 0x0e, 0x5c, - 0xe1, 0xc0, 0xe7, 0xe0, 0xd4, 0x8f, 0x91, 0x63, 0x8f, 0x9c, 0x02, 0x38, 0x27, 0xbe, 0x02, 0x27, - 0x66, 0x57, 0x7f, 0xb2, 0x56, 0xa4, 0xc4, 0x81, 0x1e, 0x7a, 0xd3, 0xee, 0x7b, 0xef, 0xf7, 0x7e, - 0xef, 0xfd, 0xf6, 0x3d, 0x1b, 0x3a, 0x13, 0x37, 0xb2, 0x8e, 0x10, 0x8b, 0xac, 0x67, 0x0f, 0x2c, - 0x7e, 0x3c, 0x98, 0xc6, 0x94, 0x53, 0x7d, 0x75, 0xe2, 0x46, 0x03, 0x71, 0x3b, 0x78, 0xf6, 0xc0, - 0xe8, 0x04, 0x34, 0xa0, 0xf2, 0xde, 0x12, 0x5f, 0x89, 0x8b, 0xb1, 0x2e, 0x02, 0x5d, 0xc4, 0xb0, - 0x08, 0xf4, 0x68, 0x48, 0xd2, 0xfb, 0x8d, 0x39, 0xc0, 0x93, 0x29, 0x66, 0x89, 0xc1, 0x7c, 0xa1, - 0x41, 0xdb, 0x66, 0xc1, 0x01, 0xa7, 0x31, 0x1e, 0x51, 0x1f, 0xeb, 0xeb, 0xd0, 0x64, 0x98, 0xf8, - 0x38, 0xee, 0x6a, 0x5b, 0xda, 0x4e, 0xcb, 0x49, 0x4f, 0xfa, 0xc7, 0xb0, 0x26, 0xe2, 0xc7, 0xee, - 0x09, 0xc7, 0x63, 0x8f, 0xfa, 0xb8, 0x7b, 0x6b, 0x4b, 0xdb, 0x69, 0x0f, 0x6f, 0xcf, 0xce, 0xfa, - 0xed, 0x6f, 0xf6, 0x0e, 0xec, 0xe1, 0x09, 0x97, 0x08, 0x4e, 0x5b, 0xf8, 0x65, 0x27, 0xfd, 0x31, - 0xac, 0x87, 0x84, 0x71, 0x44, 0x78, 0x88, 0x38, 0x1e, 0x4f, 0x71, 0x1c, 0x85, 0x8c, 0x85, 0x94, - 0x74, 0x97, 0xb6, 0xb4, 0x9d, 0xd5, 0xdd, 0x77, 0x06, 0x4a, 0x55, 0x83, 0x3d, 0xcf, 0xc3, 0x8c, - 0x8d, 0x28, 0x79, 0x12, 0x06, 0xce, 0x1d, 0x25, 0xf0, 0x71, 0x1e, 0x67, 0x7e, 0x02, 0x1d, 0x95, - 0xb1, 0x83, 0xd9, 0x94, 0x12, 0x86, 0xf5, 0x6d, 0x58, 0x16, 0xbc, 0xc6, 0xa1, 0x2f, 0xa9, 0x37, - 0x86, 0x30, 0x3b, 0xeb, 0x37, 0x85, 0xcb, 0xfe, 0xa7, 0x4e, 0x53, 0x98, 0xf6, 0x7d, 0xf3, 0x6f, - 0x0d, 0xd6, 0x6d, 0x16, 0xec, 0x5f, 0x20, 0x8f, 0x28, 0xe1, 0x31, 0xf2, 0x78, 0x65, 0xe5, 0x1d, - 0x58, 0x42, 0x7e, 0x14, 0x12, 0x59, 0x70, 0xcb, 0x49, 0x0e, 0x6a, 0xb6, 0x7a, 0x55, 0x36, 0x11, - 0x3a, 0x41, 0x2e, 0x9e, 0x74, 0x1b, 0x49, 0xa8, 0x3c, 0xe8, 0xb7, 0xa1, 0x1e, 0xb1, 0x40, 0xd6, - 0xdf, 0x76, 0xc4, 0xa7, 0xfe, 0x15, 0x2c, 0x3d, 0x39, 0x24, 0x3e, 0xeb, 0x36, 0xb7, 0xea, 0x3b, - 0xab, 0xbb, 0x6f, 0xc9, 0x9e, 0x08, 0x19, 0x45, 0x4f, 0x46, 0x34, 0x24, 0xc3, 0xfb, 0xa7, 0x67, - 0xfd, 0xda, 0x6f, 0x7f, 0xf4, 0xb7, 0x83, 0x90, 0x7f, 0x7f, 0xe8, 0x0e, 0x3c, 0x1a, 0x59, 0x93, - 0x90, 0x60, 0x6b, 0xe2, 0x46, 0x1f, 0x32, 0xff, 0x87, 0x54, 0x54, 0xe1, 0xcb, 0x9c, 0x04, 0xcc, - 0xfc, 0x02, 0x7a, 0xe5, 0xa5, 0xe6, 0x2d, 0xeb, 0xc2, 0x32, 0xf2, 0xfd, 0x18, 0x33, 0x96, 0xd6, - 0x9c, 0x1d, 0x75, 0x1d, 0x1a, 0x3e, 0xe2, 0x28, 0x11, 0xd9, 0x91, 0xdf, 0xe6, 0x8f, 0x75, 0x30, - 0xd5, 0xce, 0xef, 0x11, 0xff, 0x26, 0x7d, 0x7c, 0x6d, 0x5e, 0xd0, 0x85, 0xa2, 0x4d, 0x55, 0xd1, - 0x5c, 0xac, 0x65, 0x55, 0xac, 0x47, 0xb0, 0x12, 0x92, 0x90, 0x8f, 0x85, 0x62, 0x2b, 0x92, 0xef, - 0xbb, 0xff, 0x9c, 0xf5, 0xbb, 0x98, 0x78, 0xd4, 0x0f, 0x49, 0x60, 0x3d, 0x65, 0x94, 0x0c, 0x1c, - 0x74, 0x64, 0x63, 0xc6, 0x50, 0x80, 0x9d, 0x65, 0xe1, 0x6d, 0xab, 0x9a, 0xb6, 0x5e, 0xa5, 0xa6, - 0xcf, 0xe1, 0xfd, 0xeb, 0x25, 0xb8, 0xd1, 0x48, 0xa8, 0x8f, 0xe0, 0x56, 0xf9, 0x23, 0xa8, 0x2b, - 0x8f, 0xe0, 0x85, 0x06, 0xba, 0xcd, 0x82, 0xcf, 0x8e, 0xb1, 0x77, 0xb8, 0x80, 0xe8, 0x06, 0xac, - 0x78, 0xa9, 0x4f, 0x8a, 0x9e, 0x9f, 0xb3, 0x39, 0xa8, 0x97, 0xcc, 0x41, 0xe3, 0x55, 0xf6, 0xec, - 0x23, 0x30, 0x2e, 0x33, 0xce, 0x7b, 0x94, 0x15, 0xa9, 0x29, 0x45, 0x3e, 0x97, 0x35, 0xda, 0x61, - 0x10, 0xa3, 0xff, 0x59, 0xe3, 0x42, 0x6b, 0x22, 0x6d, 0x44, 0x23, 0x6f, 0x44, 0x4a, 0xb9, 0x40, - 0xe0, 0x4a, 0xca, 0x08, 0xd6, 0x6c, 0x16, 0x7c, 0x3d, 0xf5, 0x11, 0xc7, 0x7b, 0xf2, 0x3d, 0x57, - 0xd1, 0xdd, 0x84, 0x16, 0xc1, 0x47, 0x63, 0x75, 0xa7, 0xad, 0x10, 0x7c, 0x94, 0x04, 0xa9, 0xb5, - 0xd4, 0xe7, 0x6b, 0x31, 0xbb, 0x72, 0x75, 0x2a, 0x29, 0x32, 0x42, 0xe6, 0x08, 0xde, 0xb0, 0x59, - 0x30, 0x9a, 0x60, 0x14, 0x5f, 0x9d, 0xfb, 0x2a, 0xf8, 0x0d, 0xb8, 0x33, 0x07, 0x92, 0xa3, 0xff, - 0xa4, 0xc1, 0x46, 0x9e, 0x38, 0x6b, 0xc6, 0x01, 0x47, 0xfc, 0x90, 0xfd, 0x27, 0x4d, 0x1e, 0x42, - 0x93, 0xc9, 0x68, 0x49, 0x61, 0x6d, 0x77, 0x73, 0x6e, 0x81, 0xcc, 0x27, 0x70, 0x52, 0x57, 0xf3, - 0x2e, 0xf4, 0x2b, 0x38, 0x64, 0x3c, 0x77, 0x7f, 0x69, 0x42, 0x5d, 0x4c, 0xfe, 0x3e, 0xb4, 0x2e, - 0x7e, 0x4f, 0xe7, 0xb7, 0x93, 0x3a, 0xbb, 0xc6, 0xdd, 0x4a, 0x53, 0xae, 0x74, 0x00, 0x6f, 0x97, - 0xad, 0xd8, 0xed, 0x62, 0x64, 0x89, 0x93, 0x71, 0x7f, 0x01, 0xa7, 0x3c, 0xd1, 0xcf, 0x1a, 0xf4, - 0xaf, 0x5b, 0xec, 0x56, 0x25, 0xdf, 0xf2, 0x00, 0xe3, 0xd1, 0x0d, 0x03, 0x72, 0x36, 0xdf, 0xc1, - 0x9b, 0xc5, 0x05, 0xd3, 0x2f, 0x62, 0x15, 0x1c, 0x8c, 0xf7, 0xae, 0x71, 0x50, 0xc1, 0x8b, 0x93, - 0x7d, 0x09, 0xbc, 0xe0, 0x70, 0x19, 0xbc, 0x6a, 0x34, 0xbf, 0x84, 0x55, 0x75, 0x06, 0x37, 0x8b, - 0x71, 0x8a, 0xd1, 0xd8, 0xbe, 0xc2, 0x98, 0x03, 0x7e, 0x0e, 0xa0, 0xcc, 0x95, 0x51, 0x0c, 0xb9, - 0xb0, 0x19, 0x66, 0xb5, 0x2d, 0x47, 0x7b, 0x0a, 0x9d, 0xd2, 0x31, 0xba, 0x57, 0x4e, 0x65, 0xde, - 0xcb, 0xf8, 0x60, 0x11, 0xaf, 0x2c, 0xd7, 0x70, 0x78, 0xfa, 0x57, 0xaf, 0x76, 0x3a, 0xeb, 0x69, - 0x2f, 0x67, 0x3d, 0xed, 0xcf, 0x59, 0x4f, 0xfb, 0xf5, 0xbc, 0x57, 0x7b, 0x79, 0xde, 0xab, 0xfd, - 0x7e, 0xde, 0xab, 0x7d, 0x7b, 0xaf, 0x6a, 0x81, 0x1f, 0x27, 0xff, 0x53, 0xe5, 0x1e, 0x77, 0x9b, - 0xf2, 0x5f, 0xea, 0xc3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x69, 0x65, 0xfd, 0x11, 0x0b, - 0x00, 0x00, + // 899 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0x4f, 0x6f, 0xe3, 0x44, + 0x14, 0x8f, 0xd7, 0x6e, 0x9a, 0xbc, 0x86, 0x52, 0x4c, 0xb6, 0x0d, 0x2e, 0x4a, 0xba, 0xee, 0x4a, + 0x54, 0x2c, 0x24, 0x6c, 0x57, 0x62, 0x0f, 0x9c, 0x9a, 0xc0, 0xa1, 0x2b, 0x0c, 0x2b, 0x17, 0x84, + 0x04, 0x87, 0x68, 0x62, 0xcf, 0x1a, 0x2f, 0xc9, 0x4c, 0x94, 0x99, 0x6e, 0xdb, 0xd3, 0x4a, 0x5c, + 0x01, 0x89, 0xcf, 0xc1, 0x89, 0x0f, 0xc0, 0x07, 0xe8, 0x71, 0x8f, 0x9c, 0x0a, 0xa4, 0x27, 0xbe, + 0x02, 0x27, 0x34, 0xe3, 0x3f, 0x1d, 0xbb, 0x76, 0x9b, 0xc2, 0x1e, 0xf6, 0xe6, 0x99, 0xf7, 0xfb, + 0xbd, 0xf7, 0x7b, 0xef, 0xcd, 0x7b, 0x09, 0x34, 0xc7, 0xa3, 0x49, 0xef, 0x08, 0xb1, 0x49, 0xef, + 0xd9, 0xfd, 0x1e, 0x3f, 0xee, 0x4e, 0x67, 0x94, 0x53, 0x73, 0x65, 0x3c, 0x9a, 0x74, 0xc5, 0x6d, + 0xf7, 0xd9, 0x7d, 0xab, 0x19, 0xd0, 0x80, 0xca, 0xfb, 0x9e, 0xf8, 0x8a, 0x20, 0xd6, 0xba, 0x20, + 0x8e, 0x10, 0xc3, 0x82, 0xe8, 0xd1, 0x90, 0xc4, 0xf7, 0x1b, 0x19, 0x87, 0x27, 0x53, 0xcc, 0x22, + 0x83, 0xfd, 0x9b, 0x06, 0x0d, 0x87, 0x05, 0x07, 0x9c, 0xce, 0xf0, 0x80, 0xfa, 0xd8, 0x5c, 0x87, + 0x2a, 0xc3, 0xc4, 0xc7, 0xb3, 0x96, 0xb6, 0xa5, 0xed, 0xd4, 0xdd, 0xf8, 0x64, 0x7e, 0x08, 0xab, + 0x82, 0x3f, 0x1c, 0x9d, 0x70, 0x3c, 0xf4, 0xa8, 0x8f, 0x5b, 0xb7, 0xb6, 0xb4, 0x9d, 0x46, 0x7f, + 0x6d, 0x7e, 0xd6, 0x69, 0x7c, 0xb5, 0x77, 0xe0, 0xf4, 0x4f, 0xb8, 0xf4, 0xe0, 0x36, 0x04, 0x2e, + 0x39, 0x99, 0x8f, 0x61, 0x3d, 0x24, 0x8c, 0x23, 0xc2, 0x43, 0xc4, 0xf1, 0x70, 0x8a, 0x67, 0x93, + 0x90, 0xb1, 0x90, 0x92, 0xd6, 0xd2, 0x96, 0xb6, 0xb3, 0xb2, 0xfb, 0x56, 0x57, 0xc9, 0xaa, 0xbb, + 0xe7, 0x79, 0x98, 0xb1, 0x01, 0x25, 0x4f, 0xc2, 0xc0, 0xbd, 0xad, 0x10, 0x1f, 0xa7, 0xbc, 0x47, + 0x46, 0x4d, 0x5f, 0x33, 0x1e, 0x19, 0x35, 0x63, 0x6d, 0xc9, 0xfe, 0x08, 0x9a, 0xaa, 0x7a, 0x17, + 0xb3, 0x29, 0x25, 0x0c, 0x9b, 0xdb, 0xb0, 0x2c, 0x34, 0x0e, 0x43, 0x5f, 0xa6, 0x61, 0xf4, 0x61, + 0x7e, 0xd6, 0xa9, 0x0a, 0xc8, 0xfe, 0xc7, 0x6e, 0x55, 0x98, 0xf6, 0x7d, 0xfb, 0x6f, 0x0d, 0xd6, + 0x1d, 0x16, 0xec, 0x5f, 0x44, 0x19, 0x50, 0xc2, 0x67, 0xc8, 0xe3, 0xa5, 0x55, 0x68, 0xc2, 0x12, + 0xf2, 0x27, 0x21, 0x91, 0xc9, 0xd7, 0xdd, 0xe8, 0xa0, 0x46, 0xd3, 0xcb, 0xa2, 0x09, 0xea, 0x18, + 0x8d, 0xf0, 0xb8, 0x65, 0x44, 0x54, 0x79, 0x30, 0xd7, 0x40, 0x9f, 0xb0, 0x40, 0xd6, 0xa2, 0xe1, + 0x8a, 0x4f, 0xf3, 0x0b, 0x58, 0x7a, 0x72, 0x48, 0x7c, 0xd6, 0xaa, 0x6e, 0xe9, 0x3b, 0x2b, 0xbb, + 0x6f, 0xc8, 0xfa, 0x88, 0x96, 0x8a, 0xfa, 0x0c, 0x68, 0x48, 0xfa, 0xf7, 0x4e, 0xcf, 0x3a, 0x95, + 0x5f, 0xfe, 0xe8, 0x6c, 0x07, 0x21, 0xff, 0xf6, 0x70, 0xd4, 0xf5, 0xe8, 0xa4, 0x37, 0x0e, 0x09, + 0xee, 0x8d, 0x47, 0x93, 0xf7, 0x99, 0xff, 0x5d, 0xdc, 0x60, 0x81, 0x65, 0x6e, 0xe4, 0xcc, 0xfe, + 0x0c, 0xda, 0xc5, 0xa9, 0xa6, 0x25, 0x6b, 0xc1, 0x32, 0xf2, 0xfd, 0x19, 0x66, 0x2c, 0xce, 0x39, + 0x39, 0x9a, 0x26, 0x18, 0x3e, 0xe2, 0x28, 0x6a, 0xb8, 0x2b, 0xbf, 0xed, 0x9f, 0x74, 0xb0, 0xd5, + 0xca, 0xef, 0x11, 0xff, 0x26, 0x75, 0x7c, 0x65, 0x5e, 0xd3, 0x45, 0x47, 0xab, 0x6a, 0x47, 0xd3, + 0x66, 0x2d, 0xab, 0xcd, 0x7a, 0x08, 0xb5, 0x90, 0x84, 0x7c, 0x28, 0x3a, 0x56, 0x93, 0x7a, 0xdf, + 0xfe, 0xe7, 0xac, 0xd3, 0xc2, 0xc4, 0xa3, 0x7e, 0x48, 0x82, 0xde, 0x53, 0x46, 0x49, 0xd7, 0x45, + 0x47, 0x0e, 0x66, 0x0c, 0x05, 0xd8, 0x5d, 0x16, 0x68, 0x47, 0xed, 0x69, 0xfd, 0x25, 0xf6, 0x34, + 0x33, 0x08, 0xcf, 0xe1, 0xdd, 0xeb, 0xdb, 0x71, 0xa3, 0xf1, 0x50, 0x1f, 0xc4, 0xad, 0xe2, 0x07, + 0xa1, 0x2b, 0x0f, 0xe2, 0x57, 0x0d, 0x4c, 0x87, 0x05, 0x9f, 0x1c, 0x63, 0xef, 0x70, 0x81, 0x07, + 0x60, 0x41, 0xcd, 0x8b, 0x31, 0xb1, 0xf7, 0xf4, 0x9c, 0xcc, 0x84, 0x5e, 0x30, 0x13, 0xc6, 0xcb, + 0x9c, 0x89, 0x0f, 0xc0, 0xba, 0xac, 0x38, 0xad, 0x51, 0x92, 0xa4, 0xa6, 0x24, 0xf9, 0x5c, 0xe6, + 0xe8, 0x84, 0xc1, 0x0c, 0xfd, 0xcf, 0x1c, 0x17, 0x5a, 0x19, 0x71, 0x21, 0x8c, 0xb4, 0x10, 0xb1, + 0xe4, 0x9c, 0x80, 0x2b, 0x25, 0x23, 0x58, 0x75, 0x58, 0xf0, 0xe5, 0xd4, 0x47, 0x1c, 0xef, 0xc9, + 0xb7, 0x5d, 0x26, 0x77, 0x13, 0xea, 0x04, 0x1f, 0x0d, 0xd5, 0xfd, 0x56, 0x23, 0xf8, 0x28, 0x22, + 0xa9, 0xb9, 0xe8, 0xd9, 0x5c, 0xec, 0x96, 0x5c, 0xa3, 0x4a, 0x88, 0x44, 0x90, 0x3d, 0x80, 0xd7, + 0x1c, 0x16, 0x0c, 0xc6, 0x18, 0xcd, 0xae, 0x8e, 0x7d, 0x95, 0xfb, 0x0d, 0xb8, 0x9d, 0x71, 0x92, + 0x7a, 0xff, 0x5e, 0x83, 0x8d, 0x34, 0x70, 0x52, 0x8c, 0x03, 0x8e, 0xf8, 0x21, 0xfb, 0x4f, 0x3d, + 0x79, 0x00, 0x55, 0x26, 0xd9, 0x52, 0xc2, 0xea, 0xee, 0x66, 0x66, 0x99, 0x64, 0x03, 0xb8, 0x31, + 0xd4, 0xbe, 0x03, 0x9d, 0x12, 0x0d, 0x89, 0xce, 0xdd, 0x1f, 0xab, 0xa0, 0x8b, 0x2d, 0xb0, 0x0f, + 0xf5, 0x8b, 0xdf, 0xd9, 0xec, 0xa6, 0x52, 0x67, 0xd7, 0xba, 0x53, 0x6a, 0x4a, 0x3b, 0x1d, 0xc0, + 0x9b, 0x45, 0xeb, 0x76, 0x3b, 0xcf, 0x2c, 0x00, 0x59, 0xf7, 0x16, 0x00, 0xa5, 0x81, 0x7e, 0xd0, + 0xa0, 0x73, 0xdd, 0x92, 0xef, 0x95, 0xea, 0x2d, 0x26, 0x58, 0x0f, 0x6f, 0x48, 0x48, 0xd5, 0x7c, + 0x03, 0xaf, 0xe7, 0x17, 0x4c, 0x27, 0xef, 0x2b, 0x07, 0xb0, 0xde, 0xb9, 0x06, 0xa0, 0x3a, 0xcf, + 0x4f, 0xf6, 0x25, 0xe7, 0x39, 0xc0, 0x65, 0xe7, 0x65, 0xa3, 0xf9, 0x39, 0xac, 0xa8, 0x33, 0xb8, + 0x99, 0xe7, 0x29, 0x46, 0x6b, 0xfb, 0x0a, 0x63, 0xea, 0xf0, 0x53, 0x00, 0x65, 0xae, 0xac, 0x3c, + 0xe5, 0xc2, 0x66, 0xd9, 0xe5, 0xb6, 0xd4, 0xdb, 0x53, 0x68, 0x16, 0x8e, 0xd1, 0xdd, 0x62, 0x29, + 0x59, 0x94, 0xf5, 0xde, 0x22, 0xa8, 0x24, 0x56, 0xbf, 0x7f, 0xfa, 0x57, 0xbb, 0x72, 0x3a, 0x6f, + 0x6b, 0x2f, 0xe6, 0x6d, 0xed, 0xcf, 0x79, 0x5b, 0xfb, 0xf9, 0xbc, 0x5d, 0x79, 0x71, 0xde, 0xae, + 0xfc, 0x7e, 0xde, 0xae, 0x7c, 0x7d, 0xb7, 0x6c, 0x81, 0x1f, 0x47, 0xff, 0x5f, 0xe5, 0x1e, 0x1f, + 0x55, 0xe5, 0xbf, 0xd7, 0x07, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0xbb, 0x67, 0x7a, 0x0d, 0x29, + 0x0b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/x/wasm/types/types.pb.go b/x/wasm/types/types.pb.go index bcbec40a6a..d2ce96df53 100644 --- a/x/wasm/types/types.pb.go +++ b/x/wasm/types/types.pb.go @@ -486,94 +486,95 @@ func init() { func init() { proto.RegisterFile("lbm/wasm/v1/types.proto", fileDescriptor_5a7988258faf20f7) } var fileDescriptor_5a7988258faf20f7 = []byte{ - // 1381 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0x4d, 0x6f, 0x13, 0x47, - 0x18, 0xf6, 0x26, 0xce, 0x87, 0x27, 0x26, 0x98, 0x21, 0x21, 0xb6, 0x01, 0xdb, 0x6c, 0x41, 0x0d, - 0x90, 0xd8, 0x10, 0xaa, 0xb6, 0x44, 0x6a, 0x2b, 0x7f, 0x2c, 0x64, 0xdb, 0xc6, 0x8e, 0xc6, 0x0e, - 0x34, 0x95, 0xaa, 0xd5, 0x78, 0x77, 0xe2, 0x2c, 0xec, 0xee, 0x58, 0x3b, 0xe3, 0x60, 0xf3, 0x0b, - 0x90, 0x4f, 0x6d, 0x4f, 0xbd, 0x58, 0xaa, 0xd4, 0xaa, 0xe2, 0x07, 0xf4, 0x47, 0x20, 0x4e, 0x1c, - 0x7b, 0xb2, 0xda, 0x70, 0x69, 0x0f, 0xbd, 0xe4, 0x52, 0x89, 0x4b, 0xab, 0x9d, 0xb5, 0xf1, 0x26, - 0xa4, 0x49, 0x6e, 0x7e, 0x3f, 0x9e, 0xe7, 0xfd, 0x9c, 0x77, 0x0d, 0x16, 0xac, 0xba, 0x9d, 0x7b, - 0x82, 0x99, 0x9d, 0xdb, 0xbd, 0x9d, 0xe3, 0x9d, 0x26, 0x61, 0xd9, 0xa6, 0x4b, 0x39, 0x85, 0x33, - 0x56, 0xdd, 0xce, 0x7a, 0x86, 0xec, 0xee, 0xed, 0x64, 0x42, 0xa7, 0xcc, 0xa6, 0x4c, 0x13, 0xa6, - 0x9c, 0x2f, 0xf8, 0x7e, 0xc9, 0xb9, 0x06, 0x6d, 0x50, 0x5f, 0xef, 0xfd, 0x1a, 0x68, 0x13, 0x0d, - 0x4a, 0x1b, 0x16, 0xc9, 0x09, 0xa9, 0xde, 0xda, 0xce, 0x61, 0xa7, 0xe3, 0x9b, 0xe4, 0xaf, 0xc0, - 0xd9, 0xbc, 0xae, 0x13, 0xc6, 0x6a, 0x9d, 0x26, 0xd9, 0xc0, 0x2e, 0xb6, 0xe1, 0x67, 0x60, 0x62, - 0x17, 0x5b, 0x2d, 0x12, 0x97, 0x32, 0xd2, 0xe2, 0xec, 0xca, 0x42, 0x36, 0x10, 0x3b, 0x3b, 0x72, - 0x2e, 0xc4, 0xf6, 0xfb, 0xe9, 0x68, 0x07, 0xdb, 0xd6, 0xaa, 0x2c, 0xfc, 0x65, 0xe4, 0xe3, 0x56, - 0xc3, 0x3f, 0xfc, 0x98, 0x96, 0xe4, 0xef, 0x25, 0x10, 0xf5, 0xbd, 0x8b, 0xd4, 0xd9, 0x36, 0x1b, - 0xb0, 0x0c, 0x40, 0x93, 0xb8, 0xb6, 0xc9, 0x98, 0x49, 0x9d, 0x93, 0xc8, 0xe7, 0xf7, 0xfb, 0xe9, - 0x73, 0x3e, 0xf9, 0x08, 0x24, 0xa3, 0x00, 0x03, 0x5c, 0x02, 0x53, 0xd8, 0x30, 0x5c, 0xc2, 0x58, - 0x7c, 0x2c, 0x23, 0x2d, 0x46, 0x0a, 0x70, 0xbf, 0x9f, 0x9e, 0xf5, 0x31, 0x03, 0x83, 0x8c, 0x86, - 0x2e, 0x83, 0xa4, 0xfe, 0x0d, 0x83, 0x49, 0x51, 0x25, 0x83, 0x8f, 0x00, 0xd4, 0xa9, 0x41, 0xb4, - 0x56, 0xd3, 0xa2, 0xd8, 0xd0, 0xb0, 0x88, 0x2d, 0xd2, 0x9a, 0x59, 0x49, 0x1c, 0x91, 0x96, 0x5f, - 0x45, 0xe1, 0xca, 0x8b, 0x7e, 0x3a, 0xb4, 0xdf, 0x4f, 0x27, 0xfc, 0x40, 0xef, 0x52, 0xc8, 0x28, - 0xe6, 0x29, 0x37, 0x85, 0xce, 0x87, 0xc2, 0x67, 0x12, 0x48, 0x99, 0x0e, 0xe3, 0xd8, 0xe1, 0x26, - 0xe6, 0x44, 0x33, 0xc8, 0x36, 0x6e, 0x59, 0x5c, 0x0b, 0xf4, 0x63, 0xec, 0xf8, 0x7e, 0x5c, 0xdf, - 0xef, 0xa7, 0xaf, 0xf9, 0x21, 0x8f, 0x27, 0x92, 0xd1, 0xa5, 0x80, 0x43, 0xc9, 0xb7, 0x6f, 0x8c, - 0xba, 0xb6, 0x0b, 0x2e, 0xe8, 0xd4, 0xe1, 0x2e, 0xd6, 0xb9, 0xc6, 0x38, 0xe6, 0x2d, 0x36, 0x2c, - 0x7d, 0xfc, 0xa4, 0xd2, 0xaf, 0x0d, 0x4a, 0xbf, 0x3c, 0x2c, 0xfd, 0x28, 0x1a, 0x19, 0xcd, 0x0d, - 0x0d, 0x55, 0xa1, 0x1f, 0xb4, 0xe0, 0x73, 0x00, 0x6d, 0xdc, 0xd6, 0x3c, 0x62, 0x4d, 0x34, 0x8d, - 0x99, 0x4f, 0x49, 0x3c, 0x9c, 0x91, 0x16, 0xc3, 0x85, 0xcb, 0xa3, 0x7e, 0xbe, 0xeb, 0x23, 0xa3, - 0xb3, 0x36, 0x6e, 0x3f, 0xc4, 0xcc, 0x2e, 0x52, 0x83, 0x54, 0xcd, 0xa7, 0x04, 0xde, 0x05, 0xb3, - 0x0d, 0xcc, 0x34, 0xbb, 0x65, 0x71, 0xb3, 0x69, 0x99, 0xc4, 0x8d, 0x4f, 0x08, 0x9e, 0xc0, 0x02, - 0x78, 0x3c, 0x0d, 0xcc, 0x64, 0x74, 0xa6, 0x81, 0xd9, 0xfa, 0x5b, 0x47, 0xf8, 0x09, 0x38, 0xe3, - 0xb7, 0x47, 0x27, 0x9a, 0x4e, 0x19, 0x8f, 0x4f, 0x0a, 0x64, 0x7c, 0xbf, 0x9f, 0x9e, 0x0b, 0xb6, - 0x77, 0x60, 0x96, 0x51, 0x74, 0x28, 0x17, 0x29, 0xe3, 0x70, 0x15, 0x44, 0x75, 0x6a, 0x37, 0x4d, - 0x6b, 0x80, 0x9e, 0x12, 0xe8, 0x85, 0xfd, 0x7e, 0xfa, 0xfc, 0xb0, 0x29, 0x23, 0xab, 0x8c, 0x66, - 0x06, 0xa2, 0x87, 0x15, 0x1b, 0x18, 0x92, 0xbf, 0x93, 0xc0, 0xb4, 0x57, 0x88, 0xea, 0x6c, 0x53, - 0x78, 0x11, 0x44, 0x44, 0x9d, 0x3b, 0x98, 0xed, 0x88, 0xd5, 0x8b, 0xa2, 0x69, 0x4f, 0xb1, 0x86, - 0xd9, 0x0e, 0x8c, 0x83, 0x29, 0xdd, 0x25, 0x98, 0x53, 0xd7, 0xdf, 0x6f, 0x34, 0x14, 0x61, 0x19, - 0xc0, 0xe0, 0x12, 0xe8, 0x62, 0x3c, 0xa2, 0x07, 0xc7, 0xce, 0x2f, 0xec, 0xcd, 0x0f, 0x9d, 0x0b, - 0x40, 0x7d, 0x83, 0xfc, 0xf7, 0x18, 0x88, 0x16, 0x07, 0x43, 0x13, 0x79, 0xbd, 0x07, 0xa6, 0x44, - 0x5e, 0xa6, 0x21, 0xb2, 0x0a, 0x17, 0xc0, 0x5e, 0x3f, 0x3d, 0x29, 0xd2, 0x2e, 0xa1, 0x49, 0xcf, - 0xa4, 0x1a, 0xc7, 0xe4, 0x37, 0x07, 0x26, 0xb0, 0x61, 0x9b, 0x8e, 0x58, 0xa9, 0x08, 0xf2, 0x05, - 0x4f, 0x6b, 0xe1, 0x3a, 0xb1, 0xc4, 0xd0, 0x23, 0xc8, 0x17, 0xe0, 0xdd, 0x01, 0x0b, 0x31, 0x06, - 0x05, 0xa4, 0x0f, 0x16, 0x50, 0x67, 0xd4, 0x6a, 0x71, 0x52, 0x6b, 0x6f, 0x50, 0x66, 0x72, 0x93, - 0x3a, 0x68, 0xe8, 0x0f, 0x97, 0xc1, 0x8c, 0x59, 0xd7, 0xb5, 0x26, 0x75, 0xb9, 0x97, 0xe9, 0xa4, - 0x38, 0x02, 0x67, 0xf6, 0xfa, 0xe9, 0x88, 0x5a, 0x28, 0x6e, 0x50, 0x97, 0xab, 0x25, 0x14, 0x31, - 0xeb, 0xba, 0xf8, 0x69, 0xc0, 0x3b, 0x60, 0xd2, 0xdf, 0x54, 0x31, 0xb5, 0xd9, 0x95, 0x8b, 0x07, - 0x02, 0x15, 0x0f, 0x2c, 0x2d, 0x1a, 0xb8, 0xc2, 0x75, 0x10, 0x21, 0x6d, 0x4e, 0x1c, 0xf1, 0x46, - 0xa7, 0x45, 0x82, 0x73, 0x59, 0xff, 0x9c, 0x66, 0x87, 0xe7, 0x34, 0x9b, 0x77, 0x3a, 0x85, 0xc4, - 0xcb, 0x5f, 0x97, 0xe7, 0x83, 0x4d, 0x54, 0x86, 0x30, 0x34, 0x62, 0x58, 0x0d, 0xff, 0xe9, 0x5d, - 0xa1, 0x7f, 0x24, 0x10, 0x1f, 0xba, 0x7a, 0x4d, 0x5d, 0x33, 0x19, 0xa7, 0x6e, 0x47, 0x71, 0xb8, - 0xdb, 0x81, 0x5f, 0x80, 0x08, 0x6d, 0x12, 0x17, 0xf3, 0xd1, 0x95, 0x5c, 0x3e, 0x32, 0xd3, 0x00, - 0xb2, 0x32, 0x04, 0x78, 0xb7, 0x02, 0x8d, 0xf0, 0xc1, 0x41, 0x8e, 0xfd, 0xef, 0x20, 0xef, 0x82, - 0xa9, 0x56, 0xd3, 0x10, 0x23, 0x18, 0x3f, 0xe5, 0x08, 0x06, 0xfe, 0x30, 0x0b, 0xc6, 0x6d, 0xd6, - 0x10, 0x13, 0x8d, 0x16, 0x2e, 0xbd, 0xe9, 0xa7, 0xe3, 0xc4, 0xd1, 0xa9, 0x61, 0x3a, 0x8d, 0xdc, - 0x23, 0x46, 0x9d, 0x2c, 0xc2, 0x4f, 0xd6, 0x09, 0x63, 0xb8, 0x41, 0x90, 0xe7, 0x28, 0x23, 0x00, - 0xdf, 0xa5, 0x83, 0x57, 0x40, 0xb4, 0x6e, 0x51, 0xfd, 0xb1, 0xb6, 0x43, 0xcc, 0xc6, 0x0e, 0xf7, - 0x77, 0x0e, 0xcd, 0x08, 0xdd, 0x9a, 0x50, 0xc1, 0x04, 0x98, 0xe6, 0x6d, 0xcd, 0x74, 0x0c, 0xd2, - 0xf6, 0x2b, 0x41, 0x53, 0xbc, 0xad, 0x7a, 0xa2, 0x8c, 0xc1, 0xc4, 0x3a, 0x35, 0x88, 0x05, 0x0b, - 0x60, 0xfc, 0x31, 0xe9, 0xf8, 0xef, 0xa8, 0x70, 0xeb, 0x4d, 0x3f, 0xbd, 0xd4, 0x30, 0xf9, 0x4e, - 0xab, 0x9e, 0xd5, 0xa9, 0x9d, 0xb3, 0x4c, 0x87, 0xe4, 0x28, 0xf3, 0x3a, 0x47, 0x9d, 0x9c, 0x65, - 0xd6, 0x59, 0xae, 0xde, 0xe1, 0x84, 0x65, 0xd7, 0x48, 0xbb, 0xe0, 0xfd, 0x40, 0x1e, 0xd8, 0x5b, - 0x52, 0xff, 0xe3, 0x37, 0x26, 0x5e, 0xa3, 0x2f, 0xdc, 0xf8, 0x4b, 0x02, 0x60, 0x74, 0x8c, 0xe1, - 0x87, 0x60, 0x21, 0x5f, 0x2c, 0x2a, 0xd5, 0xaa, 0x56, 0xdb, 0xda, 0x50, 0xb4, 0xcd, 0x72, 0x75, - 0x43, 0x29, 0xaa, 0xf7, 0x54, 0xa5, 0x14, 0x0b, 0x25, 0x13, 0xdd, 0x5e, 0x66, 0x7e, 0xe4, 0xbc, - 0xe9, 0xb0, 0x26, 0xd1, 0xcd, 0x6d, 0x93, 0x18, 0x70, 0x09, 0xc0, 0x20, 0xae, 0x5c, 0x29, 0x54, - 0x4a, 0x5b, 0x31, 0x29, 0x39, 0xd7, 0xed, 0x65, 0x62, 0x23, 0x48, 0x99, 0xd6, 0xa9, 0xd1, 0x81, - 0x1f, 0x81, 0x78, 0xd0, 0xbb, 0x52, 0xfe, 0x72, 0x4b, 0xcb, 0x97, 0x4a, 0x48, 0xa9, 0x56, 0x63, - 0x63, 0x87, 0xc3, 0x54, 0x1c, 0xab, 0x93, 0xf7, 0x3f, 0x75, 0x70, 0x05, 0xcc, 0x07, 0x81, 0xca, - 0x03, 0x05, 0x6d, 0x89, 0x48, 0xe3, 0xc9, 0x85, 0x6e, 0x2f, 0x73, 0x7e, 0x84, 0x52, 0x76, 0x89, - 0xdb, 0xf1, 0x82, 0x25, 0xa7, 0x9f, 0xfd, 0x94, 0x0a, 0x3d, 0xff, 0x39, 0x15, 0xba, 0xf1, 0x52, - 0x02, 0xb3, 0x07, 0x1f, 0x03, 0xfc, 0x14, 0x5c, 0x2c, 0x56, 0xca, 0x35, 0x94, 0x2f, 0xd6, 0xb4, - 0x6a, 0x2d, 0x5f, 0xdb, 0xac, 0x1e, 0xaa, 0xf9, 0x72, 0xb7, 0x97, 0x49, 0x1c, 0x04, 0x05, 0xeb, - 0xfe, 0x00, 0x5c, 0x38, 0x8c, 0xcf, 0x17, 0x6b, 0xea, 0x03, 0x25, 0x26, 0x25, 0xe3, 0xdd, 0x5e, - 0x66, 0xae, 0x78, 0xe8, 0x8b, 0xc1, 0xcd, 0x5d, 0x02, 0x3f, 0x06, 0xf1, 0xc3, 0x28, 0xb5, 0x3c, - 0xc0, 0x8d, 0x25, 0x93, 0xdd, 0x5e, 0xe6, 0xc2, 0x41, 0x9c, 0xea, 0x60, 0x81, 0x0c, 0x14, 0xf3, - 0xcb, 0x38, 0xc8, 0x9c, 0xf4, 0x5e, 0x20, 0x01, 0xb7, 0xde, 0x06, 0x2a, 0x56, 0x4a, 0x8a, 0xb6, - 0xa6, 0x56, 0x6b, 0x15, 0xb4, 0xa5, 0x55, 0x36, 0x14, 0x94, 0xaf, 0xa9, 0x95, 0xf2, 0x51, 0x73, - 0xce, 0x75, 0x7b, 0x99, 0x9b, 0x27, 0x71, 0x07, 0xbb, 0xf0, 0x10, 0x5c, 0x3f, 0x55, 0x18, 0xb5, - 0xac, 0xd6, 0x62, 0x52, 0x72, 0xb1, 0xdb, 0xcb, 0x5c, 0x3d, 0x89, 0x5f, 0x75, 0x4c, 0x0e, 0xbf, - 0x01, 0x4b, 0xa7, 0x22, 0x5e, 0x57, 0xef, 0xa3, 0x7c, 0xcd, 0x6b, 0xde, 0xcd, 0x6e, 0x2f, 0xf3, - 0xfe, 0x49, 0xdc, 0xeb, 0x66, 0xc3, 0xc5, 0x9c, 0x9c, 0x9a, 0xfe, 0xbe, 0x52, 0x56, 0xaa, 0x6a, - 0x35, 0x36, 0x7e, 0x3a, 0xfa, 0xfb, 0xc4, 0x21, 0xcc, 0x64, 0xc9, 0xb0, 0x37, 0xac, 0xc2, 0xbd, - 0x17, 0x7f, 0xa4, 0x42, 0xcf, 0xf7, 0x52, 0xd2, 0x8b, 0xbd, 0x94, 0xf4, 0x6a, 0x2f, 0x25, 0xfd, - 0xbe, 0x97, 0x92, 0xbe, 0x7d, 0x9d, 0x0a, 0xbd, 0x7a, 0x9d, 0x0a, 0xfd, 0xf6, 0x3a, 0x15, 0xfa, - 0xfa, 0xea, 0xe1, 0xc7, 0x6c, 0xd5, 0xed, 0x65, 0x66, 0x3c, 0xce, 0xb5, 0xfd, 0x7f, 0xcc, 0xe2, - 0xef, 0x72, 0x7d, 0x52, 0x1c, 0xe5, 0x3b, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x32, 0xda, 0x3a, - 0x22, 0x4a, 0x0b, 0x00, 0x00, + // 1395 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0x4d, 0x6f, 0x13, 0xd7, + 0x1a, 0xf6, 0xc4, 0xce, 0x87, 0x4f, 0x4c, 0x30, 0x87, 0x84, 0xd8, 0x06, 0x6c, 0x33, 0x17, 0x74, + 0x03, 0x24, 0x36, 0x84, 0xab, 0x7b, 0x2f, 0x91, 0xee, 0xad, 0xfc, 0x31, 0x90, 0xa1, 0x8d, 0x1d, + 0x1d, 0x3b, 0xd0, 0x54, 0xaa, 0x46, 0xc7, 0x33, 0x27, 0xce, 0xc0, 0xcc, 0x1c, 0x6b, 0xce, 0x71, + 0xb0, 0xf9, 0x05, 0xc8, 0xab, 0xaa, 0xab, 0x6e, 0x2c, 0x55, 0x6a, 0x55, 0xf1, 0x03, 0xfa, 0x23, + 0x10, 0x2b, 0x96, 0x5d, 0x59, 0x6d, 0xd8, 0xb4, 0x8b, 0x6e, 0xb2, 0xa9, 0xc4, 0xa6, 0xd5, 0x9c, + 0xb1, 0xf1, 0x24, 0xa4, 0x49, 0x76, 0x7e, 0x3f, 0x9e, 0xe7, 0xfd, 0x3c, 0xef, 0x18, 0x2c, 0x5a, + 0x0d, 0x3b, 0xff, 0x1c, 0x33, 0x3b, 0xbf, 0x77, 0x37, 0xcf, 0xbb, 0x2d, 0xc2, 0x72, 0x2d, 0x97, + 0x72, 0x0a, 0x67, 0xad, 0x86, 0x9d, 0xf3, 0x0c, 0xb9, 0xbd, 0xbb, 0xa9, 0xa4, 0x4e, 0x99, 0x4d, + 0x99, 0x26, 0x4c, 0x79, 0x5f, 0xf0, 0xfd, 0x52, 0xf3, 0x4d, 0xda, 0xa4, 0xbe, 0xde, 0xfb, 0x35, + 0xd4, 0x26, 0x9b, 0x94, 0x36, 0x2d, 0x92, 0x17, 0x52, 0xa3, 0xbd, 0x93, 0xc7, 0x4e, 0xd7, 0x37, + 0xc9, 0x9f, 0x83, 0xf3, 0x05, 0x5d, 0x27, 0x8c, 0xd5, 0xbb, 0x2d, 0xb2, 0x89, 0x5d, 0x6c, 0xc3, + 0x4f, 0xc0, 0xe4, 0x1e, 0xb6, 0xda, 0x24, 0x21, 0x65, 0xa5, 0xa5, 0xb9, 0xd5, 0xc5, 0x5c, 0x20, + 0x76, 0x6e, 0xec, 0x5c, 0x8c, 0x1f, 0x0c, 0x32, 0xb1, 0x2e, 0xb6, 0xad, 0x35, 0x59, 0xf8, 0xcb, + 0xc8, 0xc7, 0xad, 0x45, 0xbe, 0xf9, 0x36, 0x23, 0xc9, 0x5f, 0x4b, 0x20, 0xe6, 0x7b, 0x97, 0xa8, + 0xb3, 0x63, 0x36, 0x61, 0x05, 0x80, 0x16, 0x71, 0x6d, 0x93, 0x31, 0x93, 0x3a, 0xa7, 0x91, 0x2f, + 0x1c, 0x0c, 0x32, 0x17, 0x7c, 0xf2, 0x31, 0x48, 0x46, 0x01, 0x06, 0xb8, 0x0c, 0xa6, 0xb1, 0x61, + 0xb8, 0x84, 0xb1, 0xc4, 0x44, 0x56, 0x5a, 0x8a, 0x16, 0xe1, 0xc1, 0x20, 0x33, 0xe7, 0x63, 0x86, + 0x06, 0x19, 0x8d, 0x5c, 0x86, 0x49, 0xfd, 0x19, 0x01, 0x53, 0xa2, 0x4a, 0x06, 0x9f, 0x02, 0xa8, + 0x53, 0x83, 0x68, 0xed, 0x96, 0x45, 0xb1, 0xa1, 0x61, 0x11, 0x5b, 0xa4, 0x35, 0xbb, 0x9a, 0x3c, + 0x26, 0x2d, 0xbf, 0x8a, 0xe2, 0xb5, 0xd7, 0x83, 0x4c, 0xe8, 0x60, 0x90, 0x49, 0xfa, 0x81, 0x3e, + 0xa6, 0x90, 0x51, 0xdc, 0x53, 0x6e, 0x09, 0x9d, 0x0f, 0x85, 0x2f, 0x25, 0x90, 0x36, 0x1d, 0xc6, + 0xb1, 0xc3, 0x4d, 0xcc, 0x89, 0x66, 0x90, 0x1d, 0xdc, 0xb6, 0xb8, 0x16, 0xe8, 0xc7, 0xc4, 0xc9, + 0xfd, 0xb8, 0x79, 0x30, 0xc8, 0xdc, 0xf0, 0x43, 0x9e, 0x4c, 0x24, 0xa3, 0x2b, 0x01, 0x87, 0xb2, + 0x6f, 0xdf, 0x1c, 0x77, 0x6d, 0x0f, 0x5c, 0xd2, 0xa9, 0xc3, 0x5d, 0xac, 0x73, 0x8d, 0x71, 0xcc, + 0xdb, 0x6c, 0x54, 0x7a, 0xf8, 0xb4, 0xd2, 0x6f, 0x0c, 0x4b, 0xbf, 0x3a, 0x2a, 0xfd, 0x38, 0x1a, + 0x19, 0xcd, 0x8f, 0x0c, 0x35, 0xa1, 0x1f, 0xb6, 0xe0, 0x11, 0x80, 0x36, 0xee, 0x68, 0x1e, 0xb1, + 0x26, 0x9a, 0xc6, 0xcc, 0x17, 0x24, 0x11, 0xc9, 0x4a, 0x4b, 0x91, 0xe2, 0xd5, 0x71, 0x3f, 0x3f, + 0xf6, 0x91, 0xd1, 0x79, 0x1b, 0x77, 0x9e, 0x60, 0x66, 0x97, 0xa8, 0x41, 0x6a, 0xe6, 0x0b, 0x02, + 0xef, 0x83, 0xb9, 0x26, 0x66, 0x9a, 0xdd, 0xb6, 0xb8, 0xd9, 0xb2, 0x4c, 0xe2, 0x26, 0x26, 0x05, + 0x4f, 0x60, 0x01, 0x3c, 0x9e, 0x26, 0x66, 0x32, 0x3a, 0xd7, 0xc4, 0x6c, 0xe3, 0x83, 0x23, 0xfc, + 0x1f, 0x38, 0xe7, 0xb7, 0x47, 0x27, 0x9a, 0x4e, 0x19, 0x4f, 0x4c, 0x09, 0x64, 0xe2, 0x60, 0x90, + 0x99, 0x0f, 0xb6, 0x77, 0x68, 0x96, 0x51, 0x6c, 0x24, 0x97, 0x28, 0xe3, 0x70, 0x0d, 0xc4, 0x74, + 0x6a, 0xb7, 0x4c, 0x6b, 0x88, 0x9e, 0x16, 0xe8, 0xc5, 0x83, 0x41, 0xe6, 0xe2, 0xa8, 0x29, 0x63, + 0xab, 0x8c, 0x66, 0x87, 0xa2, 0x87, 0x15, 0x1b, 0x18, 0x92, 0xfb, 0x12, 0x98, 0xf1, 0x0a, 0x51, + 0x9d, 0x1d, 0x0a, 0x2f, 0x83, 0xa8, 0xa8, 0x73, 0x17, 0xb3, 0x5d, 0xb1, 0x7a, 0x31, 0x34, 0xe3, + 0x29, 0xd6, 0x31, 0xdb, 0x85, 0x09, 0x30, 0xad, 0xbb, 0x04, 0x73, 0xea, 0xfa, 0xfb, 0x8d, 0x46, + 0x22, 0xac, 0x00, 0x18, 0x5c, 0x02, 0x5d, 0x8c, 0x47, 0xf4, 0xe0, 0xc4, 0xf9, 0x45, 0xbc, 0xf9, + 0xa1, 0x0b, 0x01, 0xa8, 0x6f, 0x78, 0x14, 0x99, 0x09, 0xc7, 0x23, 0x8f, 0x22, 0x33, 0x91, 0xf8, + 0xa4, 0xfc, 0xfb, 0x04, 0x88, 0x95, 0x86, 0x03, 0x14, 0x39, 0xfe, 0x03, 0x4c, 0x8b, 0x1c, 0x4d, + 0x43, 0x64, 0x18, 0x29, 0x82, 0xfd, 0x41, 0x66, 0x4a, 0x94, 0x50, 0x46, 0x53, 0x9e, 0x49, 0x35, + 0x4e, 0xc8, 0x75, 0x1e, 0x4c, 0x62, 0xc3, 0x36, 0x1d, 0xb1, 0x5e, 0x51, 0xe4, 0x0b, 0x9e, 0xd6, + 0xc2, 0x0d, 0x62, 0x89, 0x05, 0x88, 0x22, 0x5f, 0x80, 0xf7, 0x87, 0x2c, 0xc4, 0x18, 0x16, 0x93, + 0x39, 0x5c, 0x4c, 0x83, 0x51, 0xab, 0xcd, 0x49, 0xbd, 0xb3, 0x49, 0x99, 0xc9, 0x4d, 0xea, 0xa0, + 0x91, 0x3f, 0x5c, 0x01, 0xb3, 0x66, 0x43, 0xd7, 0x5a, 0xd4, 0xe5, 0x5e, 0xa6, 0x53, 0xe2, 0x20, + 0x9c, 0xdb, 0x1f, 0x64, 0xa2, 0x6a, 0xb1, 0xb4, 0x49, 0x5d, 0xae, 0x96, 0x51, 0xd4, 0x6c, 0xe8, + 0xe2, 0xa7, 0x01, 0xef, 0x81, 0x29, 0x7f, 0x6b, 0xc5, 0x04, 0xe7, 0x56, 0x2f, 0x1f, 0x0a, 0x54, + 0x3a, 0xb4, 0xc0, 0x68, 0xe8, 0x0a, 0x37, 0x40, 0x94, 0x74, 0x38, 0x71, 0xc4, 0x7b, 0x9d, 0x11, + 0x09, 0xce, 0xe7, 0xfc, 0xd3, 0x9a, 0x1b, 0x9d, 0xd6, 0x5c, 0xc1, 0xe9, 0x16, 0x93, 0x6f, 0x7e, + 0x5c, 0x59, 0x08, 0x36, 0x51, 0x19, 0xc1, 0xd0, 0x98, 0x61, 0x2d, 0xf2, 0xab, 0x77, 0x91, 0xfe, + 0x90, 0x40, 0x62, 0xe4, 0xea, 0x35, 0x75, 0xdd, 0x64, 0x9c, 0xba, 0x5d, 0xc5, 0xe1, 0x6e, 0x17, + 0x7e, 0x0a, 0xa2, 0xb4, 0x45, 0x5c, 0xcc, 0xc7, 0x17, 0x73, 0xe5, 0xd8, 0x4c, 0x03, 0xc8, 0xea, + 0x08, 0xe0, 0xdd, 0x0d, 0x34, 0xc6, 0x07, 0x07, 0x39, 0xf1, 0xb7, 0x83, 0xbc, 0x0f, 0xa6, 0xdb, + 0x2d, 0x43, 0x8c, 0x20, 0x7c, 0xc6, 0x11, 0x0c, 0xfd, 0x61, 0x0e, 0x84, 0x6d, 0xd6, 0x14, 0x13, + 0x8d, 0x15, 0xaf, 0xbc, 0x1f, 0x64, 0x12, 0xc4, 0xd1, 0xa9, 0x61, 0x3a, 0xcd, 0xfc, 0x53, 0x46, + 0x9d, 0x1c, 0xc2, 0xcf, 0x37, 0x08, 0x63, 0xb8, 0x49, 0x90, 0xe7, 0x28, 0x23, 0x00, 0x3f, 0xa6, + 0x83, 0xd7, 0x40, 0xac, 0x61, 0x51, 0xfd, 0x99, 0xb6, 0x4b, 0xcc, 0xe6, 0x2e, 0xf7, 0x77, 0x0e, + 0xcd, 0x0a, 0xdd, 0xba, 0x50, 0xc1, 0x24, 0x98, 0xe1, 0x1d, 0xcd, 0x74, 0x0c, 0xd2, 0xf1, 0x2b, + 0x41, 0xd3, 0xbc, 0xa3, 0x7a, 0xa2, 0x8c, 0xc1, 0xe4, 0x06, 0x35, 0x88, 0x05, 0x8b, 0x20, 0xfc, + 0x8c, 0x74, 0xfd, 0x37, 0x55, 0xbc, 0xf3, 0x7e, 0x90, 0x59, 0x6e, 0x9a, 0x7c, 0xb7, 0xdd, 0xc8, + 0xe9, 0xd4, 0xce, 0x5b, 0xa6, 0x43, 0xf2, 0x94, 0x79, 0x9d, 0xa3, 0x4e, 0xde, 0x32, 0x1b, 0x2c, + 0xdf, 0xe8, 0x72, 0xc2, 0x72, 0xeb, 0xa4, 0x53, 0xf4, 0x7e, 0x20, 0x0f, 0xec, 0x2d, 0xa9, 0xff, + 0x21, 0x9c, 0x10, 0x2f, 0xd3, 0x17, 0x6e, 0xfd, 0x26, 0x01, 0x30, 0x3e, 0xcc, 0xf0, 0xdf, 0x60, + 0xb1, 0x50, 0x2a, 0x29, 0xb5, 0x9a, 0x56, 0xdf, 0xde, 0x54, 0xb4, 0xad, 0x4a, 0x6d, 0x53, 0x29, + 0xa9, 0x0f, 0x54, 0xa5, 0x1c, 0x0f, 0xa5, 0x92, 0xbd, 0x7e, 0x76, 0x61, 0xec, 0xbc, 0xe5, 0xb0, + 0x16, 0xd1, 0xcd, 0x1d, 0x93, 0x18, 0x70, 0x19, 0xc0, 0x20, 0xae, 0x52, 0x2d, 0x56, 0xcb, 0xdb, + 0x71, 0x29, 0x35, 0xdf, 0xeb, 0x67, 0xe3, 0x63, 0x48, 0x85, 0x36, 0xa8, 0xd1, 0x85, 0xff, 0x01, + 0x89, 0xa0, 0x77, 0xb5, 0xf2, 0xd9, 0xb6, 0x56, 0x28, 0x97, 0x91, 0x52, 0xab, 0xc5, 0x27, 0x8e, + 0x86, 0xa9, 0x3a, 0x56, 0xb7, 0xe0, 0x7f, 0xf6, 0xe0, 0x2a, 0x58, 0x08, 0x02, 0x95, 0xc7, 0x0a, + 0xda, 0x16, 0x91, 0xc2, 0xa9, 0xc5, 0x5e, 0x3f, 0x7b, 0x71, 0x8c, 0x52, 0xf6, 0x88, 0xdb, 0xf5, + 0x82, 0xa5, 0x66, 0x5e, 0x7e, 0x97, 0x0e, 0xbd, 0xfa, 0x3e, 0x1d, 0xba, 0xf5, 0x46, 0x02, 0x73, + 0x87, 0x1f, 0x03, 0xfc, 0x3f, 0xb8, 0x5c, 0xaa, 0x56, 0xea, 0xa8, 0x50, 0xaa, 0x6b, 0xb5, 0x7a, + 0xa1, 0xbe, 0x55, 0x3b, 0x52, 0xf3, 0xd5, 0x5e, 0x3f, 0x9b, 0x3c, 0x0c, 0x0a, 0xd6, 0xfd, 0x2f, + 0x70, 0xe9, 0x28, 0xbe, 0x50, 0xaa, 0xab, 0x8f, 0x95, 0xb8, 0x94, 0x4a, 0xf4, 0xfa, 0xd9, 0xf9, + 0xd2, 0x91, 0xaf, 0x07, 0x37, 0xf7, 0x08, 0xfc, 0x2f, 0x48, 0x1c, 0x45, 0xa9, 0x95, 0x21, 0x6e, + 0x22, 0x95, 0xea, 0xf5, 0xb3, 0x97, 0x0e, 0xe3, 0x54, 0x07, 0x0b, 0x64, 0xa0, 0x98, 0x1f, 0xc2, + 0x20, 0x7b, 0xda, 0x7b, 0x81, 0x04, 0xdc, 0xf9, 0x10, 0xa8, 0x54, 0x2d, 0x2b, 0xda, 0xba, 0x5a, + 0xab, 0x57, 0xd1, 0xb6, 0x56, 0xdd, 0x54, 0x50, 0xa1, 0xae, 0x56, 0x2b, 0xc7, 0xcd, 0x39, 0xdf, + 0xeb, 0x67, 0x6f, 0x9f, 0xc6, 0x1d, 0xec, 0xc2, 0x13, 0x70, 0xf3, 0x4c, 0x61, 0xd4, 0x8a, 0x5a, + 0x8f, 0x4b, 0xa9, 0xa5, 0x5e, 0x3f, 0x7b, 0xfd, 0x34, 0x7e, 0xd5, 0x31, 0x39, 0xfc, 0x12, 0x2c, + 0x9f, 0x89, 0x78, 0x43, 0x7d, 0x88, 0x0a, 0x75, 0xaf, 0x79, 0xb7, 0x7b, 0xfd, 0xec, 0x3f, 0x4f, + 0xe3, 0xde, 0x30, 0x9b, 0x2e, 0xe6, 0xe4, 0xcc, 0xf4, 0x0f, 0x95, 0x8a, 0x52, 0x53, 0x6b, 0xf1, + 0xf0, 0xd9, 0xe8, 0x1f, 0x12, 0x87, 0x30, 0x93, 0xa5, 0x22, 0xde, 0xb0, 0x8a, 0x0f, 0x5e, 0xff, + 0x92, 0x0e, 0xbd, 0xda, 0x4f, 0x4b, 0xaf, 0xf7, 0xd3, 0xd2, 0xdb, 0xfd, 0xb4, 0xf4, 0xf3, 0x7e, + 0x5a, 0xfa, 0xea, 0x5d, 0x3a, 0xf4, 0xf6, 0x5d, 0x3a, 0xf4, 0xd3, 0xbb, 0x74, 0xe8, 0x8b, 0xeb, + 0x47, 0x1f, 0xb3, 0xd5, 0xb0, 0x57, 0x98, 0xf1, 0x2c, 0xdf, 0xf1, 0xff, 0x3d, 0x8b, 0xbf, 0xce, + 0x8d, 0x29, 0x71, 0x94, 0xef, 0xfd, 0x15, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x2a, 0x2f, 0xec, 0x56, + 0x0b, 0x00, 0x00, } func (this *AccessTypeParam) Equal(that interface{}) bool { From 44abeff31d258ce7d3d65b96c1032d822266b5a0 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 01:25:42 +0200 Subject: [PATCH 51/90] Change default message size cost to 0 --- x/wasm/keeper/gas_register.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/wasm/keeper/gas_register.go b/x/wasm/keeper/gas_register.go index 0362b97105..181107d5aa 100644 --- a/x/wasm/keeper/gas_register.go +++ b/x/wasm/keeper/gas_register.go @@ -11,7 +11,7 @@ const ( DefaultEventAttributeDataCost uint64 = 1 // DefaultContractMessageDataCost is how much SDK gas is charged *per byte* of the message that goes to the contract // This is used with len(msg) - DefaultContractMessageDataCost uint64 = 1 + DefaultContractMessageDataCost uint64 = 0 // DefaultPerAttributeCost is how much SDK gas we charge per attribute count. DefaultPerAttributeCost uint64 = 10 // DefaultPerCustomEventCost is how much SDK gas we charge per event count. From 8faaec946d5e4d636141699557ddcbbbbd50c887 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 01:44:24 +0200 Subject: [PATCH 52/90] Make gas register tests more flexible, fix counting bug --- x/wasm/keeper/gas_register.go | 1 + x/wasm/keeper/keeper.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/x/wasm/keeper/gas_register.go b/x/wasm/keeper/gas_register.go index 181107d5aa..b0a8e97804 100644 --- a/x/wasm/keeper/gas_register.go +++ b/x/wasm/keeper/gas_register.go @@ -11,6 +11,7 @@ const ( DefaultEventAttributeDataCost uint64 = 1 // DefaultContractMessageDataCost is how much SDK gas is charged *per byte* of the message that goes to the contract // This is used with len(msg) + // Note: also used for error fields on reply, and data on reply DefaultContractMessageDataCost uint64 = 0 // DefaultPerAttributeCost is how much SDK gas we charge per attribute count. DefaultPerAttributeCost uint64 = 10 diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 87f7328bed..270098b1b3 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -190,7 +190,7 @@ func (k Keeper) replyCosts(g WasmGasRegister, ctx sdk.Context, pinned bool, repl msgLen += len(reply.Result.Ok.Data) var attrs []wasmvmtypes.EventAttribute for _, e := range reply.Result.Ok.Events { - msgLen += len(e.Type) + eventGas += sdk.Gas(len(e.Type)) * g.c.EventAttributeDataCost attrs = append(e.Attributes) } // apply free tier on the whole set not per event From db51a3bc26929191d1aa9018df5ba3d19e7e731c Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 01:54:36 +0200 Subject: [PATCH 53/90] Adjust gas prices in tests --- x/wasm/keeper/keeper_test.go | 4 ++-- x/wasm/keeper/recurse_test.go | 12 ++++++------ x/wasm/keeper/relay_test.go | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index b4a1a4a7c5..4933f09d57 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -288,7 +288,7 @@ func TestInstantiate(t *testing.T) { gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x1110f), gasAfter-gasBefore) + require.Equal(t, uint64(0x11099), gasAfter-gasBefore) } // ensure it is stored properly @@ -522,7 +522,7 @@ func TestExecute(t *testing.T) { // make sure gas is properly deducted from ctx gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x1099b), gasAfter-gasBefore) + require.Equal(t, uint64(0x1098d), gasAfter-gasBefore) } // ensure bob now exists and got both payments released bobAcct = accKeeper.GetAccount(ctx, bob) diff --git a/x/wasm/keeper/recurse_test.go b/x/wasm/keeper/recurse_test.go index bd0b3e8ee0..0cd7ac41b2 100644 --- a/x/wasm/keeper/recurse_test.go +++ b/x/wasm/keeper/recurse_test.go @@ -58,12 +58,12 @@ func initRecurseContract(t *testing.T) (contract sdk.AccAddress, creator sdk.Acc func TestGasCostOnQuery(t *testing.T) { const ( - GasNoWork uint64 = 44_223 + GasNoWork uint64 = 44_134 // Note: about 100 SDK gas (10k wasmer gas) for each round of sha256 - GasWork50 uint64 = 49_884 // this is a little shy of 50k gas - to keep an eye on the limit + GasWork50 uint64 = 49_794 // this is a little shy of 50k gas - to keep an eye on the limit - GasReturnUnhashed uint64 = 198 - GasReturnHashed uint64 = 173 + GasReturnUnhashed uint64 = 255 + GasReturnHashed uint64 = 230 ) cases := map[string]struct { @@ -222,10 +222,10 @@ func TestLimitRecursiveQueryGas(t *testing.T) { const ( // Note: about 100 SDK gas (10k wasmer gas) for each round of sha256 - GasWork2k uint64 = 273_153 // = InstanceCost + x // we have 6x gas used in cpu than in the instance + GasWork2k uint64 = 273_061 // = InstanceCost + x // we have 6x gas used in cpu than in the instance // This is overhead for calling into a sub-contract - GasReturnHashed uint64 = 177 + GasReturnHashed uint64 = 234 ) cases := map[string]struct { diff --git a/x/wasm/keeper/relay_test.go b/x/wasm/keeper/relay_test.go index d6ed08148b..3072a6ed6b 100644 --- a/x/wasm/keeper/relay_test.go +++ b/x/wasm/keeper/relay_test.go @@ -416,7 +416,7 @@ func TestOnRecvPacket(t *testing.T) { }, "submessage reply can overwrite ack data": { contractAddr: example.Contract, - expContractGas: myContractGas + 10 + types.DefaultInstanceCost + 3690, + expContractGas: myContractGas + 10 + types.DefaultInstanceCost + 3689, contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyAlways, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}}, From 6f68f8eb1bb748bdd6b365a4ab96170f594aeaec Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 13:08:50 +0200 Subject: [PATCH 54/90] Update comments --- x/wasm/keeper/gas_register.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/x/wasm/keeper/gas_register.go b/x/wasm/keeper/gas_register.go index b0a8e97804..1082cd7400 100644 --- a/x/wasm/keeper/gas_register.go +++ b/x/wasm/keeper/gas_register.go @@ -10,8 +10,10 @@ const ( // This is used with len(key) + len(value) DefaultEventAttributeDataCost uint64 = 1 // DefaultContractMessageDataCost is how much SDK gas is charged *per byte* of the message that goes to the contract - // This is used with len(msg) - // Note: also used for error fields on reply, and data on reply + // This is used with len(msg). Note that the message is deserialized in the receiving contract and this is charged + // with wasm gas already. The derserialization of results is also charged in wasmvm. I am unsure if we need to add + // additional costs here. + // Note: also used for error fields on reply, and data on reply. Maybe these should be pulled out to a different (non-zero) field DefaultContractMessageDataCost uint64 = 0 // DefaultPerAttributeCost is how much SDK gas we charge per attribute count. DefaultPerAttributeCost uint64 = 10 From 45c1b8d57c1363dc6682e8d78e294da9da302ca9 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 22:11:27 +0200 Subject: [PATCH 55/90] Change IBCContractKeeper interface, code builds --- x/wasm/ibc.go | 71 +++++++++++++++++++++++--------- x/wasm/keeper/relay.go | 55 ++++--------------------- x/wasm/types/exported_keepers.go | 16 +++---- 3 files changed, 63 insertions(+), 79 deletions(-) diff --git a/x/wasm/ibc.go b/x/wasm/ibc.go index 01468b9f24..48dce14a94 100644 --- a/x/wasm/ibc.go +++ b/x/wasm/ibc.go @@ -44,13 +44,18 @@ func (i IBCHandler) OnChanOpenInit( return sdkerrors.Wrapf(err, "contract port id") } - err = i.keeper.OnOpenChannel(ctx, contractAddr, wasmvmtypes.IBCChannel{ - Endpoint: wasmvmtypes.IBCEndpoint{PortID: portID, ChannelID: channelID}, - CounterpartyEndpoint: wasmvmtypes.IBCEndpoint{PortID: counterParty.PortId, ChannelID: counterParty.ChannelId}, - Order: order.String(), - Version: version, - ConnectionID: connectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported. - }, "") + msg := wasmvmtypes.IBCChannelOpenMsg{ + OpenInit: &wasmvmtypes.IBCOpenInit{ + Channel: wasmvmtypes.IBCChannel{ + Endpoint: wasmvmtypes.IBCEndpoint{PortID: portID, ChannelID: channelID}, + CounterpartyEndpoint: wasmvmtypes.IBCEndpoint{PortID: counterParty.PortId, ChannelID: counterParty.ChannelId}, + Order: order.String(), + Version: version, + ConnectionID: connectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported. + }, + }, + } + err = i.keeper.OnOpenChannel(ctx, contractAddr, msg) if err != nil { return err } @@ -81,13 +86,20 @@ func (i IBCHandler) OnChanOpenTry( return sdkerrors.Wrapf(err, "contract port id") } - err = i.keeper.OnOpenChannel(ctx, contractAddr, wasmvmtypes.IBCChannel{ - Endpoint: wasmvmtypes.IBCEndpoint{PortID: portID, ChannelID: channelID}, - CounterpartyEndpoint: wasmvmtypes.IBCEndpoint{PortID: counterParty.PortId, ChannelID: counterParty.ChannelId}, - Order: order.String(), - Version: version, - ConnectionID: connectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported. - }, counterpartyVersion) + msg := wasmvmtypes.IBCChannelOpenMsg{ + OpenTry: &wasmvmtypes.IBCOpenTry{ + Channel: wasmvmtypes.IBCChannel{ + Endpoint: wasmvmtypes.IBCEndpoint{PortID: portID, ChannelID: channelID}, + CounterpartyEndpoint: wasmvmtypes.IBCEndpoint{PortID: counterParty.PortId, ChannelID: counterParty.ChannelId}, + Order: order.String(), + Version: version, + ConnectionID: connectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported. + }, + CounterpartyVersion: counterpartyVersion, + }, + } + + err = i.keeper.OnOpenChannel(ctx, contractAddr, msg) if err != nil { return err } @@ -118,7 +130,13 @@ func (i IBCHandler) OnChanOpenAck( if !ok { return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID) } - return i.keeper.OnConnectChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), counterpartyVersion) + msg := wasmvmtypes.IBCChannelConnectMsg{ + OpenAck: &wasmvmtypes.IBCOpenAck{ + Channel: toWasmVMChannel(portID, channelID, channelInfo), + CounterpartyVersion: counterpartyVersion, + }, + } + return i.keeper.OnConnectChannel(ctx, contractAddr, msg) } // OnChanOpenConfirm implements the IBCModule interface @@ -131,7 +149,12 @@ func (i IBCHandler) OnChanOpenConfirm(ctx sdk.Context, portID, channelID string) if !ok { return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID) } - return i.keeper.OnConnectChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), "") + msg := wasmvmtypes.IBCChannelConnectMsg{ + OpenConfirm: &wasmvmtypes.IBCOpenConfirm{ + Channel: toWasmVMChannel(portID, channelID, channelInfo), + }, + } + return i.keeper.OnConnectChannel(ctx, contractAddr, msg) } // OnChanCloseInit implements the IBCModule interface @@ -145,7 +168,10 @@ func (i IBCHandler) OnChanCloseInit(ctx sdk.Context, portID, channelID string) e return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID) } - err = i.keeper.OnCloseChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), false) + msg := wasmvmtypes.IBCChannelCloseMsg{ + CloseInit: &wasmvmtypes.IBCCloseInit{Channel: toWasmVMChannel(portID, channelID, channelInfo)}, + } + err = i.keeper.OnCloseChannel(ctx, contractAddr, msg) if err != nil { return err } @@ -166,7 +192,10 @@ func (i IBCHandler) OnChanCloseConfirm(ctx sdk.Context, portID, channelID string return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID) } - err = i.keeper.OnCloseChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), true) + msg := wasmvmtypes.IBCChannelCloseMsg{ + CloseConfirm: &wasmvmtypes.IBCCloseConfirm{Channel: toWasmVMChannel(portID, channelID, channelInfo)}, + } + err = i.keeper.OnCloseChannel(ctx, contractAddr, msg) if err != nil { return err } @@ -194,7 +223,8 @@ func (i IBCHandler) OnRecvPacket( if err != nil { return nil, nil, sdkerrors.Wrapf(err, "contract port id") } - ack, err := i.keeper.OnRecvPacket(ctx, contractAddr, newIBCPacket(packet)) + msg := wasmvmtypes.IBCPacketReceiveMsg{Packet: newIBCPacket(packet)} + ack, err := i.keeper.OnRecvPacket(ctx, contractAddr, msg) if err != nil { return nil, nil, err } @@ -231,7 +261,8 @@ func (i IBCHandler) OnTimeoutPacket(ctx sdk.Context, packet channeltypes.Packet) if err != nil { return nil, sdkerrors.Wrapf(err, "contract port id") } - err = i.keeper.OnTimeoutPacket(ctx, contractAddr, newIBCPacket(packet)) + msg := wasmvmtypes.IBCPacketTimeoutMsg{Packet: newIBCPacket(packet)} + err = i.keeper.OnTimeoutPacket(ctx, contractAddr, msg) if err != nil { return nil, err } diff --git a/x/wasm/keeper/relay.go b/x/wasm/keeper/relay.go index 46c176d77b..6525f1eeef 100644 --- a/x/wasm/keeper/relay.go +++ b/x/wasm/keeper/relay.go @@ -10,6 +10,8 @@ import ( wasmvmtypes "github.com/line/wasmvm/types" ) +var _ types.IBCContractKeeper = (*Keeper)(nil) + // OnOpenChannel calls the contract to participate in the IBC channel handshake step. // In the IBC protocol this is either the `Channel Open Init` event on the initiating chain or // `Channel Open Try` on the counterparty chain. @@ -18,9 +20,7 @@ import ( func (k Keeper) OnOpenChannel( ctx sdk.Context, contractAddr sdk.AccAddress, - channel wasmvmtypes.IBCChannel, - // this is unset on init, set on try - counterpartyVersion string, + msg wasmvmtypes.IBCChannelOpenMsg, ) error { defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-open-channel") @@ -32,18 +32,6 @@ func (k Keeper) OnOpenChannel( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - msg := wasmvmtypes.IBCChannelOpenMsg{} - if counterpartyVersion == "" { - msg.OpenInit = &wasmvmtypes.IBCOpenInit{ - Channel: channel, - } - } else { - msg.OpenTry = &wasmvmtypes.IBCOpenTry{ - Channel: channel, - CounterpartyVersion: counterpartyVersion, - } - } - gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) gasUsed, execErr := k.wasmVM.IBCChannelOpen(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) @@ -66,9 +54,7 @@ func (k Keeper) OnOpenChannel( func (k Keeper) OnConnectChannel( ctx sdk.Context, contractAddr sdk.AccAddress, - channel wasmvmtypes.IBCChannel, - // this is set on ack, unset on confirm - counterpartyVersion string, + msg wasmvmtypes.IBCChannelConnectMsg, ) error { defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-connect-channel") contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddr) @@ -79,18 +65,6 @@ func (k Keeper) OnConnectChannel( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - msg := wasmvmtypes.IBCChannelConnectMsg{} - if counterpartyVersion == "" { - msg.OpenConfirm = &wasmvmtypes.IBCOpenConfirm{ - Channel: channel, - } - } else { - msg.OpenAck = &wasmvmtypes.IBCOpenAck{ - Channel: channel, - CounterpartyVersion: counterpartyVersion, - } - } - gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) res, gasUsed, execErr := k.wasmVM.IBCChannelConnect(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) @@ -112,9 +86,7 @@ func (k Keeper) OnConnectChannel( func (k Keeper) OnCloseChannel( ctx sdk.Context, contractAddr sdk.AccAddress, - channel wasmvmtypes.IBCChannel, - // false for init, true for confirm - confirm bool, + msg wasmvmtypes.IBCChannelCloseMsg, ) error { defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-close-channel") @@ -126,17 +98,6 @@ func (k Keeper) OnCloseChannel( params := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - msg := wasmvmtypes.IBCChannelCloseMsg{} - if confirm { - msg.CloseConfirm = &wasmvmtypes.IBCCloseConfirm{ - Channel: channel, - } - } else { - msg.CloseInit = &wasmvmtypes.IBCCloseInit{ - Channel: channel, - } - } - gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) res, gasUsed, execErr := k.wasmVM.IBCChannelClose(codeInfo.CodeHash, params, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) @@ -158,7 +119,7 @@ func (k Keeper) OnCloseChannel( func (k Keeper) OnRecvPacket( ctx sdk.Context, contractAddr sdk.AccAddress, - packet wasmvmtypes.IBCPacket, + msg wasmvmtypes.IBCPacketReceiveMsg, ) ([]byte, error) { defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-recv-packet") contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddr) @@ -168,7 +129,6 @@ func (k Keeper) OnRecvPacket( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - msg := wasmvmtypes.IBCPacketReceiveMsg{Packet: packet} gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) @@ -220,7 +180,7 @@ func (k Keeper) OnAckPacket( func (k Keeper) OnTimeoutPacket( ctx sdk.Context, contractAddr sdk.AccAddress, - packet wasmvmtypes.IBCPacket, + msg wasmvmtypes.IBCPacketTimeoutMsg, ) error { defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-timeout-packet") @@ -231,7 +191,6 @@ func (k Keeper) OnTimeoutPacket( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - msg := wasmvmtypes.IBCPacketTimeoutMsg{Packet: packet} gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) diff --git a/x/wasm/types/exported_keepers.go b/x/wasm/types/exported_keepers.go index 5e26057344..a285bb52e9 100644 --- a/x/wasm/types/exported_keepers.go +++ b/x/wasm/types/exported_keepers.go @@ -60,28 +60,22 @@ type IBCContractKeeper interface { OnOpenChannel( ctx sdk.Context, contractAddr sdk.AccAddress, - channel wasmvmtypes.IBCChannel, - // this is unset on init, set on try - counterpartyVersion string, + msg wasmvmtypes.IBCChannelOpenMsg, ) error OnConnectChannel( ctx sdk.Context, contractAddr sdk.AccAddress, - channel wasmvmtypes.IBCChannel, - // this is set on ack, unset on confirm - counterpartyVersion string, + msg wasmvmtypes.IBCChannelConnectMsg, ) error OnCloseChannel( ctx sdk.Context, contractAddr sdk.AccAddress, - channel wasmvmtypes.IBCChannel, - // false for init, true for confirm - confirm bool, + msg wasmvmtypes.IBCChannelCloseMsg, ) error OnRecvPacket( ctx sdk.Context, contractAddr sdk.AccAddress, - packet wasmvmtypes.IBCPacket, + msg wasmvmtypes.IBCPacketReceiveMsg, ) ([]byte, error) OnAckPacket( ctx sdk.Context, @@ -91,7 +85,7 @@ type IBCContractKeeper interface { OnTimeoutPacket( ctx sdk.Context, contractAddr sdk.AccAddress, - packet wasmvmtypes.IBCPacket, + msg wasmvmtypes.IBCPacketTimeoutMsg, ) error // ClaimCapability allows the transfer module to claim a capability //that IBC module passes to it From d3619778346e2acbb39842fd3dbaae34fea0fd3b Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 22:15:31 +0200 Subject: [PATCH 56/90] Fix relay tests --- x/wasm/keeper/relay_test.go | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/x/wasm/keeper/relay_test.go b/x/wasm/keeper/relay_test.go index 3072a6ed6b..423e7c8b36 100644 --- a/x/wasm/keeper/relay_test.go +++ b/x/wasm/keeper/relay_test.go @@ -64,7 +64,13 @@ func TestOnOpenChannel(t *testing.T) { before := ctx.GasMeter().GasConsumed() // when - err := keepers.WasmKeeper.OnOpenChannel(ctx, spec.contractAddr, myChannel, "foo") + msg := wasmvmtypes.IBCChannelOpenMsg{ + OpenTry: &wasmvmtypes.IBCOpenTry{ + Channel: myChannel, + CounterpartyVersion: "foo", + }, + } + err := keepers.WasmKeeper.OnOpenChannel(ctx, spec.contractAddr, msg) // then if spec.expErr { @@ -165,7 +171,12 @@ func TestOnConnectChannel(t *testing.T) { } // when - err := keepers.WasmKeeper.OnConnectChannel(ctx, spec.contractAddr, myChannel, "") + msg := wasmvmtypes.IBCChannelConnectMsg{ + OpenConfirm: &wasmvmtypes.IBCOpenConfirm{ + Channel: myChannel, + }, + } + err := keepers.WasmKeeper.OnConnectChannel(ctx, spec.contractAddr, msg) // then events := ctx.EventManager().Events() @@ -283,7 +294,12 @@ func TestOnCloseChannel(t *testing.T) { } // when - err := keepers.WasmKeeper.OnCloseChannel(ctx, spec.contractAddr, myChannel, false) + msg := wasmvmtypes.IBCChannelCloseMsg{ + CloseInit: &wasmvmtypes.IBCCloseInit{ + Channel: myChannel, + }, + } + err := keepers.WasmKeeper.OnCloseChannel(ctx, spec.contractAddr, msg) // then events := ctx.EventManager().Events() @@ -458,7 +474,8 @@ func TestOnRecvPacket(t *testing.T) { } // when - gotAck, err := keepers.WasmKeeper.OnRecvPacket(ctx, spec.contractAddr, myPacket) + msg := wasmvmtypes.IBCPacketReceiveMsg{Packet: myPacket} + gotAck, err := keepers.WasmKeeper.OnRecvPacket(ctx, spec.contractAddr, msg) // then events := ctx.EventManager().Events() @@ -713,7 +730,8 @@ func TestOnTimeoutPacket(t *testing.T) { } // when - err := keepers.WasmKeeper.OnTimeoutPacket(ctx, spec.contractAddr, myPacket) + msg := wasmvmtypes.IBCPacketTimeoutMsg{Packet: myPacket} + err := keepers.WasmKeeper.OnTimeoutPacket(ctx, spec.contractAddr, msg) // then events := ctx.EventManager().Events() From 29900c2885cdd5f5272b5112da7c538015cdaf58 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 28 Jul 2021 23:04:02 +0200 Subject: [PATCH 57/90] Use v0.16.0-rc5 contracts --- x/wasm/keeper/testdata/burner.wasm | Bin 125206 -> 126265 bytes x/wasm/keeper/testdata/hackatom.wasm | Bin 177773 -> 178231 bytes x/wasm/keeper/testdata/hackatom.wasm.gzip | Bin 62350 -> 62501 bytes x/wasm/keeper/testdata/ibc_reflect.wasm | Bin 281043 -> 283891 bytes x/wasm/keeper/testdata/ibc_reflect_send.wasm | Bin 285724 -> 287976 bytes x/wasm/keeper/testdata/reflect.wasm | Bin 272031 -> 272713 bytes x/wasm/keeper/testdata/staking.wasm | Bin 233910 -> 235823 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/x/wasm/keeper/testdata/burner.wasm b/x/wasm/keeper/testdata/burner.wasm index 204d59d7484e95d8a79a06d448009840b5e6a077..2a375063e9eaa67d47b560ec4b970f74a68c0b68 100644 GIT binary patch delta 32569 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Ⓢ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 delta 32048 zcmb__3!F{m`u}>?-gDh^S;Nd2GsdjF4Q7~OTpAj;StFN75sH*cu8mu6p=3`bsnBT2 zOR0!c3N@kz$Em5*p`%jADT$(VQc*~y6ZwCi_g!nxo}oJD_xa~Dd#(5OywCgG-`i^2 zfv9C4L{(H!%o=^Qp6H2+((G-NvH3&FpqR4Xsx)6vv&!uM=$V(diJExJ*r_9?kJc`W z9x-9Ui9PwS26Q}H#udi3tw^Qu0k{{_1G zUj62*ftBoy`X*dm%kY?afDZa|2~RPaCQI4$97L z`XX(j*XVV6gLYE?wiVPqJNHvMOb6)`Iz+$F8CtF%qyJF$PjsFZ==bZ->JR7->I?N} z^mTgd+7BXE>-L1Wk7dS z`i##}Z2P?j(D0mhHm$aAi@2Q@+NUB$&{KB*$YGSUd2{3zO8bH0Bh3hFzXkwiM20 z(KKmue8Nx)Of#BYPcZ=jas_h(YaX#{F@!_9|p^Ms(7sy4xr&!H24QLlA5`nA9O_ z8~IFMxA+7z*0{LJ60*yan#G0Ju@mdONXzWk>*T6F7+#F=i2Z72zMWmS6FqO=T(>D` z^g!Lq@LpB-N?K~iCTE~YljNL65-lccjG+c_qr`tNa)AG!fEU^e z63t&X&gTPIV4_=nOE;EWpnLpvJ;fkR4tFPPUs{tSiDz1=S+_(hi7nBL^>#_xc))u; zttsGrnC5hU7K7*RW9oND$9?PDsB*OaN&GHKNwZI+4?yLTj9ipW$QXm%e`XXSC$>Re zW7)w1NjpV|h2&=jmoa;C^aT`%!^np;n4!jb7Np>egAE#y{ct8zqGjfdfVD6)j1qB@ z4}+RMuUlFVKN#!n7EfjrGnNxpR1Z#C58PFySy9IGcISqvKx$ya3HW`z;SPWcX7vE* zzh@0VP6Klka_%y7(cWh!b~B^9O^w&gXb9}=(a76iU&tO1 z%Z9)ti;N@oO^tKWaN=LblCZyTToldCQBT;dniQd6LX#{75z;}%VtdYxTxw}oH8Jsf zq)8BhIil&EsP|dZrm7yKhU+Eeeex^mQgLs?Si3H<<8D53`BH`*L{qxsT&(~2!^*rYp2J7g$wQLnhmEP>?g13Z2#D- zc`s&-*D4+#GH-y0QDJy4BfOwgI3G~-bQe7-sLyQ#@1c(m=-Dus#!9=i`BYe|L(Ol; z@1VRzv9L?Pj!FX_dw5=|9g%-EJ+*m2{v3kce80sq1paisTX?H1%waW|p079PKw_Su?jC5MNI0?I@J)m6@!;Gnh zS-~))424AB_Fj8^yOs_jecLD4$?XjZxVhc8{XlLSUETCaZW`w_{i?l-fA`BX8~}?h zPvIs})lHT@KI#YzP)cLM)zgk68x_2SI_R!k8RknewIuZ z;&*?)4*1=BE$5%S)~&Z#rk}sof620V`}+QMQ8K=NrWf|!V{f{)A(HD=Qg@Qy_Roxv z-oSpSe+G(k2eicR-~pZSyLoXI!5wdgzn&RwNug`1F4Ad;y+C?BO43uop%?YO_4a)SOzCGo|w?)x73L+}|>*jR( z^x%FlqW|8~#-4dY3i1}+Fg2l&B{stJNb}#$jvsR765*s3aa+xZ($2nd8y&Gfz0psf z+b;|?;W+mW?F<8-I4nmQcn)ro;1RkGYl7_3VfQFMQ9R!C!K0rY#vwt=;W>Wk4GKz; zi-JjZvf_bA4vCL!#w3bG)?Y=0-sMR65uzZ&~6t+H<)*G?~gz@F2nvAus>!XG&KNdS2HwowTo2M?hG z71nR-j)E?wj{gP0JV0|wDQnV@?Kc3gm$%VZS<&#m3Qo(a zK9ag_`o5}>_Wcv)4=)UOKq*X+6yqD0T5mp3rR8c`J55b3tg7&I8oX_I+9KDYM?a?#zJ<`HDFO9R9ub>Pa&YxJ{Tl8LDt_ZcF>+$#d1z<1j=Bp{R$a9#`C2 zz_GGNPKH$GVtd}L95X$C>ueRBa-bfKy2q32+gDBLg<*&(*FZAAn!@%YcxM5AEAC9S z&rgl#c?jZfkHwBbfm>ofFtvH@dPw`G)lZZ&A!v%nS|zb*Gp&gVo!fJ3&QsBIM?VzT zg7P4CZXY1vGI!b}=BAA5IsNlAM9y}`^bA^Jx0^l)=$B8guh3tms|f6+=`1qGr)NQA z;%3}}D!0wJQ!kru|2Shf2zA|Ulf9T2Cfc9PZEByqEl#5Bw;Rq(#G4vkOhz2M9flak zL&QuE(>PD5wF`P@OtZ(${DoTEH_v(zz*1&2)$g6Xu_0SCV7&#gvzaPGZKT%1uqME2 zU{Y~=OCVBqdrO5YlPwzJ{ny*aN$qAgE4ABe?dGsPLTWd=UV!tW{R4Hg>@jyFL#yw& zqYnnQ`;I&D-eXQ5%C{exGhF60v&}n8(96g>uaZM)D$$7VX2!~hA2UPyt2lvt*8_dX4@`+JkJ}RYG4lg9TJX#)~CdYSc@OqkO?+V_Ex%1^^ z8Hwi*pT3i;C#v{#uRXFXH@FTA!i>3RAeJ9j1$;SrTp%flG`-mQ7vzFufkhIH%p)HkI;i=6#JV9e~hKE6N$3oCRv&ph3*OiF&RF8wB6^f z%-{mu^qSFy`aFKd6zXMoIvDU^oFT+v4wdXTJaQnA3q24mN0Fm%)%gYUFLZ(7R_Oi& zeqtz5`~=vD?#y)uCJzXSG7K?-2NqNm;*mw0(Pre88AcwrE7Sc5pJPme^Ap&}MO$-V z>($#VOg#C`3m{CBLY;>Zj<#XNmHG{a1O~*#Yfx`VQY|S$W72wo6CTl5q{}r1i97m? zR5&xeLe;H#_g8V4g~G6gPCH9uLTQXX76hUJ~gA|l6q2J3oTk&lwIdTG7}itMPS0W58MXKe$Dm*jTW z1B&XkRCgEC!|BKFa&LO@u+Fn1ueC>_1`38y^5%kW?ev}8S(U;`)&zds4dav#RE$TR z!Kx0!nxmU`p2I*SM=$q)+&sN^I|6ZJ&7kCNE~?e&$>(RF`*qgNi|ORqt1B+9^KdK- z5HJWHenD_1r4*EcAV!BFgEs9vCz&dcV9@@>`QX%B8p|K}VPxXDK$2jWUYhIC+Iaw# zqXGO@g>qQ7VOQO9ljNI(x)v0Y!IHOx97e9Yy9zo|&h&!;WI8f14}^G?dPm2>LcNMB z9F`Id(i&LrQ7ARWvz)VY^`pR@@ma{I^Jovt#a^HcQF2~+aRDp`c90}lTQ1aDYpc~k z#vfABWI2{O%n4p=X>}9sYaaUAuh!0_ZeYwz-D*{ZNvu}Yh>)tDcU3jl1Gdy{2NMl^ zDx^RmP+_{;uiaM<_R>CZUq0MhNC7vvugq{%1cj>^$Lx|+-pk66@cJ}?5!C318O^GKf#vjFtMA4kYq|%3av1lr_oi#LGVTy$|?wq?xvx9mV{^vGK7r2Uu<63lYiyEVD-rQ{oKz@pz0Yq^?_-(<_sI zSaDoL#7ehN4S|ag51NowZqM?rKrtBB*dPOv`pWWIejkD) z7%8ci>1b^FTus|6`41pD`aV4*g}@o}cWGKNX_s>WXs@eHys-jcVF8ES5&;uKb+Ukz ztP~cuuo9}M#Pr$4OVYCU6GD0xy{*_NZo=qcErw$;gdH-n!CH=8wxmI@9H2bLms}NU z?#5?uX)-q1j}jM1d3k}Hm|H`%yD@_rrzZY z3q~hbFGuWWVAch5HK?5)Y+y!V4+|(oS)L+oxJva!D!SCoheL-kBjy(KB+AO>3=BYJ zsCkQ3fGG~P^w41>qOU@p9kW~WmRiR#h?bhxLE{+^4R z{}9R9syW=B$BZnQkLlTAOgkFzHesQjhOBwWszR25EJy-Yc0#qh$dbYq!Tp}D?l;2v zF4QmTc%=KvhVu>P@nTT*EQez`9$aX&9AY5YbY_n{X@@3($m2~7VHQXPifC4YQg@2X z6yinjlDmPXsY(%XNV5T^l$P9ud_(55;Rt$Bn`66NPZ^lbZDlwJ(RRqKS(55{^|E6G zX1C57eS}@f$ygJKTDRYii=djouwDg#t3blNY7nOLf7x_lDW z*_JJTiI);}9<$uj#Dd@rE95RbPvD(Awd|e;6QOfti)HtmKqP9eU$IavyF)-ZUGiu* z`p#bPXg@5O9eC7P9O&j0DDjO^`8uRAjF-H+qyE@@ z``XpK+_!f1BwqN`?G?-O8^m=plhiT@d;wY|bTjM7)xQKZ8}?L67${AGy636uu)ufV zsmWO2>$N5$ofr6GAb()eX7a(O;LXG#7UOSra7_^v34cAxieI}BBt#izHb#~G?=?Ae zx&7TUsllbXZ!r<^6276BFV~ASK!7!R9*yFSC31?WL&VcywBkUGAGsg~FL9+-*$Y^V z{h7OjymMhWGOTD-xM4}C5Or1g^00D$sDg2U<;h@ytlr}5;`_v&xVF9+YEYD2^q17& zzIA{d8-|hB0s5&dP@NvbyTk}E<=!%e^4=y!%6M4kz?8@K#YPDU8O&c~JoPLxlDG!E z9A_-#j8x7*pvoCLHnm1hUCv?lBIhjknv4u2jl1}__6RJSp3du8!SwQk!QK|iaA3b2 z%5Xq$b~6-c1=&tqo6%wy(=Vx-28ya5b8eI(KsZtDf@hLPJjAQlEFn+mazn7(O|RiJ z7n~wrffNtT&&g1OwY3`j#clAo9>%Bc_V~3e{}0T$i1ZFMs!9JRgdVCySMEO9?>?L5 z+X^`^go}a2vClr6m9|*NYe7w^y3)5;7l~<Nw&MKt5Z!i#M+k}kvpI*P`sK{V+Fhv4cr#1E@~ky@Fh4C zbemkv8rI=I>f~b9NbS8uCvG1LE<%f1{YfX6U}pX22I)JWwX2?M?S%m0B+mL2Y}v-G zZ^OwLPWt9;V2YW*zlmM3K9?5T#p~02N7uW#0Vj76a`)8CjRO$LkmORUsr}`8zi(}* zLQ^|wgX|?j_Hy>Q8t}5wQj)o?6U*u)2y3!|L{-g-+=V1Ax(L|cY(N)b70?A&khBa{ zI0r+j1{82{z&S{abbqKIhsPAVShi!Kv_E};4@vy?LSq_eXIC^%QvnN=`VlI2!}gH7 zabSMx@lPdDtX^R&vt@q+HNjy(-SnQE0i11He| zaaTEBtW2vyrtL2`<)X*L7X#U{$8P9Nc7?4!sk_0_fG)RW*h&tx2fp}k8f!<@N}Firwqwe0}ReyCRU9BO%Juf`&XlSOtq1 zIzKq?AtZJ#!qBVF4<7&j0qFb64z$v4zO|St>f;*hgtWOsQZ-9Ee1P;qlKN92##v)^c&$<7=5(xW*hR?9K0ot)`0 zM%$y_oJ14sf4=FbE%uLZHdALoipQ%1p9Os2v*0b(v%YT)wgYd}1qBP=XkV+3UeWt2 zAT-zrxBu~mRh>xQIqTYk998MYFjKP#`&X>@O42c9am#QJp0~Eb_E2=p2H z!(1~FIq^KJ!@4-B2adSo1tXKk{K$HUTjHRv4s(Kdj`N|C7%|>_=EHB)F*hhuxdicL zf)h|KFVei7|3O-L?3Jurr|hIoBsD%W?>)! zqr%!RhbKL;Gl8~O;DP<+VpxcE_KSaS3LA9b@42+m_U>v)^ES8LH6tc?_(7oDz}mSK zD*p{nGo6g1p^Q~{v;5Y)M{3nrT03J)?TnqF3$AFu3o@s3!kju*LYs{`y~Lyvq>TrJefWgTbW_JB=+Yd0J~jDW~QZ z&fu;=4ZU}~$I|g{XYE?^+#yH|&M?)!=QbW-x0K5yMWalgC3k)Up3+vD7O0Qo`?mQ} zTEOXRUszwBK3F62;NMZ%mwm%W1#Y!7Vb#1`&5M8YY#xTap}N{q&T%l0;A#>0w^mjA zt-9KluxgQ94SOxtPF1b%{!pj;!m34awJ7{Ms;WJ;zl%%QGqRff-Ts%{oVAM76(94- zs$W0OhRZS!^t4pK5BY)U6ku984o@u8S<<1#@OdpbF{~+Ajz^VQHN4of2cD&;?f#!M zZuklX*dX(=W&}u1#$Oz3#_ucaWuG)l-?svKkZ;X{)^i-94po5RQ1}C%G^+O!7xT0O z=iAO8NU(My1717%U^blVrA4*Ha6aWA? zj>|*we!JtXrX8E?cbo<;fh~>R4;S z)E+%z!o)qEbWr1=<95Mfd)cRtP@$do*)17^d2yGIrO4F=&b)>;XT#Q8{?uI*QcBHti zqq!SG(01U>O1JiN23W$ZGyV;wQBZXW^@$@{>QEmq&U<)cA1hez9J!Ll*!4ai#$F58 zhp_b^ivqg6@{8v7rq9!HE^N=|e6F(Y7h|)>@>QdCu!!B`b&D6@lQ5B}ZmI|3jj{F< zUvx#I&%fw{Mg>QksbhLu(P_MMMsEjiWP0SnCt}8}IM)PBf=7p|gKb#r#9rkx``e?9 zv6PkcWm{Zrh)d?>vQ-ksGJ@j(8mn~d#$j~;ud8*rmrb~3phz@;!a3>NW(wSw1Eyv9xTcR%LZUwoMdtc`y=cbb?Ue8_I*smtu! z|ILR2H~l*ogNr}iJf)7>&s1<6AVcjDKR2nv-6hA>b@~8+rS`q2o7;20@&Wb(U$t_^ z>A?QwbiV)&he@T20q3G{(IefA!saqdm)wqsHb&SJerRToI+mIsgLCl6q0)k5H`%v; z;j2%Q9ejl$oE=fd7(3?c?!dV3*PYP$;;-dh6UAsg!~4qDH^M_>e;6(KT8vkA?)A%) znS0R(pDr%?rg7kkb9XVHdEFH6yA`9c zG-8z7Bfp)K1YSlln`2GBs0WnnlixPVMQ)_e^2uDt0?(g#S9ha73B96E4)^3@wcYXf zVxahs?WSJIMCT(7t%cWpqMnJ4^GO7r5m3y(Zaf}Lag zgAFc~WUo!PW2(ObqY~ z-AXvFHmzg)lr}v};o8K94E_gg+E)>#O(~~Xn@Ubyq)p>7&@WCYO==(Qw2{hVPdlB2 z@!xxz55w;`{eRV!VpmUiw~J}8{f8VVK1b0IKA$?4yFgLE{^f@}MKInm0Q>D$XVTDn zuQLuEc~2n$Fm{~DjXuQVi&oa69xHmRA}J0cC{D&3Y_wWrftE~bpNVbLSfBv1%Q}3^ ziv{HNA2SBC%HZT8u46{I)k7u=%~Dmf)bL^)0+SXE#VM*d+?F{L9=2tJF@l~yId=kC zBNHHEcl>lq^*reKPki+Lvh&%wUM(t0$AJJ$Z+UopbT}SfhmUK>LAlw?q1NEe(x3T4 z+-L8H2vF><3p(bwUqv{-!poQd1!Kk^oZ2lwGZ zx^jh773`TnQ;Gx3&pH1Ys!oPuGlPxI!6&7snNJE8=Hy`WQp$+`TuvzD-k!1SksRtL?}A}Ri*L3jDKaCp zQIf`o4qR216~fr0L@`m>08F|a*-TIwtk|-~MIho;ACMkZq4=U2ajFLH4>&NPPmZ8D z8P%2t-cYnB>eTG_)dK`@nn8mANIXe&A1x70b;NRzUtYk3kHwK^al1~9`ZFXPyNCll zJPH#;BMJhes*XlG6?9brAlxowIWI9d8Q8-I;FCJF@XL^vx1jc6G0$3nd$_tEzMc2A z7s5MQ6{3rWuA;4Cp@-7roHao()%ZcY=po#U5vM)0K9fy`JD*Wv6SgWRwtJ~CzA(V+ zDLyL>(Osc9@1?A|lJ8g;QQOp9a746>psbGD2!oO*OK@T4*weu5_ZC_;p9gCubBX5a z#SZ8PBB;dLMp*ywwv)>sSmHn!!{7i-_QKfKSg+N5b2Ysfkt`0yJ7D4?DT@k4ek3*O z!q8OnV;tHqzyXofDz>kN=K^kv=@t($z^gT?SUkkAwuu)aDIFl+j-+fnzK^69S1GDs zuFpuCp#vL0Q#68iJ+Y*B$=f-mNsA^G3&0sL&KyRN!qd}oK2Y_+7 zi^VfqIdIW5hT5X18)K*uEf8fflv~~XsTit{GG8oZcDrPUAaA%lT!K?IIVUE@QoceX zJ?Q{9u7S&2vDLV&`+Z#cUJ@4xPKtJj(6#7M6Bo_5PItI3>cvUww2zZgG$@W{$5*Vy z;M!Zq@Gv@vPvfWrS8@>~Xt8+KV?5sd0)dO2cFY zMTQ@@No3LaM9Nl0IfyAxWcqQ@M-~+tG&_Xh)>;^@lWE4V)ezp6;imkx52bdz&BHm# z$WgbG6rF1YCv5n01Jzvq6Xv=GTfz%p zfP&I>B3umNQy%aJa%}}?G?=7eRt>dGO;psS&H-sz|FAb~ARY&W%QTT|W9V%3E0Wb8Tqbj^R z$6;_5L{VukmpfE)%6Xd0$Un|SzKcezTj9tDUF;ElaHA!%ze_Yy>nAlwjDUmN{KmwH zzC@e(5`!9T&;V?3kOv~T233oU9OnS&Q3iS`xj4xMs1ru|+CVRYi8zO0?ztGztc!(h zA8LWjXo5pN;zTO7hRZVRk=gM$?@4J=2aGDndW+EMCJnYqv&y%#SB}P8rgYBMscoEr zBI7tvKL)H&*zP+H*Q318qEm)R>`F~R)CkXbn8ne zSw9XdU%Iv1Nj8vcfY$R)G9wPN7u|ZuNoK_%DAuj7Usj-+@LX57UUQN;aR`8Q>j5X( zj;H0i^~FoFa?onZF~4rDS81!gR8Z@OEeck9se9I&PO^nM6SvVxrb&gdo^XU6=w zPBKnPvGwz21u8?GAUGIGvgrA(MNaxXxj(2|?@My!SRFaC)ve{?iTc!n%EdeNDL{+G z$@>-rmcB^WnD%_Mi)+)~6!LK7q(}Qx>;lw`H@eiul z*&1ubz790D@zKAbs@!ekquv#-Iel7ZkZ(1!R`D>;is2opiVh2ZCu+rqe{}IpM=GQp zVi7XhT+I9puQRX1n7>wLRG&u^r#fLyz7M%p8|&a3vXA&37xRF4jdnO&$U?8B2?Fg-f+PqDKL zwZ=Y_(viH-E|ls5J5{_3)d1?SOZJHyZHxv^uo{a+^I~f2zo_CqRk6BSSuv%c-(|(J z-&cyMzx?#cslh#iW&f&jkL@s2d7j}Oi~x5WtZ3{-f@WKI)@s1zzKNcDLj%>jpL}|; zr5XFMLkOYc;_+6p^Hf#FTW2raQEJVcV%>?4MOkpgvKV*caU=vj($iafVo|-EH_5uA z)YN)s$YSi^Iu%QC-5lNXyd6jy{}MP|*f{B5cqK*>4=JF<%M)!^_- zE=;-=@hmcPaaTM%FN+zG^_PnF_R{wNw1HJ7tZA7-1XOc$v_H$C0utnaa$G zQsZ59#s*9QZ(zc~3{<;7tYkQha2x0xVg$Y%5hA~Cfg;lb*e#MG)TIY?OsRxaD$R@M ziwVgosl;C?#JC?(c|%#7T;Ti&mSS7mI{i z_HyvVUSCM`Oz$-qiz{o;5|&PU)<*IjMKBE#bBH_(83&`Xwh5c7p*At?xDF_(E0M#x z-ku;T%R|p@Pksf!IS36hK=qvZKxdbdbtV%Zy3inuybUPv)y6~Q*`$>^Cau~e;TS_% znHNRI0pgEQXzHR7-m;_pan?S@n7>gGh?VcCfcxk?g8hu%e(~Uyl%BU&^^I;1;?1u~ z4t`8#G&a)NCq+XgE`Nr@I?Qje{KgPv zO=}k$1m+`W@8txW5KizjRI;BFdz=z}hN>Or#6B(&Eql?!b?5zx^f{+yIVa|cBfTg& zayh>*6yNotHFfv$`%e7GjySPHZ0e0ldt^c7E4^tjb>9I~U~Rz<*HSVf36512qSrbOK;Ui}^GluqG(KX-p&9$hjKfDmOjtwac!cFJFrfGG21T>0$qYK; zg#9?Tj2m7OYetvMShzfR8Xo`uhXJ&|#0VhdCwWBt!)QY+@DF|#ec~my6v!SFbPY9% zcE>65uA%G#VC|9)WI{@rWRMMu15B*|?msgNaJ!w=P?TLmsTt0=+11Gb@rPohmVr;3 zuAz*^(&=I9ue2E$aaHL@WK~vnwm#QT-7F}0BszwZz2{zvuD?aRVP&DjEsa_~=%(5Yr9E?Ga9}~U=q+~8&jJIxq1*jnjChmPgI^0ks zru51T9F;+531&R*MlteAfFqRvdt3pIaCHKEEJ`O7XH0?t<#vgP6U96IT&0lTI7r0# zx-g|svDzi|3^f5nsRY8Hi$zMJ_a3AMtilyW9H2Q>MrFu@}dl(N?lU*CDVvi|jw7A%V=p&1i@u zf9p>TBmc=ZZI9?Tm~vfV?l*wavR_skaE{n}@O_4APspI*#oiZ-22j1=+j36qNTaET zbWfU99=S^m7CAO+++0Zm=j9o;d zfr!2wJp}4?#dQNIbvP>{Qvg~V)=AhP_&l;22FKS9zYzf4CSzSE9K{N7C<=mEM>rhN zohWF}KC{)v!x3gQz3z7TpKY^@%Lx zsDS&$Fmq?liw%RQgO2CdgQ!8yzc@aFCBuw_^%fN6f0q!H{K3C3C_yDC@JZ4>Rtt)n zrovXULV?&g$;C^LFpyYfQB$ItlEbD|S?!A@hd-!OLvmcXG5bjiehJa>NmnZQa1Dej z%n!olIL_FOk^Lb@kB`=faW_!Ap&_qXT|2Cj21YsFmT%AVDB(#I#;#XwSoSA zRAw6^QBm{RkHz^LsQ#78<6&JFMd@(}t2ARPjb~MGV7o)W%uEFa_zn>tq{qsxVl3+f zCNg5!5NcLK2c8-d(gB`xnHTGT+DC;BC=T&zm$G@7tKAmxRL=y$bwIZ;W0)TBI69Da zBX#ImNh%!Vm=FW8aIJ?KXd-;XaMJ%kLBhBS9EHC#HK)IdzuyS?T`s&gQOly0A42E> z6(?K~HQ+}sLu35tA+#1k)`E+xiHSE+c97!+)c(_z0RVK|np_#+uj^6o4Aavm9`4Tc z@J)JW;Q*@y9%q$6PHUh<=z*1p{g#@et1ax^ws$Mmwo?G(AgsNv{0i6=b@PIY7z1`aY5#h-BUT63ph6l{7p71ZCzd$4Z#h+&YGbTpg7Xk5dI0o>O#I7KzCt zD5L*&tn}TbLp#+4CvP@-KuA@=zJ-5S7x`0snsh5?9qlBR08Tg`VeqgQvCgruojWfM zjiBs;wW@JI=Pya(=mk3-C_aoEQ;3t+2B(V08?@GmRyX7L!CEowX6oN?Con|MI8w$E z!f$X+e3XXQ4|j^aH&ZvCv*L$y>^}%|B(=wOz~GT|15Qv#KgFA@N5rcmDHD6ahelFY zxJ~~k>RP*96Ys-qfbcra-3)+oxm%z+~B`+!8?2=Hb(lE+Ils|v<~Gr$Jsb6qgN zs;X={nsyV};?x+bpLRDdn<2;mkJ+4gAnPM!N-=?GtO8v;+c^qG#zFj=b{3S;t%j0}7)Q}flq z%z8hlpJbiH13M;zZlN96OHV1KYl9LNFUtWIOoB&3LvW(u-_DOv{c8}z_?#&MW~$>x zN0D!}L0tsU`}nulZn(02Y+x*2b-=~ z62pKthzS!ZBfQd*iSR#r#JdxzMerzaGfsmZV?#Ti@_$JH2Ax4s__nv&SH0^1a(TTI z+t&;5?rvX)KG+aezRE2R`(A@1D(RkL!~>eRV-gkV#}0}~lPO)iKM8B-r^Q#3q+&!& zre;VLOa`_K#Kg%|K&LC8m`we=SZ6;u4Lds(B7Qm@pn2kk8E{20GpH|BRpNa+=}W&7 zLuQaE3TIM&>d8-lb8{GId7UVN>E|^Z$U7X!vLF4}5yqrtEK_7S?}}{_LuXOoiYkWC z#5m42lB_kH%5+obdBm#B`UvlSkRJS#S@OR8WjbrdYO!+`nJH@zD&^Fz3e<&uf<>=Z z{xXZ+)jdB_yjT)MfPd%?ip^K$VS6~o&@FG^L0lXyfa1V&1Ne_3c@E7_-TEm|kxl{& zXjoT6`FLzpSInUyy)IoQw?s4tLzWqC#|KQ%M;Te`08njCg(bznJF%W|O#J0eFld9= zdnXO8bDrYi$5_pN!2og1^SmgYi-U0AiXn3;Bl5%{WPUH^%%$%7F9*fWxip?uih>|D zOJ-6hfj}l(RsQiB$Hk-|jiw*Oz93zzpF1dW%CIwaTHIKMz2BYU!7{o{|BZy_E?OG7 z3y_Ty;_(rxRk?e4u&eL$P%}b*6>l z=lN7d+Xc>S))f!l2YNd1+wP-e_x;FyRM&lvUI2gL)M*iVZ-T6G3+N`db`sK zmn~B7#}KxQj`vd^x8(8rWgjozk0XWK#V_~MfL7Zye-}e&|*seSE0M%FJ#p6xf zYpGqH{UF_$#_e-GhN;Z~oG)?S++!`o7q{k#Z4ZLe8^uQtQk!d4CG=XW64asOZ%^I5 zX7PIO07NDp>)$wHRlp2fNbr5eMgTXx&sYUhi?q=whKenO1%`f#8yAA&_lcPc>0w$V zVi#ctY>~)aL`Afya?~QagYZ1Om4@gJC{=c7Wb>=)Pp`0Emx40^Wm{7 ze0)<{5)Y>65pY~83m*l6FkHCcnc~;1v)_p2E1+r{#TzTAsNTjC+z9LMpf%T#mohh= z5XY9|D@0f0f8nD4azYfWpyHfgWX&4jRaOn~>%Ldu{~^AA6b$-@X!aNlA8_<53_+fr z@K{gjmQ3;~0ZX|A>kOAmufQT2Ui$?cSmMHqYl}}GBR?Hqwvv{|Jfg>I=_dY12$ic> zQYW4ERDSjZ4cBS4C|*sI;bbdT({=DuQBOggD@6CFXagR!mg-rNm2rplsspQ|{ASpvgMJiA8zJdiM2C&kiOR(6jdT?| z&cAO|j`N$1)Cji`5}v0=elMii_WYlOG_5ptK;W*+^FI!0hQ5H~`mc$5UZ6nhw;6l3 zfe3Neveo+;_8R)<9{ckDm6OIyzIn#fNu#G06-}Hrwy5aJNzV8Jhg>VM8->$CO*RdD^XZmXoLv9L}Mbn8vYY2@&BldUFtQo zM5NYu#cSIrJ!T8ih-tJnqUdGHh}n;%f#fkUl#}P2(qrQ8m#Irkp9n*XL}`EV_RBQc zn2zKSBwOGw27lt3N*V+_)>Y#FEjhEY?N*$3p``-8#Rn+AFcZDA*z5* z%pfGW`yS%xHfkC($4M>{$=hjia0ikDQThRCS{9yedVj6-CrHPKl^>~9ezaCOta=T2 zCu)`dpvr@x4u7gu0kgy!04~%jkI-wDMAIR^Eck(SN7`XXJ#X^N~&u zOSeHfyaNmAgs}1}kZxKlT_-Hv1LZ7HE`o!Q?p8M}V+=CFF`k8VIDzj*IvjxqkWS(D z;=3I*GIy!Z&<2EodmP2#_^orniQE5%7-)ys{x_ON!$pf%kQy!~y+SQ1TRia!?sjw( zue^e588?ap{Fo(vdW9ObS{iR?^#Ff8o)LI<9WiOrXLM;VQ79-JBmN1_O0T`>(m=y^53BTez!CoW0$2) z?GA2QtbPN5T~G1#8yJ00QGX{OSBcAaf+YLJY)++#6+1zM_Tr_TG&5y$va%)D;D2j7 zX2Rr|Jm5XTdXpN(9!3$<=jUWG=}l_bI4;G|(q!7upbDDF)EYB+#-vf2);^L+p=oW! zrZ>@XUvcD3Y93RD77dWQQlz{^S@pLd$pCwdhMl}+q&a%()X7uP;Xcs^#h}B)w}4n& z<^68~L{i6kh8Bg|UGZdlcBR<;chJ=oKjIOy3b`x{&x_n$G~Rz0Nw%2Z_%@|0vfjac5K~NhhbDJ5GY#z~l(UkvUbyKy@g4|E--Y)){FTfY zGiLNu^OkAmm>Cl$Xj(<4A?|#K28+2k24(C5w4tc=F8<(rs>Gx3Qce^fwDlcq!bZG- z`0`y?@`a-Fd(9Hp9}DcrU7z=0Upcf5tmA-A$jvJ0_4d z(qM5glyM$~g<%yq&GPI5s0&GLQ7g^Va?6uZ9-j8qs?X{0@_3{ZwMNwd;%Ze$bkpL| zz0~2dzNVoyLw{FJymj)lX}8=wfpvZ2h+8I&8a;I$%96uyaZT((5&J&1OsaB<_u$+Frb~U{>LY5rv+^&B;^E;nnHmC}(x45}Lc(S_Q zgD3Ymud?$Y@=(OT^MQ%@?f{guK-~5z_0DYD!q80A7=R~RrQuNO0@ULFW{XchrLIW} zohq%7<;UMb(fTtiLdA=_Kck=Vxcx9H^(-*73>4Oh*0hFr_7v|PMlbWkZz#>(f>MV5 z7M`q6Q%6i1JK7vQX_U##n`NFwKKJ>SC_MrTk=9C??H1yRBXob{;-k=n%<4S`uKCxv+>UPZu-tz>FG%GXx#GBTIHkNa`DaQ z)Gp}=y73|FIG*fLW{K8cQ1ki?+9+Gr3{NkzTj0q9nI&%ff;#x!R>P6q1ljZP1c9{0 zcrvGFi4VSjbnZZsHJ7!YjqZ-hI!7rO;qQI9A;W;)$m4LpO<#|9MxuA+i(k`yp8p4u CYZ71p diff --git a/x/wasm/keeper/testdata/hackatom.wasm b/x/wasm/keeper/testdata/hackatom.wasm index 24c75b40758283fee13f1584ebb67b86d8eb250c..ef68adcc09381f72598f5b5c15cf79504ab4957d 100644 GIT binary patch delta 5707 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 PSWPmZer*?f>E{0d@0^b& delta 5122 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 Ra<%5ge*nuO#XUE;0swNJo^}8L delta 61941 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 TJw3lTIIENfr#n;y*LVAW7cF+4 delta 26403 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 A4gdfE diff --git a/x/wasm/keeper/testdata/ibc_reflect_send.wasm b/x/wasm/keeper/testdata/ibc_reflect_send.wasm index 83ebde9f8f1161ba17d050f1b47c1e6f016ff9d5..197f7419345f87e361e4a1af9a14ebd0d494f10b 100644 GIT binary patch delta 24831 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 E2cc8OrvLx| delta 22634 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 D{xl;U delta 5905 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 CnQz_z delta 47838 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 Date: Wed, 28 Jul 2021 23:05:05 +0200 Subject: [PATCH 58/90] Update gas price --- x/wasm/keeper/keeper_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 4933f09d57..a7a50db2ae 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -522,7 +522,7 @@ func TestExecute(t *testing.T) { // make sure gas is properly deducted from ctx gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x1098d), gasAfter-gasBefore) + require.Equal(t, uint64(0x1098f), gasAfter-gasBefore) } // ensure bob now exists and got both payments released bobAcct = accKeeper.GetAccount(ctx, bob) From e4fa80a4c4506713b55851e4a7dee574aab7b6cb Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Mon, 2 Aug 2021 14:55:42 +0200 Subject: [PATCH 59/90] Remove obsolete cli params --- x/wasm/client/cli/tx.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/wasm/client/cli/tx.go b/x/wasm/client/cli/tx.go index cd5e7198e5..d2fe5b327e 100644 --- a/x/wasm/client/cli/tx.go +++ b/x/wasm/client/cli/tx.go @@ -52,7 +52,7 @@ func GetTxCmd() *cobra.Command { // StoreCodeCmd will upload code to be reused. func StoreCodeCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "store [wasm file] --source [source] --builder [builder]", + Use: "store [wasm file]", Short: "Upload a wasm binary", Aliases: []string{"upload", "st", "s"}, Args: cobra.ExactArgs(1), From 2a321bf6382cfccc2bbba0498941784d4a25399a Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Wed, 4 Aug 2021 11:14:18 +0200 Subject: [PATCH 60/90] Add organisation to grpc gateway path --- docs/core/proto-docs.md | 12 +-- docs/proto/proto-docs.md | 12 +-- proto/lbm/wasm/v1/query.proto | 12 +-- x/wasm/types/query.pb.go | 138 +++++++++++++++++----------------- x/wasm/types/query.pb.gw.go | 12 +-- 5 files changed, 93 insertions(+), 93 deletions(-) diff --git a/docs/core/proto-docs.md b/docs/core/proto-docs.md index 55aab90ed3..c73bccaad7 100644 --- a/docs/core/proto-docs.md +++ b/docs/core/proto-docs.md @@ -11981,14 +11981,14 @@ Query provides defines the gRPC querier service | Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | | ----------- | ------------ | ------------- | ------------| ------- | -------- | -| `ContractInfo` | [QueryContractInfoRequest](#lbm.wasm.v1.QueryContractInfoRequest) | [QueryContractInfoResponse](#lbm.wasm.v1.QueryContractInfoResponse) | ContractInfo gets the contract meta data | GET|/wasm/v1/contract/{address}| -| `ContractHistory` | [QueryContractHistoryRequest](#lbm.wasm.v1.QueryContractHistoryRequest) | [QueryContractHistoryResponse](#lbm.wasm.v1.QueryContractHistoryResponse) | ContractHistory gets the contract code history | GET|/wasm/v1/contract/{address}/history| -| `ContractsByCode` | [QueryContractsByCodeRequest](#lbm.wasm.v1.QueryContractsByCodeRequest) | [QueryContractsByCodeResponse](#lbm.wasm.v1.QueryContractsByCodeResponse) | ContractsByCode lists all smart contracts for a code id | GET|/wasm/v1/code/{code_id}/contracts| -| `AllContractState` | [QueryAllContractStateRequest](#lbm.wasm.v1.QueryAllContractStateRequest) | [QueryAllContractStateResponse](#lbm.wasm.v1.QueryAllContractStateResponse) | AllContractState gets all raw store data for a single contract | GET|/wasm/v1/contract/{address}/state| +| `ContractInfo` | [QueryContractInfoRequest](#lbm.wasm.v1.QueryContractInfoRequest) | [QueryContractInfoResponse](#lbm.wasm.v1.QueryContractInfoResponse) | ContractInfo gets the contract meta data | GET|/line/wasm/v1/contract/{address}| +| `ContractHistory` | [QueryContractHistoryRequest](#lbm.wasm.v1.QueryContractHistoryRequest) | [QueryContractHistoryResponse](#lbm.wasm.v1.QueryContractHistoryResponse) | ContractHistory gets the contract code history | GET|/line/wasm/v1/contract/{address}/history| +| `ContractsByCode` | [QueryContractsByCodeRequest](#lbm.wasm.v1.QueryContractsByCodeRequest) | [QueryContractsByCodeResponse](#lbm.wasm.v1.QueryContractsByCodeResponse) | ContractsByCode lists all smart contracts for a code id | GET|/line/wasm/v1/code/{code_id}/contracts| +| `AllContractState` | [QueryAllContractStateRequest](#lbm.wasm.v1.QueryAllContractStateRequest) | [QueryAllContractStateResponse](#lbm.wasm.v1.QueryAllContractStateResponse) | AllContractState gets all raw store data for a single contract | GET|/line/wasm/v1/contract/{address}/state| | `RawContractState` | [QueryRawContractStateRequest](#lbm.wasm.v1.QueryRawContractStateRequest) | [QueryRawContractStateResponse](#lbm.wasm.v1.QueryRawContractStateResponse) | RawContractState gets single key from the raw store data of a contract | GET|/wasm/v1/contract/{address}/raw/{query_data}| | `SmartContractState` | [QuerySmartContractStateRequest](#lbm.wasm.v1.QuerySmartContractStateRequest) | [QuerySmartContractStateResponse](#lbm.wasm.v1.QuerySmartContractStateResponse) | SmartContractState get smart query result from the contract | GET|/wasm/v1/contract/{address}/smart/{query_data}| -| `Code` | [QueryCodeRequest](#lbm.wasm.v1.QueryCodeRequest) | [QueryCodeResponse](#lbm.wasm.v1.QueryCodeResponse) | Code gets the binary code and metadata for a singe wasm code | GET|/wasm/v1/code/{code_id}| -| `Codes` | [QueryCodesRequest](#lbm.wasm.v1.QueryCodesRequest) | [QueryCodesResponse](#lbm.wasm.v1.QueryCodesResponse) | Codes gets the metadata for all stored wasm codes | GET|/wasm/v1/code| +| `Code` | [QueryCodeRequest](#lbm.wasm.v1.QueryCodeRequest) | [QueryCodeResponse](#lbm.wasm.v1.QueryCodeResponse) | Code gets the binary code and metadata for a singe wasm code | GET|/line/wasm/v1/code/{code_id}| +| `Codes` | [QueryCodesRequest](#lbm.wasm.v1.QueryCodesRequest) | [QueryCodesResponse](#lbm.wasm.v1.QueryCodesResponse) | Codes gets the metadata for all stored wasm codes | GET|/line/wasm/v1/code| diff --git a/docs/proto/proto-docs.md b/docs/proto/proto-docs.md index 2212a16fc3..af033e0c97 100644 --- a/docs/proto/proto-docs.md +++ b/docs/proto/proto-docs.md @@ -1081,14 +1081,14 @@ Query provides defines the gRPC querier service | Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | | ----------- | ------------ | ------------- | ------------| ------- | -------- | -| `ContractInfo` | [QueryContractInfoRequest](#cosmwasm.wasm.v1.QueryContractInfoRequest) | [QueryContractInfoResponse](#cosmwasm.wasm.v1.QueryContractInfoResponse) | ContractInfo gets the contract meta data | GET|/wasm/v1/contract/{address}| -| `ContractHistory` | [QueryContractHistoryRequest](#cosmwasm.wasm.v1.QueryContractHistoryRequest) | [QueryContractHistoryResponse](#cosmwasm.wasm.v1.QueryContractHistoryResponse) | ContractHistory gets the contract code history | GET|/wasm/v1/contract/{address}/history| -| `ContractsByCode` | [QueryContractsByCodeRequest](#cosmwasm.wasm.v1.QueryContractsByCodeRequest) | [QueryContractsByCodeResponse](#cosmwasm.wasm.v1.QueryContractsByCodeResponse) | ContractsByCode lists all smart contracts for a code id | GET|/wasm/v1/code/{code_id}/contracts| -| `AllContractState` | [QueryAllContractStateRequest](#cosmwasm.wasm.v1.QueryAllContractStateRequest) | [QueryAllContractStateResponse](#cosmwasm.wasm.v1.QueryAllContractStateResponse) | AllContractState gets all raw store data for a single contract | GET|/wasm/v1/contract/{address}/state| +| `ContractInfo` | [QueryContractInfoRequest](#cosmwasm.wasm.v1.QueryContractInfoRequest) | [QueryContractInfoResponse](#cosmwasm.wasm.v1.QueryContractInfoResponse) | ContractInfo gets the contract meta data | GET|/cosmwasm/wasm/v1/contract/{address}| +| `ContractHistory` | [QueryContractHistoryRequest](#cosmwasm.wasm.v1.QueryContractHistoryRequest) | [QueryContractHistoryResponse](#cosmwasm.wasm.v1.QueryContractHistoryResponse) | ContractHistory gets the contract code history | GET|/cosmwasm/wasm/v1/contract/{address}/history| +| `ContractsByCode` | [QueryContractsByCodeRequest](#cosmwasm.wasm.v1.QueryContractsByCodeRequest) | [QueryContractsByCodeResponse](#cosmwasm.wasm.v1.QueryContractsByCodeResponse) | ContractsByCode lists all smart contracts for a code id | GET|/cosmwasm/wasm/v1/code/{code_id}/contracts| +| `AllContractState` | [QueryAllContractStateRequest](#cosmwasm.wasm.v1.QueryAllContractStateRequest) | [QueryAllContractStateResponse](#cosmwasm.wasm.v1.QueryAllContractStateResponse) | AllContractState gets all raw store data for a single contract | GET|/cosmwasm/wasm/v1/contract/{address}/state| | `RawContractState` | [QueryRawContractStateRequest](#cosmwasm.wasm.v1.QueryRawContractStateRequest) | [QueryRawContractStateResponse](#cosmwasm.wasm.v1.QueryRawContractStateResponse) | RawContractState gets single key from the raw store data of a contract | GET|/wasm/v1/contract/{address}/raw/{query_data}| | `SmartContractState` | [QuerySmartContractStateRequest](#cosmwasm.wasm.v1.QuerySmartContractStateRequest) | [QuerySmartContractStateResponse](#cosmwasm.wasm.v1.QuerySmartContractStateResponse) | SmartContractState get smart query result from the contract | GET|/wasm/v1/contract/{address}/smart/{query_data}| -| `Code` | [QueryCodeRequest](#cosmwasm.wasm.v1.QueryCodeRequest) | [QueryCodeResponse](#cosmwasm.wasm.v1.QueryCodeResponse) | Code gets the binary code and metadata for a singe wasm code | GET|/wasm/v1/code/{code_id}| -| `Codes` | [QueryCodesRequest](#cosmwasm.wasm.v1.QueryCodesRequest) | [QueryCodesResponse](#cosmwasm.wasm.v1.QueryCodesResponse) | Codes gets the metadata for all stored wasm codes | GET|/wasm/v1/code| +| `Code` | [QueryCodeRequest](#cosmwasm.wasm.v1.QueryCodeRequest) | [QueryCodeResponse](#cosmwasm.wasm.v1.QueryCodeResponse) | Code gets the binary code and metadata for a singe wasm code | GET|/cosmwasm/wasm/v1/code/{code_id}| +| `Codes` | [QueryCodesRequest](#cosmwasm.wasm.v1.QueryCodesRequest) | [QueryCodesResponse](#cosmwasm.wasm.v1.QueryCodesResponse) | Codes gets the metadata for all stored wasm codes | GET|/cosmwasm/wasm/v1/code| diff --git a/proto/lbm/wasm/v1/query.proto b/proto/lbm/wasm/v1/query.proto index 72096e7056..6a676949dc 100644 --- a/proto/lbm/wasm/v1/query.proto +++ b/proto/lbm/wasm/v1/query.proto @@ -14,19 +14,19 @@ option (gogoproto.equal_all) = false; service Query { // ContractInfo gets the contract meta data rpc ContractInfo(QueryContractInfoRequest) returns (QueryContractInfoResponse) { - option (google.api.http).get = "/wasm/v1/contract/{address}"; + option (google.api.http).get = "/line/wasm/v1/contract/{address}"; } // ContractHistory gets the contract code history rpc ContractHistory(QueryContractHistoryRequest) returns (QueryContractHistoryResponse) { - option (google.api.http).get = "/wasm/v1/contract/{address}/history"; + option (google.api.http).get = "/line/wasm/v1/contract/{address}/history"; } // ContractsByCode lists all smart contracts for a code id rpc ContractsByCode(QueryContractsByCodeRequest) returns (QueryContractsByCodeResponse) { - option (google.api.http).get = "/wasm/v1/code/{code_id}/contracts"; + option (google.api.http).get = "/line/wasm/v1/code/{code_id}/contracts"; } // AllContractState gets all raw store data for a single contract rpc AllContractState(QueryAllContractStateRequest) returns (QueryAllContractStateResponse) { - option (google.api.http).get = "/wasm/v1/contract/{address}/state"; + option (google.api.http).get = "/line/wasm/v1/contract/{address}/state"; } // RawContractState gets single key from the raw store data of a contract rpc RawContractState(QueryRawContractStateRequest) returns (QueryRawContractStateResponse) { @@ -38,11 +38,11 @@ service Query { } // Code gets the binary code and metadata for a singe wasm code rpc Code(QueryCodeRequest) returns (QueryCodeResponse) { - option (google.api.http).get = "/wasm/v1/code/{code_id}"; + option (google.api.http).get = "/line/wasm/v1/code/{code_id}"; } // Codes gets the metadata for all stored wasm codes rpc Codes(QueryCodesRequest) returns (QueryCodesResponse) { - option (google.api.http).get = "/wasm/v1/code"; + option (google.api.http).get = "/line/wasm/v1/code"; } } diff --git a/x/wasm/types/query.pb.go b/x/wasm/types/query.pb.go index 2873f7ae5d..0408764607 100644 --- a/x/wasm/types/query.pb.go +++ b/x/wasm/types/query.pb.go @@ -740,76 +740,76 @@ func init() { func init() { proto.RegisterFile("lbm/wasm/v1/query.proto", fileDescriptor_f1bdb66850244231) } var fileDescriptor_f1bdb66850244231 = []byte{ - // 1092 bytes of a gzipped FileDescriptorProto + // 1095 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xcf, 0x6f, 0x1b, 0x45, - 0x14, 0xf6, 0xa4, 0x8e, 0x63, 0x4f, 0x52, 0xd5, 0x8c, 0x28, 0x71, 0xdc, 0x64, 0xb7, 0x6c, 0x28, - 0x4a, 0x48, 0xd8, 0x4d, 0xd2, 0x8a, 0x03, 0x07, 0x50, 0x9d, 0x14, 0xa5, 0x15, 0x91, 0xca, 0x46, - 0x02, 0xc1, 0xc5, 0x1a, 0xef, 0x4e, 0x9c, 0x05, 0x7b, 0xc7, 0xdd, 0x99, 0xfc, 0xb0, 0xa2, 0x5c, - 0x7a, 0xe3, 0x56, 0x28, 0x17, 0x4e, 0x70, 0x02, 0xfe, 0x94, 0x1c, 0x23, 0x71, 0xe1, 0x64, 0x81, - 0xc3, 0x01, 0xe5, 0x4f, 0xe8, 0x09, 0xcd, 0xec, 0xac, 0xbd, 0xeb, 0x78, 0x9d, 0x54, 0x81, 0x9b, - 0x77, 0xe7, 0xbd, 0xf7, 0x7d, 0xef, 0xdb, 0x37, 0xef, 0x4b, 0xe0, 0x74, 0xa3, 0xd6, 0xb4, 0x0e, - 0x30, 0x6b, 0x5a, 0xfb, 0xab, 0xd6, 0xb3, 0x3d, 0x12, 0xb4, 0xcd, 0x56, 0x40, 0x39, 0x45, 0x93, - 0x8d, 0x5a, 0xd3, 0x14, 0x07, 0xe6, 0xfe, 0x6a, 0xf9, 0xcd, 0x3a, 0xad, 0x53, 0xf9, 0xde, 0x12, - 0xbf, 0xc2, 0x90, 0xf2, 0x6c, 0x9d, 0xd2, 0x7a, 0x83, 0x58, 0xb8, 0xe5, 0x59, 0xd8, 0xf7, 0x29, - 0xc7, 0xdc, 0xa3, 0x3e, 0x53, 0xa7, 0x86, 0xa8, 0x5c, 0xc3, 0x8c, 0x84, 0x65, 0x45, 0xfd, 0x16, - 0xae, 0x7b, 0xbe, 0x0c, 0x52, 0x31, 0x09, 0x74, 0xde, 0x6e, 0x11, 0x95, 0x6c, 0x3c, 0x80, 0xa5, - 0xcf, 0x44, 0xd6, 0x3a, 0xf5, 0x79, 0x80, 0x1d, 0xfe, 0xd8, 0xdf, 0xa1, 0x36, 0x79, 0xb6, 0x47, - 0x18, 0x47, 0x25, 0x38, 0x81, 0x5d, 0x37, 0x20, 0x8c, 0x95, 0xc0, 0x5d, 0xb0, 0x50, 0xb0, 0xa3, - 0x47, 0xe3, 0x5b, 0x00, 0x67, 0x86, 0xa4, 0xb1, 0x16, 0xf5, 0x19, 0x49, 0xcf, 0x43, 0x9f, 0xc2, - 0x9b, 0x8e, 0xca, 0xa8, 0x7a, 0xfe, 0x0e, 0x2d, 0x8d, 0xdd, 0x05, 0x0b, 0x93, 0x6b, 0x33, 0x66, - 0x4c, 0x03, 0x33, 0x5e, 0xb3, 0x32, 0x75, 0xd2, 0xd1, 0x33, 0xa7, 0x1d, 0x1d, 0x9c, 0x77, 0xf4, - 0x8c, 0x3d, 0xe5, 0xc4, 0xce, 0x3e, 0xcc, 0xfe, 0xf3, 0xb3, 0x0e, 0x8c, 0x03, 0x78, 0x27, 0x41, - 0x65, 0xd3, 0x63, 0x9c, 0x06, 0xed, 0x4b, 0x9b, 0x40, 0x1f, 0x41, 0xd8, 0xd7, 0x49, 0x31, 0xd1, - 0x24, 0x13, 0x21, 0xa6, 0x19, 0x7e, 0xa3, 0xfd, 0x55, 0xf3, 0x29, 0xae, 0x13, 0x55, 0xcd, 0x8e, - 0x65, 0x18, 0xbf, 0x00, 0x38, 0x3b, 0x1c, 0x59, 0xe9, 0xf0, 0x08, 0x4e, 0x10, 0x9f, 0x07, 0x1e, - 0x11, 0xd0, 0x37, 0x16, 0x26, 0xd7, 0xee, 0x0d, 0xed, 0x73, 0x9d, 0xba, 0x44, 0xa5, 0x3e, 0xf2, - 0x79, 0xd0, 0xae, 0x64, 0x45, 0xcf, 0x76, 0x94, 0x8b, 0x3e, 0x1e, 0xc2, 0x53, 0x4f, 0xe5, 0x19, - 0x62, 0x27, 0x88, 0xee, 0x0f, 0x28, 0xc4, 0x2a, 0x6d, 0x81, 0x19, 0x29, 0x34, 0x0d, 0x27, 0x1c, - 0xea, 0x92, 0xaa, 0xe7, 0x4a, 0x85, 0xb2, 0x76, 0x4e, 0x3c, 0x3e, 0x76, 0xaf, 0x2d, 0xd0, 0xf1, - 0x80, 0x3e, 0x3d, 0x5c, 0xa5, 0xcf, 0x2c, 0x2c, 0x44, 0xdf, 0x33, 0x54, 0xa8, 0x60, 0xf7, 0x5f, - 0x5c, 0xbf, 0xed, 0x43, 0x05, 0xff, 0xb0, 0xd1, 0x88, 0x18, 0x6c, 0x73, 0xcc, 0xc9, 0xff, 0x3f, - 0x19, 0xdf, 0x03, 0x38, 0x97, 0x02, 0xad, 0x5a, 0x5f, 0x81, 0xb9, 0x26, 0x75, 0x49, 0x23, 0x9a, - 0x0c, 0x94, 0x98, 0x8c, 0x2d, 0x71, 0xa4, 0xc6, 0x40, 0xc5, 0x5d, 0x5f, 0x8e, 0x2f, 0x94, 0x1c, - 0x36, 0x3e, 0x78, 0x4d, 0x39, 0xe6, 0x20, 0x94, 0xe5, 0xab, 0x2e, 0xe6, 0x58, 0x42, 0x4f, 0xd9, - 0x05, 0xf9, 0x66, 0x03, 0x73, 0x6c, 0xdc, 0x57, 0xcd, 0x5e, 0x2c, 0xac, 0x9a, 0x45, 0x30, 0x2b, - 0x33, 0x81, 0xcc, 0x94, 0xbf, 0x8d, 0x2f, 0xa1, 0x26, 0x93, 0xb6, 0x9b, 0x38, 0xe0, 0xff, 0x2d, - 0x9f, 0x6d, 0xa8, 0xa7, 0x96, 0xee, 0xc9, 0x1f, 0x63, 0x54, 0x99, 0x7d, 0xd5, 0xd1, 0x4b, 0xc4, - 0x77, 0xa8, 0xeb, 0xf9, 0x75, 0xeb, 0x6b, 0x46, 0x7d, 0xd3, 0xc6, 0x07, 0x5b, 0x84, 0x31, 0xa1, - 0x65, 0xc8, 0x77, 0x09, 0x16, 0xd5, 0x2c, 0x5f, 0x7e, 0x71, 0x8c, 0x17, 0x63, 0xb0, 0x28, 0x02, - 0x13, 0x5b, 0x71, 0x71, 0x20, 0xba, 0x52, 0xec, 0x76, 0xf4, 0x9c, 0x0c, 0xdb, 0x38, 0xef, 0xe8, - 0x63, 0x9e, 0xdb, 0xbb, 0x78, 0x25, 0x38, 0xe1, 0x04, 0x04, 0x73, 0x1a, 0xc8, 0xee, 0x0a, 0x76, - 0xf4, 0x88, 0xb6, 0x60, 0x41, 0xd0, 0xa9, 0xee, 0x62, 0xb6, 0x5b, 0xba, 0x21, 0xd9, 0xaf, 0xbc, - 0xea, 0xe8, 0xcb, 0x75, 0x8f, 0xef, 0xee, 0xd5, 0x4c, 0x87, 0x36, 0xad, 0x86, 0xe7, 0x13, 0x8b, - 0x32, 0xd1, 0x35, 0xf5, 0xad, 0x86, 0x57, 0x63, 0x56, 0xad, 0xcd, 0x09, 0x33, 0x37, 0xc9, 0x61, - 0x45, 0xfc, 0xb0, 0xf3, 0xa2, 0xc4, 0x26, 0x66, 0xbb, 0xe8, 0x73, 0xf8, 0x96, 0xe7, 0x33, 0x8e, - 0x7d, 0xee, 0x61, 0x4e, 0xaa, 0x2d, 0x12, 0x34, 0x3d, 0xc6, 0xc4, 0x80, 0xe5, 0x86, 0x2c, 0xe6, - 0x87, 0x8e, 0x43, 0x18, 0x5b, 0xa7, 0xfe, 0x8e, 0x57, 0x57, 0xd3, 0x79, 0x3b, 0x96, 0xfe, 0xb4, - 0x97, 0x1d, 0x6e, 0xe6, 0x27, 0xd9, 0x7c, 0xb6, 0x38, 0xfe, 0x24, 0x9b, 0x1f, 0x2f, 0xe6, 0x8c, - 0x63, 0xf8, 0x46, 0x4c, 0x3f, 0x25, 0xc9, 0x86, 0x58, 0x00, 0x42, 0x12, 0x61, 0x05, 0x40, 0x22, - 0xce, 0x0d, 0xac, 0xc8, 0xa4, 0x88, 0x95, 0x7c, 0xcf, 0x0a, 0xf2, 0x8e, 0x3a, 0x43, 0xb3, 0xea, - 0x63, 0xca, 0x41, 0xa8, 0xe4, 0xcf, 0x3b, 0xba, 0x7c, 0x0e, 0x3f, 0x9c, 0x32, 0x89, 0xed, 0x18, - 0x3c, 0x8b, 0xbe, 0x5f, 0xf2, 0x9a, 0x83, 0xd7, 0xbe, 0xe6, 0x3f, 0x02, 0x88, 0xe2, 0x55, 0x55, - 0x57, 0x15, 0x08, 0x7b, 0x5d, 0x45, 0xf7, 0xfb, 0x92, 0xb6, 0x42, 0x31, 0x0b, 0x51, 0x4b, 0xd7, - 0xbf, 0xed, 0x6b, 0xdd, 0x3c, 0x1c, 0x97, 0xdc, 0xd0, 0x73, 0x00, 0xa7, 0xe2, 0x96, 0x8a, 0x92, - 0x2e, 0x94, 0xe6, 0xfe, 0xe5, 0x77, 0x2f, 0x0b, 0x0b, 0x51, 0x8d, 0xf9, 0xe7, 0xbf, 0xff, 0xfd, - 0x72, 0x6c, 0x0e, 0xdd, 0xe9, 0xfd, 0x7d, 0x11, 0xed, 0x70, 0xeb, 0x48, 0xdd, 0xd8, 0x63, 0xf4, - 0x12, 0xc0, 0x5b, 0x03, 0x36, 0x89, 0x16, 0xd2, 0x01, 0x92, 0x1e, 0x5e, 0x5e, 0xbc, 0x42, 0xa4, - 0x62, 0xb3, 0x24, 0xd9, 0xdc, 0x43, 0xf3, 0x23, 0xd8, 0x58, 0xbb, 0x8a, 0xc1, 0x77, 0x31, 0x56, - 0xca, 0x9c, 0x46, 0xb1, 0x4a, 0xfa, 0xe6, 0x28, 0x56, 0x03, 0x4e, 0x67, 0x2c, 0x4a, 0x56, 0xf3, - 0xe8, 0xed, 0x18, 0x2b, 0x97, 0x58, 0x47, 0x6a, 0x21, 0x1c, 0x5b, 0x7d, 0xdb, 0xfb, 0x01, 0xc0, - 0xe2, 0xa0, 0x6d, 0xa0, 0x21, 0x50, 0x29, 0xae, 0x56, 0x7e, 0xef, 0x2a, 0xa1, 0x23, 0x68, 0x5d, - 0x10, 0x8b, 0x49, 0x06, 0x3f, 0x01, 0x58, 0x1c, 0x5c, 0xf0, 0xc3, 0x68, 0xa5, 0xb8, 0xcb, 0x30, - 0x5a, 0x69, 0x7e, 0x61, 0x3c, 0x90, 0xb4, 0x4c, 0xb4, 0x3c, 0x8a, 0x56, 0x80, 0x0f, 0xac, 0xa3, - 0xbe, 0x0d, 0x1c, 0xa3, 0x5f, 0x01, 0x44, 0x17, 0x57, 0x3e, 0x5a, 0xba, 0x08, 0x9c, 0xea, 0x39, - 0xe5, 0xe5, 0xab, 0x05, 0x2b, 0x9e, 0x1f, 0x48, 0x9e, 0x2b, 0xc8, 0x1c, 0x29, 0x9f, 0xc8, 0x4f, - 0x32, 0xdd, 0x81, 0x59, 0x39, 0x6a, 0x73, 0xc3, 0x06, 0xa8, 0x3f, 0x5f, 0x5a, 0xda, 0xb1, 0x82, - 0xd7, 0x25, 0xfc, 0x0c, 0x9a, 0x4e, 0x19, 0x2a, 0x54, 0x85, 0xe3, 0x72, 0x33, 0xa1, 0x94, 0x4a, - 0xd1, 0x22, 0x2c, 0xeb, 0xa9, 0xe7, 0x0a, 0xea, 0xb6, 0x84, 0xba, 0x85, 0x6e, 0x26, 0xa0, 0x2a, - 0x9f, 0x9c, 0xfc, 0xa5, 0x65, 0x7e, 0xeb, 0x6a, 0x99, 0x93, 0xae, 0x06, 0x4e, 0xbb, 0x1a, 0xf8, - 0xb3, 0xab, 0x81, 0x17, 0x67, 0x5a, 0xe6, 0xf4, 0x4c, 0xcb, 0xfc, 0x71, 0xa6, 0x65, 0xbe, 0x7a, - 0x67, 0xd0, 0x98, 0x1a, 0xb5, 0xe6, 0xfb, 0xcc, 0xfd, 0xc6, 0x3a, 0x0c, 0x2b, 0xc9, 0x7f, 0x45, - 0x6a, 0x39, 0xf9, 0xbf, 0xc8, 0xfd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x69, 0xdf, 0xe6, 0xc2, - 0x24, 0x0d, 0x00, 0x00, + 0x14, 0xf6, 0xa4, 0x8e, 0x63, 0x4f, 0x83, 0x30, 0xa3, 0x42, 0x5d, 0xe3, 0xec, 0x46, 0xab, 0x52, + 0xb9, 0x6d, 0xd8, 0x4d, 0xd2, 0x8a, 0x03, 0x07, 0x50, 0x37, 0x29, 0x4a, 0x2b, 0x22, 0x95, 0x8d, + 0x04, 0x82, 0x4b, 0x34, 0xde, 0x9d, 0x38, 0x4b, 0xed, 0x1d, 0x77, 0x67, 0xf2, 0xc3, 0x8a, 0x22, + 0x21, 0x2e, 0x88, 0x5b, 0x05, 0x12, 0xa2, 0x27, 0x38, 0x01, 0x7f, 0x4a, 0x8e, 0x91, 0xb8, 0x70, + 0xb2, 0x20, 0xe1, 0x80, 0xf2, 0x27, 0xf4, 0x84, 0x66, 0x76, 0xd6, 0xd9, 0xdd, 0x78, 0xe3, 0x54, + 0x81, 0xdb, 0xee, 0xce, 0x7b, 0xef, 0xfb, 0xde, 0x37, 0x6f, 0xe6, 0xb3, 0xe1, 0xf5, 0x4e, 0xab, + 0x6b, 0xed, 0x60, 0xd6, 0xb5, 0xb6, 0x17, 0xac, 0x67, 0x5b, 0x24, 0xec, 0x9b, 0xbd, 0x90, 0x72, + 0x8a, 0xae, 0x76, 0x5a, 0x5d, 0x53, 0x2c, 0x98, 0xdb, 0x0b, 0xf5, 0x6b, 0x6d, 0xda, 0xa6, 0xf2, + 0xbb, 0x25, 0x9e, 0xa2, 0x90, 0x7a, 0xa3, 0x4d, 0x69, 0xbb, 0x43, 0x2c, 0xdc, 0xf3, 0x2d, 0x1c, + 0x04, 0x94, 0x63, 0xee, 0xd3, 0x80, 0xa9, 0x55, 0x43, 0x54, 0x6e, 0x61, 0x46, 0xa2, 0xb2, 0xa2, + 0x7e, 0x0f, 0xb7, 0xfd, 0x40, 0x06, 0xa9, 0x98, 0x14, 0x3a, 0xef, 0xf7, 0x88, 0x4a, 0x36, 0xee, + 0xc3, 0xda, 0x27, 0x22, 0x6b, 0x89, 0x06, 0x3c, 0xc4, 0x2e, 0x7f, 0x14, 0x6c, 0x50, 0x87, 0x3c, + 0xdb, 0x22, 0x8c, 0xa3, 0x1a, 0x9c, 0xc2, 0x9e, 0x17, 0x12, 0xc6, 0x6a, 0x60, 0x16, 0x34, 0x2b, + 0x4e, 0xfc, 0x6a, 0x7c, 0x0b, 0xe0, 0x8d, 0x11, 0x69, 0xac, 0x47, 0x03, 0x46, 0xf2, 0xf3, 0xd0, + 0xc7, 0xf0, 0x35, 0x57, 0x65, 0xac, 0xfb, 0xc1, 0x06, 0xad, 0x4d, 0xcc, 0x82, 0xe6, 0xd5, 0xc5, + 0x1b, 0x66, 0x42, 0x03, 0x33, 0x59, 0xd3, 0x9e, 0x3e, 0x18, 0xe8, 0x85, 0xc3, 0x81, 0x0e, 0x4e, + 0x06, 0x7a, 0xc1, 0x99, 0x76, 0x13, 0x6b, 0xef, 0x17, 0xff, 0xf9, 0x59, 0x07, 0xc6, 0x0e, 0x7c, + 0x3b, 0x45, 0x65, 0xc5, 0x67, 0x9c, 0x86, 0xfd, 0xb1, 0x4d, 0xa0, 0x0f, 0x20, 0x3c, 0xd5, 0x49, + 0x31, 0xd1, 0x24, 0x13, 0x21, 0xa6, 0x19, 0xed, 0xd1, 0xf6, 0x82, 0xf9, 0x04, 0xb7, 0x89, 0xaa, + 0xe6, 0x24, 0x32, 0x8c, 0x5f, 0x00, 0x6c, 0x8c, 0x46, 0x56, 0x3a, 0x3c, 0x84, 0x53, 0x24, 0xe0, + 0xa1, 0x4f, 0x04, 0xf4, 0x95, 0xe6, 0xd5, 0xc5, 0x77, 0x46, 0xf6, 0xb9, 0x44, 0x3d, 0xa2, 0x52, + 0x1f, 0x06, 0x3c, 0xec, 0xdb, 0x45, 0xd1, 0xb3, 0x13, 0xe7, 0xa2, 0x0f, 0x47, 0xf0, 0xd4, 0x73, + 0x79, 0x46, 0xd8, 0x29, 0xa2, 0xdb, 0x19, 0x85, 0x98, 0xdd, 0x17, 0x98, 0xb1, 0x42, 0xd7, 0xe1, + 0x94, 0x4b, 0x3d, 0xb2, 0xee, 0x7b, 0x52, 0xa1, 0xa2, 0x53, 0x12, 0xaf, 0x8f, 0xbc, 0x4b, 0x0b, + 0xb4, 0x9f, 0xd1, 0x67, 0x88, 0xab, 0xf4, 0x69, 0xc0, 0x4a, 0xbc, 0x9f, 0x91, 0x42, 0x15, 0xe7, + 0xf4, 0xc3, 0xe5, 0xdb, 0xde, 0x55, 0xf0, 0x0f, 0x3a, 0x9d, 0x98, 0xc1, 0x1a, 0xc7, 0x9c, 0xfc, + 0xff, 0x93, 0xf1, 0x1d, 0x80, 0x33, 0x39, 0xd0, 0xaa, 0xf5, 0x79, 0x58, 0xea, 0x52, 0x8f, 0x74, + 0xe2, 0xc9, 0x40, 0xa9, 0xc9, 0x58, 0x15, 0x4b, 0x6a, 0x0c, 0x54, 0xdc, 0xe5, 0xe5, 0xf8, 0x4c, + 0xc9, 0xe1, 0xe0, 0x9d, 0x57, 0x94, 0x63, 0x06, 0x42, 0x59, 0x7e, 0xdd, 0xc3, 0x1c, 0x4b, 0xe8, + 0x69, 0xa7, 0x22, 0xbf, 0x2c, 0x63, 0x8e, 0x8d, 0x7b, 0xaa, 0xd9, 0xb3, 0x85, 0x55, 0xb3, 0x08, + 0x16, 0x65, 0x26, 0x90, 0x99, 0xf2, 0xd9, 0xf8, 0x1c, 0x6a, 0x32, 0x69, 0xad, 0x8b, 0x43, 0xfe, + 0xdf, 0xf2, 0x59, 0x83, 0x7a, 0x6e, 0xe9, 0xa1, 0xfc, 0x09, 0x46, 0x76, 0xe3, 0xe5, 0x40, 0xaf, + 0x91, 0xc0, 0xa5, 0x9e, 0x1f, 0xb4, 0xad, 0x2f, 0x19, 0x0d, 0x4c, 0x07, 0xef, 0xac, 0x12, 0xc6, + 0x84, 0x96, 0x11, 0xdf, 0xbb, 0xb0, 0xaa, 0x66, 0x79, 0xfc, 0xc1, 0x31, 0x9e, 0x4f, 0xc0, 0xaa, + 0x08, 0x4c, 0xdd, 0x8a, 0xb7, 0x33, 0xd1, 0x76, 0xf5, 0x68, 0xa0, 0x97, 0x64, 0xd8, 0xf2, 0xc9, + 0x40, 0x9f, 0xf0, 0xbd, 0xe1, 0xc1, 0xab, 0xc1, 0x29, 0x37, 0x24, 0x98, 0xd3, 0x50, 0x76, 0x57, + 0x71, 0xe2, 0x57, 0xb4, 0x0a, 0x2b, 0x82, 0xce, 0xfa, 0x26, 0x66, 0x9b, 0xb5, 0x2b, 0x92, 0xfd, + 0xfc, 0xcb, 0x81, 0x3e, 0xd7, 0xf6, 0xf9, 0xe6, 0x56, 0xcb, 0x74, 0x69, 0xd7, 0xea, 0xf8, 0x01, + 0xb1, 0x28, 0x13, 0x5d, 0xd3, 0xc0, 0xea, 0xf8, 0x2d, 0x66, 0xb5, 0xfa, 0x9c, 0x30, 0x73, 0x85, + 0xec, 0xda, 0xe2, 0xc1, 0x29, 0x8b, 0x12, 0x2b, 0x98, 0x6d, 0xa2, 0x4f, 0xe1, 0x5b, 0x7e, 0xc0, + 0x38, 0x0e, 0xb8, 0x8f, 0x39, 0x59, 0xef, 0x91, 0xb0, 0xeb, 0x33, 0x26, 0x06, 0xac, 0x34, 0xe2, + 0x62, 0x7e, 0xe0, 0xba, 0x84, 0xb1, 0x25, 0x1a, 0x6c, 0xf8, 0x6d, 0x35, 0x9d, 0x6f, 0x26, 0xd2, + 0x9f, 0x0c, 0xb3, 0xa3, 0x9b, 0xf9, 0x71, 0xb1, 0x5c, 0xac, 0x4e, 0x3e, 0x2e, 0x96, 0x27, 0xab, + 0x25, 0x63, 0x1f, 0xbe, 0x91, 0xd0, 0x4f, 0x49, 0xb2, 0x2c, 0x2e, 0x00, 0x21, 0x89, 0xb0, 0x02, + 0x20, 0x11, 0x67, 0x32, 0x57, 0x64, 0x5a, 0x44, 0xbb, 0x3c, 0xb4, 0x82, 0xb2, 0xab, 0xd6, 0x50, + 0x43, 0x6d, 0xa6, 0x1c, 0x04, 0xbb, 0x7c, 0x32, 0xd0, 0xe5, 0x7b, 0xb4, 0x71, 0xca, 0x24, 0xd6, + 0x12, 0xf0, 0x2c, 0xde, 0xbf, 0xf4, 0x31, 0x07, 0xaf, 0x7c, 0xcc, 0x5f, 0x00, 0x88, 0x92, 0x55, + 0x55, 0x57, 0x36, 0x84, 0xc3, 0xae, 0xe2, 0xf3, 0x3d, 0xa6, 0xad, 0x48, 0xcc, 0x4a, 0xdc, 0xd2, + 0xe5, 0x4f, 0xfb, 0xe2, 0x57, 0x15, 0x38, 0x29, 0xb9, 0xa1, 0x6f, 0x00, 0x9c, 0x4e, 0x5a, 0x2a, + 0x4a, 0xbb, 0x50, 0x9e, 0xfb, 0xd7, 0x6f, 0x8d, 0x0b, 0x8b, 0x50, 0x8d, 0xe6, 0xd7, 0xbf, 0xff, + 0xfd, 0xfd, 0x84, 0x81, 0x66, 0xa3, 0xc9, 0x8b, 0x7f, 0x64, 0xc4, 0x17, 0xb9, 0xb5, 0xa7, 0x8e, + 0xed, 0x3e, 0xfa, 0x11, 0xc0, 0xd7, 0x33, 0x5e, 0x89, 0x9a, 0xf9, 0x28, 0x69, 0x23, 0xaf, 0xdf, + 0xbe, 0x40, 0xa4, 0xa2, 0x34, 0x2f, 0x29, 0xdd, 0x41, 0xcd, 0x71, 0x94, 0xac, 0x4d, 0x45, 0xe3, + 0x87, 0x04, 0x35, 0x65, 0x53, 0xe7, 0x51, 0x4b, 0x3b, 0xe8, 0x79, 0xd4, 0x32, 0x9e, 0x67, 0x98, + 0x92, 0x5a, 0x13, 0xdd, 0xca, 0x52, 0xf3, 0x88, 0xb5, 0xa7, 0xee, 0x87, 0x7d, 0xeb, 0xd4, 0x05, + 0x5f, 0x00, 0x58, 0xcd, 0xba, 0x08, 0x1a, 0x81, 0x97, 0x63, 0x72, 0xf5, 0x3b, 0x17, 0x09, 0x1d, + 0xc7, 0xed, 0x8c, 0x6c, 0x4c, 0xd2, 0xf8, 0x09, 0xc0, 0x6a, 0xf6, 0xd2, 0x1f, 0xc5, 0x2d, 0xc7, + 0x71, 0x46, 0x71, 0xcb, 0xf3, 0x10, 0xe3, 0xbe, 0xe4, 0x66, 0xa2, 0xb9, 0xf3, 0x68, 0x85, 0x78, + 0xc7, 0xda, 0x3b, 0xb5, 0x86, 0x7d, 0xf4, 0x2b, 0x80, 0xe8, 0xac, 0x0d, 0xa0, 0xbb, 0x67, 0x81, + 0x73, 0x7d, 0xa8, 0x3e, 0x77, 0xb1, 0x60, 0xc5, 0xf3, 0x3d, 0xc9, 0x73, 0x1e, 0x99, 0xe7, 0xca, + 0x27, 0xf2, 0xd3, 0x4c, 0x9f, 0xc2, 0xa2, 0x1c, 0xba, 0x99, 0x51, 0xa3, 0x74, 0x3a, 0x69, 0x5a, + 0xde, 0xb2, 0x82, 0xbf, 0x29, 0xe1, 0x35, 0xd4, 0x38, 0x6f, 0xbc, 0x90, 0x07, 0x27, 0xe5, 0x95, + 0x85, 0x72, 0xca, 0xc5, 0x37, 0x64, 0x5d, 0xcf, 0x5d, 0x57, 0x78, 0x75, 0x89, 0x77, 0x0d, 0xa1, + 0xb3, 0x78, 0xf6, 0x47, 0x07, 0x7f, 0x69, 0x85, 0xdf, 0x8e, 0xb4, 0xc2, 0xc1, 0x91, 0x06, 0x0e, + 0x8f, 0x34, 0xf0, 0xe7, 0x91, 0x06, 0x9e, 0x1f, 0x6b, 0x85, 0xc3, 0x63, 0xad, 0xf0, 0xc7, 0xb1, + 0x56, 0xf8, 0xe2, 0x66, 0xd6, 0xb6, 0x3a, 0xad, 0xee, 0xbb, 0xcc, 0x7b, 0x6a, 0xed, 0x46, 0x95, + 0xe4, 0x1f, 0x95, 0x56, 0x49, 0xfe, 0x53, 0xb9, 0xf7, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb2, + 0x00, 0x30, 0x31, 0x42, 0x0d, 0x00, 0x00, } func (this *QueryContractInfoResponse) Equal(that interface{}) bool { diff --git a/x/wasm/types/query.pb.gw.go b/x/wasm/types/query.pb.gw.go index fc02f098d3..521bc11378 100644 --- a/x/wasm/types/query.pb.gw.go +++ b/x/wasm/types/query.pb.gw.go @@ -914,21 +914,21 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie } var ( - pattern_Query_ContractInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"wasm", "v1", "contract", "address"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ContractInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"line", "wasm", "v1", "contract", "address"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_ContractHistory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"wasm", "v1", "contract", "address", "history"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ContractHistory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"line", "wasm", "v1", "contract", "address", "history"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_ContractsByCode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"wasm", "v1", "code", "code_id", "contracts"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_ContractsByCode_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"line", "wasm", "v1", "code", "code_id", "contracts"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_AllContractState_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"wasm", "v1", "contract", "address", "state"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_AllContractState_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"line", "wasm", "v1", "contract", "address", "state"}, "", runtime.AssumeColonVerbOpt(true))) pattern_Query_RawContractState_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"wasm", "v1", "contract", "address", "raw", "query_data"}, "", runtime.AssumeColonVerbOpt(true))) pattern_Query_SmartContractState_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"wasm", "v1", "contract", "address", "smart", "query_data"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_Code_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"wasm", "v1", "code", "code_id"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_Code_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"line", "wasm", "v1", "code", "code_id"}, "", runtime.AssumeColonVerbOpt(true))) - pattern_Query_Codes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"wasm", "v1", "code"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Query_Codes_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"line", "wasm", "v1", "code"}, "", runtime.AssumeColonVerbOpt(true))) ) var ( From 8e15ff498ed5c0945d6055fd62285a07067b47ac Mon Sep 17 00:00:00 2001 From: loloicci Date: Tue, 15 Feb 2022 17:40:30 +0900 Subject: [PATCH 61/90] update wsamvm 0.16.0-rc3-testing --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index bd1e89c6f3..99fe9f1361 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( github.com/line/iavl/v2 v2.0.0-init.1.0.20211019080724-001e2272a25d github.com/line/ostracon v1.0.2 github.com/line/tm-db/v2 v2.0.0-init.1.0.20211202001648-945e88fd2edf - github.com/line/wasmvm v0.16.0-rc2-testing + github.com/line/wasmvm v0.16.0-rc3-testing github.com/magiconair/properties v1.8.5 github.com/mailru/easyjson v0.7.7 github.com/mattn/go-isatty v0.0.14 diff --git a/go.sum b/go.sum index d22c120e9e..0b81bb9465 100644 --- a/go.sum +++ b/go.sum @@ -504,8 +504,8 @@ github.com/line/tm-db/v2 v2.0.0-init.1.0.20210413083915-5bb60e117524/go.mod h1:w github.com/line/tm-db/v2 v2.0.0-init.1.0.20210824011847-fcfa67dd3c70/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= github.com/line/tm-db/v2 v2.0.0-init.1.0.20211202001648-945e88fd2edf h1:Pg6wSHMii2zYusYbCHkaeozDgFqfJZWnkjjHPNG9BgA= github.com/line/tm-db/v2 v2.0.0-init.1.0.20211202001648-945e88fd2edf/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= -github.com/line/wasmvm v0.16.0-rc2-testing h1:8UnwA1xUKdeGJi9+bFbbRl3e5iQHxJhUYEI3XsjabtU= -github.com/line/wasmvm v0.16.0-rc2-testing/go.mod h1:cgsILoCDigfQ2XplFI4rOo2ImOLEZH/OM8sulxGoKUA= +github.com/line/wasmvm v0.16.0-rc3-testing h1:8XPK31cu2AI3h6g8i807Jbnc2X3eumN9sD7zfVa7haU= +github.com/line/wasmvm v0.16.0-rc3-testing/go.mod h1:cgsILoCDigfQ2XplFI4rOo2ImOLEZH/OM8sulxGoKUA= github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= From 687dfa811dae454f930e25d91384ed4172ac3cff Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Thu, 5 Aug 2021 15:19:25 +0200 Subject: [PATCH 62/90] Add contract features to debug logging (cherry picked from commit ccd075200f704c39ae619d36be781092711bbd41) --- x/wasm/keeper/keeper.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 9d2c1f1f91..14479ec9bc 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -122,7 +122,6 @@ func NewKeeper( metrics: NopMetrics(), gasRegister: NewDefaultWasmGasRegister(), } - keeper.wasmVMQueryHandler = DefaultQueryPlugins(bankKeeper, stakingKeeper, distKeeper, channelKeeper, queryRouter, keeper).Merge(customPlugins) for _, o := range opts { o.apply(keeper) @@ -237,16 +236,21 @@ func (k Keeper) create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, } ctx.GasMeter().ConsumeGas(k.compileCosts(ctx, len(wasmCode)), "Compiling WASM Bytecode") - codeHash, err := k.wasmVM.Create(wasmCode) + checksum, err := k.wasmVM.Create(wasmCode) + if err != nil { + return 0, sdkerrors.Wrap(types.ErrCreateFailed, err.Error()) + } + report, err := k.wasmVM.AnalyzeCode(checksum) if err != nil { return 0, sdkerrors.Wrap(types.ErrCreateFailed, err.Error()) } codeID = k.autoIncrementID(ctx, types.KeyLastCodeID) + k.Logger(ctx).Debug("storing new contract", "features", report.RequiredFeatures, "code_id", codeID) if instantiateAccess == nil { defaultAccessConfig := k.getInstantiateAccessConfig(ctx).With(creator) instantiateAccess = &defaultAccessConfig } - codeInfo := types.NewCodeInfo(codeHash, creator, *instantiateAccess) + codeInfo := types.NewCodeInfo(checksum, creator, *instantiateAccess) k.storeCodeInfo(ctx, codeID, codeInfo) return codeID, nil } From cff49659ed3cccf5e731b1cde585f84cde656ca3 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 5 Aug 2021 18:53:07 +0200 Subject: [PATCH 63/90] update test contracts to cosmwasm v0.16.0 --- x/wasm/keeper/testdata/burner.wasm | Bin 126265 -> 126265 bytes x/wasm/keeper/testdata/hackatom.wasm | Bin 178231 -> 178231 bytes x/wasm/keeper/testdata/hackatom.wasm.gzip | Bin 62501 -> 62309 bytes x/wasm/keeper/testdata/ibc_reflect.wasm | Bin 283891 -> 283913 bytes x/wasm/keeper/testdata/ibc_reflect_send.wasm | Bin 287976 -> 287976 bytes x/wasm/keeper/testdata/reflect.wasm | Bin 272713 -> 272713 bytes x/wasm/keeper/testdata/staking.wasm | Bin 235823 -> 235824 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/x/wasm/keeper/testdata/burner.wasm b/x/wasm/keeper/testdata/burner.wasm index 2a375063e9eaa67d47b560ec4b970f74a68c0b68..404a457f52ee311995ece8619af2ef2d165e3529 100644 GIT binary patch delta 1126 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 J*+7m3{0|D0NmT#< delta 1879 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 literal 62501 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

;t(IY=}s)DWaARg;!G69f+_M_d*W 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 diff --git a/x/wasm/keeper/testdata/ibc_reflect.wasm b/x/wasm/keeper/testdata/ibc_reflect.wasm index 6c18eda85144be2129fd477b680a903072124776..a54a4c933cba17741353a4c026dfdff84306ad10 100644 GIT binary patch delta 52909 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 delta 52855 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 n_`dk-jz9U&z+Yqhapwf!GdbRh^uFn_)Ey{ewt diff --git a/x/wasm/keeper/testdata/ibc_reflect_send.wasm b/x/wasm/keeper/testdata/ibc_reflect_send.wasm index 197f7419345f87e361e4a1af9a14ebd0d494f10b..252341ca02b03853eb87bc03d1cb238da328ca18 100644 GIT binary patch delta 4581 zcmbtXd3aPs5}&GmnaMes3FJPQ36qPQl4MY>Ff56SB1u#(4-D)k#E1xTWj8?*j<5+3 z5?X1_AcCA?0uOm0s33wO%7OwakwZm576dfP9k%*S!0i6(eBVrW9bLcbs_O2V^ZTvm z_gkCxLJ*ovh!z9{Pz;DP02q-sL+=itNP<4Z)cJsF5|*J7*<z?t<7jPIpf)8O2ya&hdZI}-qz;1XScEOvl5gK7FY=G4; z^cp;K1Fn;F=xMBBL%GW%AJ(dU%>97x2`z*VL{uPqiGOO!=U*P&&Y$i023Y3@ehX&x zL|_>N-d?oJ5RV2Y#@m<;oS0!_F5tCkz4-dzBkFvQPXLyavEHCwvi1S6@{|sf)Ns!c z41)L+pB()+UA^Wr7a&-j={EuYu;}Tw*pVzEH(Op;aM}mi%&}*}a56lVWpZE6S%d@?>F?%u@$;}CA z<1~`7+?@5`P;cg3XGHw^$m3)$=g~X#+i$>v@Y+|&Y6w|<9mr~5@ae`3L|uUrhZqyj z()nX)33z*vTAJnsH1g84M)leNPo{S5+8@-u-OeeJo7l5e?V0d_LIAgu=jyHp@z+!S zNg&~=--jQlClK2`*L`dTo4*rv7=t=FeF?xQwL@kqs&{jrVz}Wo_30-p6hd|M;7m_2 z^Q9v*__5*sl$38q#)9fwFb`?IbYvQnjvXxYH)2(tdg_HB53H(JuZ@jF3jBAk#H+o= zpJbfPO5t^rJ=B4de|Hlvmj!@@D!<2BT|PqRluz+Bxn|ao*M9tPbp|h= z62O~gq^LWmOouj$-FZ^E7kF}*mBy9Qsl1?KK7Xk40p7VX2m;jZmE+xt&C^2pSJf%J zd73XznQoL;^!b?SCJ5BMSUFvK@u0=C#MM+uh>8tdAtjaoK5j-9ubq;@PtMStQeT{z zD{c1ROJ@6m6n9g5%o-#&TVI_+jQZ;CJfP+Y-M<%S`tXLDGJRe<+t07{Uu4ouQEvx`0PgqtM5_03K&ua}i#r%I_~RF1somV7Ciw`DlO4*v7jIYHxWEZdI`qh%fXGFeGr zW0r9uzaDbcQ(B!l^``~93<(B9Hv@@WmJ-+Z?P-ef@%Ho=3)F^vcaS_>x_<~c*RsC} z%wLd(tCI~~=k1FKT4EBd~KKRy9THJW6Kt{)MhnqWyHrLxB}w=Z&`>5Van37sk>06j5Y^Nwo5W5uOHz_K*o8D83pQazUHMJ_|I^xwG6! z)n2v2TVzhSLV=Q@@ld!(M^vncg=B4G6y2`G9A$%tq%XwWK$aehgC0oi>IC@Bhv=!9 z1VnVR6V}PK1F|4dH1&X3aEJz)YuFR|Q$nRcVi0eMm)l&R$n6h{X&x~Ol0`udC|dX< zAh)TNKMGmW+KWYyqFu;^Ldnd_2j~AY1u-+VydiK$A&r60z;FfP#Kr=kTWsqH7)=Ez zjl4}vLV1mJHje^f2^u5Igiewy6Xjl+jM1Jeg zJmm$)MMVSj5lKs7i3nK&N5z}Vi1(i*;1Zt8h&QzXPHDroKoymcIK2b*k@+<{p%%1f zUxz3ekMdP;$vq^A1#dzbDFm#B^D@e}8et_3%bVZ{;{MtMMNEu!vPZ<)YU6Z&g_O?_?4}f#lBBSzV36VW5F{P>#t=rJ(Q(3ih&bH+Z0!e z$U96WTdaM27@~p33txcUBWpLkX7L7tQ$MC5C9ds6w?DR<+S7Dw*R`itEYu$P8j2at zSS+?QLsDSNy@$F2Y(`fFJ!M5Uqo_MeK?(g9MoZYL6EN@3!#?=~+&~GNdlr&9w1@R@ z!)mo>sb3+yznq6(l|Q}BiI*T&$6Iz8(gN<|70@nE)9qBGow^KPNjU8)L@4c3Q0z{@ zGkOXx{04s~rQF}idx#SKZ$JUvtJ;PeGOw}X`xzT452yh@-9W zq|{Bk3l4ePY59oV6(|&QjJO|Kw818{GBAr`Z#?g_m$F1XisEVl(aVbY;w>LM_@{%g z-539!&2$lr(rk+pj7-d0=qz|Ha-GJ%A4s} zCzLl+ybTx0ePzX9n)XXH4v^Oz5mwp3h{qGK)qJk5?dGTU#}XrkcR~65Xq&p=c!nqD zYq2S~$w+`-XJEM$49>(7fJtJvlK>}a7oB)sUZqESp+>gn_QtvNAZX!zah9jV_;~4ixv~&RGNrR-(i{WSUwB$St0E%v(e0*4u^;SIy)1XLucMwjK z>FzZIsf8}q`VPg73O&**#s!L(!q7u_KZ|<03Z5kxm?*v)POeSV@HwPc*`d{r#2=-L z6Q0*yOe(=wOy;Zd!HXkj7V6Gy8|QY$`(=Du&-kc`$n_$;JsHEHMTC@MF%*l+QoKSg zy!;Prq@p4hLftO(DR;ZDpd6DuDB#&MF;Tl*iG!pAL~QXkZ<|kuF@$(s545SyjX10h zZ8~BZ$6~x+%|<6u-)o~mHmWV+=4&`v0x!VxK-qYDA<7O#+p!S2QBLxf<4J@PE%gm# z^8S0tizSNTD{+(gExFTJ!u?vd7b0>M_LmEaS7ERbH*u|UJyJI?UQFFcQ5&zV-$)xL zr+YWyYFRoorfGpHzDzq2d7lumZ7XIobCv8`WZ7590BSz(qCfQ%;>3Gs*Lv>6LJ!~0 zHYFY_6c;?~2V%sB7%KMd#(DH=4gL`2t99{1Tm|&p)PIDdWzDvJtk*1I^h5toWwCr` zxMyFi{1j_tO`JP~QIw9y58y;f$0rByJBrHs&#;GHF>O-gVJX$h4`Y+`i2wq%zDMZX zm_M6GX1mM7ss|(W7>;jebls>l1*z$9Xvcm>qs-8WYgk4J8+IMv1M`1mG@~g= z6}n%Jo0u(=^ukU24er;3;zasGVWUC*g=!I#Z{q~o=Ed9iZ;80G)r}Z&7b|td;$1wU3_a^Cc!YF7AT$!V-Y@oJo#&c zHI$talfEI*%>Naw7xO|`CA=l_gV{=PC6wig6=5tGYe8HMWg)^G!X}BcHWuTPEdK_f z%TeM=7D09v4=EzcPLDOIcf=|trrDVjQpI*VOE(K_hyISZWM>aUn(*z!lEjE;*3ik{ z-GI1!OQ`**X6=->fzL)JuG(3UXsu>OaWaf~iJqa%M_i6#5s;>lkpd8RqnS6JM)87; zrBlPU+{V(xwlMY-JRl0f2_-9>`tGiBJ^<3)tZ#@V0>W9ch>d8Qc^Q3ZM;%LC8KOLb zB|?VS7|ERCOGg)f(rhzEC@QY&JZkAIFj3VSr37IGsN3jkt zM~mysB8+fE(nlUgA=$(m`B~Q#y%{97=$g8%sYl3l@#>inq8M zqx5x?H8D!Gm>REG#Cs0K)XqwFjN*Tv%n*LDB)#KMtWw!uM8@4yJ{qGuC?OLhc#zl; zM;;Jvut;|(ky6=HoQhM7rpF8aR`~p+LSc_nB8-1|X-v`cqo^HI;^a?|RI#|xvg4H` z;fPZlZY#|W#m_xE6t7IMdK%mxXd4x6P=fNYDKe`a-%j&v`gWwRLf;&*>(bb=F>| z^Mrfn3HR1dz}tili0A+aAn9lZ00soP1JXSunhW~F0YQnzN|e$D0mcxf|1U`T^*abV`ZP*QO z!8?$98z$X_JG7hoHP*9S*{07{zH~hf@F5@Q#b(Gm9kLxZyP`Co&6C~pePzezHYnL1 zZy~tL>0XKQATLjFSJJ)O06di6yvxw5Zf%>+f;uZYnwc4_*x$@-AiwVSrn1pEAHiD= za-Sm?esNIV@3@&(aqSai#i-xZ z46i5_|4IWy%3ICfK(JgNd<{b686iy&DjP#@8_%w6)7ipE{(`R96sCBFMd_7s86Qf- z>O1NUV%;{Xfmlj8Y9oD^Z+j+#>jgs7i!xva$(g2+P136y|k*i zu14Fd^<;2AGuV8KO+r(QTs7B2Zmo+|4$WNvcIEPla;qF&;i;E^ik%lXyIX*;zh zUJkACmVd5JP>O3Fw@bvx9kqVFC>^z~a_jV`PjT5HG( zN&cZWNp7n1keAMlmA|SJb~Y}0L|$2LQfgmK6{<_>QsmW(-Q=#?SYmWm(q4OB_@Z&q zlN#xRMg3%t`e%FPR@c|iZ1UpNem$>~dKWW9F^kEaD0c31iywHWeTiOPx}-mG3kS3> z5y&)CUVNjCLAY#g%oBmAZVUz(C~sc=Cy^!9jb%!qT%@NYIJNpJ{rkNgCtq2UPq{H- z?P8G|r#58M!rU~{QR7KeHf(bTqO`o-{BT<~H^nO*I|3X8z@5ETFdkn`wgyuMH89E` zdFZ}uv9)Yp9zv`9!~P|_^)o0?E~^d3xOL0hbWu88icUxIGZoub^j$j^+m`fQ*DY6? zj@?HxW&Md))3dDY*4bgMqXyypc(Z^EVR3!uh|#6PewQ$`M@xWM0=+BJ&(KNR)Ga9Y?|~ zzvc@cnC{CC#QD=*AO5}so9I<*`89zr)k8CckbEpJG{78^ykvlh5ULJwfI#x1N{VdI z%W=#EqF$Kp$EhpaVJE5MHa{SjtFj;5pjyE+YYakpXM778aLxe3v+(DYgL_!)8 zc~KPHa-sG7WCEgfhZUNI?C9Yzn75`u1cdS?nyWYzMpD?shQJ`&Iw!k2FP=FP*3vw% z2x55tlOU-9qd*)}t$GHA3vGWXgjn@@CKL!_RyJ7wpU8=rtY+oHeTg{!Gzsz~2;sZ( zfy&GN$uN!5Oeon+L_%3fJbR0Po4kw7ETf-f22(S-N}~FKnVE{!7b_ss2_kq)4RHG~ zh?mp~SMtwm;S-2djJZ|^4P=ZudlC2nl<;NskW9lT_3#Vr9$F07^aI^>W^pfw zKLNFnxw!UHz;qqe4;o>D6Yp9F=lEM2U^pMY4%YE48{i`UbUppeZ-UEwrj?E2)ra9- zHMJQAiqntZ1>f6;XkNM-Dhci8Zs-&~y>I}w&`@;{o+WDgK`3Nu-bPqR$;WHn0#ANt z8z{81^KDoPYVrs0Go6Gt$FL{(v^F?L^Qnof5;!lhupr)GWez;)Br!E}I0mwcAAt|3 zc_*L+_8+6`l#eQddYHradK;!iUR;Q3D|{~ zVA&sseeNpUMFE@nEkt|vh1J_()urFUK7sdmC;V6X!^fQcJw#}D8*W0p$3wh)I_1|? zp$gQ?H{nYGr~U+iQr{3vwTEDm7J}=y;LpUA`3qSO;e6y>$fqKz?zjs9RKfYD_dt|z zPV1TKYrld*g@C8^z#0hS=X&5d!8`aj2opt5%|=X>ppY*y;0fqfa~#l}E?Pd-89QCN z8mN4R5o9ayVeXjCce>!IKkS5quJ|_zKU=0IyJMjqeAM;c_z#3Fe5M~>rsHJ!V}-En z@BTO!U^ag`5C_3*wKNc?hyry!2t|Rim~o9b*YI$RSAPz{(W2VX!d>(@d~6i<7&r3X z>i?r?R(ReZ6nBlfXAqV$Y;9B{VsVdw052qAmDtEh#$td{e#AD70;t1k(D^m?abv$1sLJ$!bg%dH{L% zv21)w68X01d5nhw^}Xk@R)l+4E>c@vq>dPeyCk}iHrvFv5d#OPw2=V06L_ffBnh&a-f$7V)ClC~HaB zU5)|J&3!9yDiraW3jC2wnDtj|p`;=c{Ol$?R%JI~RTakQ$>ABV;$Zb=4L&anpv69C z<7ts6;e>ccbF@Q)9dUdEnl;2q8K>gIY&KYtdS5dQqLJ+8_f}%L0A7WiK+%}E8bv#z zzP}n}x}MjnSsU>ygz0MBW@Mre&TwLbdEOS>W4t5W9znPlL@&VyY{ij6VCq)%G2qY3 z)S7pYI)Vy5e;0YJLVaf!9h{6#Z^dmQb!d!Ny%d~9C*fJgX>njbW-#N96hd1CQD4C?9mZgF=pii7y9S#j3sy@uc&Z=p$w$$TA3K7}AcW@}MR9rEIEq_=Zk@)D zahk~4o=>%$C5$J~?UZOruIT8s()9B!f5)XFC%$XPffSChCvi4~IuLSA|2GfdMm zrgztHM(nCpXRuY+L;zmuh_m$G7=IF93aR2{)tnJ`9!vXZ{ph?VH{?tFNUO6w|I)w) zbZB65hXywLBAzw~q2AqstC~>9RjgzXrsjT!---yO|HmGorvG5K7NPY&BK01j>iJ*L zAR=_>Hda!=#^1riU_34C3ZWoXYj%a*!weCmSMK30c$gEC70r|rH1yYUqP!c+ph#}; z>A(LzzAr!z_1HlJf5RFLbfcb~q_p6a77@JBkzKN<#zo`ZRRs8ZR*ZLMT2^dzW+qoS z%ir~8jeRcoZ9K@2ZQ&Mw*3gIA%s2S58rL1*(m~(3^Fwtu6Ti8L`EYYRbK<*v*gk&L zk7e>X|72c#q7Mt?lYLnNclRfjgdjG7mj|;LejtdMA(pq9Sv1#+uf{n0e5{zq+vgh} z&XXX4-!ikoGz15;oCgeBgC8Hw|D}kf=@`!195g8ps|Y6%fSY#Uc9RLdI2p7U2>v zzBbVoCNMkwnFW%#dw^&}0$4I6^UVP)5f1XJ0qiMAn8p}xa7nC5-APfZV}Q8{B)#bV$)`n@}@}1o6iWB^n9m9>c?LXmyCQ`gybvO zQjAkxo<4cjUsF>@Xd|C#k^J?K&zN5LGT#&_c?!8m!5GCeEK&f!5kcys!lfkYHl-A1 ziAv{ZBBTJPtjRCEQcyOgv`El1gn$#@8bFjn25@o^a0Uh9F(?|52`Q7}jXqPc!b&aQ%0Qa>slm;QSQNb! z*xC+5L=eOW3is4^%Iu2v@R6z4`UNppagzD5*WT;>o^$Ms<=7cZ zV-pOrAnJ6e(P=b@2p|K19|E$YFpb_U3{waw&tg5824=fcQ^r1i2n(@-`D>llYN&;+ z@Bvi9cGv<8wn4VLhE3LnI7*-hO5uGdgH2El??Lui$TL zZPvJA$wr&xwnRJ%#)l*gz4~N+s2d+t&c}BE)bgfyWJ z27FEeT6xKGu(9on6y=wsjeanUtx72&tGd(+<_%?Jz(FcoG-N>eBeg|R5<_(ch*CyJ zt`ok08Z|~s;94xz+|F*sZ3?-ufn;nX(+vHcDnX?=VKmfCUyNX4&$vIKv&lV*O~|hsT1Xzq4s=;qN%;s;BeUGaVRc&)*v*~(Y|1W^H*QwE>oqEa=!Syb{{HQ6c+(#%jkcKY zV!cv=`d$%HMNfpeEuO3i8D`t#@t^LZ6AFB>h%N|dFi~+vu6mf=TB2i?T{1Z^i8VC% z^6AZ)FPGc*{^hl&MegiN5*1HsnrNW9-YQCB`}PM=%@6J`0*K_lO_D;C=MSs~7^-~# zS%Du-P}UdS0R$#|CyCAQ*bn(S0-v{r>COAZ5ZWACR~v1T2&KF82Iwomc!d^i0dL9! zE4Or@wnlf!Jg9MFvnB>LLv_ix*daRz%%nwE&xZUlABHHe{sDeAAB$fy76b7Re8t04 zaZB*P?P^1aj|Y;mS@012kf5ucAJD;K7@|h$fws^Pb(8^OwDvD)4aI6S4{5~m(YsyE z{ofy#s(JqKGzF!evOpu4KNd^NN|opmJ4Jmr2#z2USC$n@4dCFJ<6#6JWQW;c=YhG9 zsMg!z3(AoCVl<@Cu2FZ!!9oEoBS6x51*|+a8E9>)?qv8c(fHE8LA<&y1qzXn+ObeA z8|)5@!Ft_LBVTK$5+sfVt@^`w;KDOvUm?VZGf@qm1lK9~s_7}%K;oS23{sUWs3Rx5 zii>7JxlA1Pc`!#$9u(%l26~dWbvA+@zXsicT=y32mWlk^A+V~8O5ibCk!oWp+;1S* zvKhWJ5wWoj68X)IR*F&F(EVBVVCAT=icy)9W{L@It%Lm{bY2}qi;X(E0Vb~^2 z(Brs7TKvC(F>1{TxF*9ezWEGHBU<+v7)CIqV zX(k`Sj+(6Y+t;cf0K$je$s_k_=FC4 z%a-Sm()}gU`Zk&*qeJ5Whh)h!A^*1%gIU#;G5lN_o=}?~#oY*vJU1PkP_LG!<0xs$ zdYZZfjb@CesU2?D>-7Gs$!%`e?fy+}al5Ydf71~3^nZ7j^1&JS7}(T#8Tb>edY<+K zcEJ%fb~46`IzIg*rieI8pTcaw!u9ISr!mFo_l=m95I%e|zNH?SgWWP7DdTaI@j2D9 z7$XLlFRUkeIIV_06tgsLIgZhJm1ptOdAQM!3k4Bg1y}Pi!WZVydhe!4rlf0Jnq<@< zeXGQvKHc-pVxmtLK7S2%g9j|)pZo)-L!=s5fFA%w(XbX5(0>;nz8;3%~`@f_cTO8_sF@iCkvUsk{8C}xBu56iU9r5O6XPM4w_e0#9&pjeIn#GDQ0IC$V|aKM zMi|@FW~!Hia4|w=EO_wo1UwoFx=6$7PIBYxE;K~l8>YkkC#$Fbql#z#inK6!`LB4K zuW6?tb#kR0V|no<97T#hy@ZMUr*<5GH-LZJh0(?s>KO7M(oIfiFX4;kdv@x;*ua0B zB!%;U4m9x7t!U)Oe!(!Wey19A0h2(zd?T65RKrjA@Ct-)@ z8{~tPS-DI21*qK%vR}bFEUd7msQFMfRA`wl(dXM zNwgHlzlxG-LE*X4(l8$Hlnmd9Woz^i(tdAy*9`eatO6v*G~mY(D{d!%rE=E?=j^PX6-h+prP uBDl6&8s1Op#UAN#9@9(ed`dDn_DKs3dX4v|RhRWihJoNz|E|@ZjQl^#v~>0W delta 3440 zcmY*bdtB627N2u|^P7h=jKk9bM22VbQV=8_hD?a5wJN08W`$&^41_5wrmKsOSm~jH zSG`Lr&p^ab*kA3hhns-*(8$dCq}KXKe9*@oAU~E`T6=zs2s?k=bMHCdbMATG`5ilD zK6c97+6JRgYetn;iz*c&0)PeqK?L?0WYUg}#$+PWpRoyyZuY!M$tg2Ba6Q&D7j>j( z4U|J8?1DYe0Cn&d)Pg;)n$1*uTi=9I*bX~jCvf-&YyD~moqMHw7!#3h+=IZM&HDqb^;LFx6u&^KJ8>Exj*#Lf0bWW0*NPezJC$?bSg*Q;lPQ~+LS9G1uc#PN&o0{fGRoR2F?Phbn0vYK4!)> zPfKo(Cu+dTp2#RCi{~;fnGTneMJw4jqausa7nx@SDcX0Y2!X7`ngfB-57xgU1hFMS zg|way@~8DykPU*Q#NgS2N08BMunJ?bOjM_mkuuS44wCjf6p9cm9S!?kL*z(wg+Niv zjhmyy)I2c&AVlhl&j7MCCLxvl$WHj0_OXcvXn!fOjBMv8<&s$XD%q%z^OG{bd#B=P z7~OGE7#@1RC_R_DAEeB*ZorGcbE43bmoEnkQ_qm<=Pf~SXHVJRr?t&KflbNx0uN;; zZO&f=cy_DwbHNE9VL)XJGgj)@y+S(klu{2Nxf?5!bvmz(R!OVNrpv)!y%&1K{2hU^@ZP8T&P*C~cd_KPg*Z6EgeirfKC z`oJ2)zHjhhoy9fxQM0Q>R<*ZBTJv%pz(`ix7{g|-p8r7TqPf0-Zq%}xJ+W*MYgqFw zfLXeG#{^{do(O(PpovfvPn^oDNdkkHO#X)YFn|Ieb?a2ZtPKFsclSV zZq3nb@&S>Y^;|7A5-Q6RD)bP-Gtyu@ALS1Vz>m8YK(yTC z4@W6O@{6I6OfRs!FB}#r)I1&pty961hs6UuUa~zN{!22x^f8E#HzdP)B&IqA>O{St z6~|(eHqgM=`9m;|P64%iIt{qu8NrJbH9|(q?oYsNO1^BI16xU*(>MSb9-R}@fI{ezY_ zD?$9B!$`jB9{uC`$)?}otWpc&MR0c=rjyk}ZaAKo>F^lIGxaDbI_E|7;-lTL+9~fM z(W~yb!bEQV5rD_RS3Vwyvz4%YgRxbFRlF+~y)BhQXQi;i^iCZPp&R85=39tf;zhmTyJg42PoS`M$l%e>r%9z^!ADo0C+&vX<$nB5feuO4okdBeiDp#iC1Yy=kG+|LHRnkBMTkW=g(fL6` zTkN(2!_Q{Bt#SC78op}yd1pEInU2#SKwdZ<|3gnRPyG}2K#d$W6C;$G&3zJ+m4GVd zU>@McZSvi@m~7CTRp!E*kDH0F$)Dz+L&Tm69zGMFmd#5rV1()O3X=QLGtiI9+)Q4M zNm{4zEPiqoZr8lGl>h-w12N(XtM6>92~9+k%nuxFqR*B1Kq(xru`iq#dCZI z76P8$!jm{@u9Uy!sLU&$+=dbIBfD{uG7GC~Q5lsHb@;0?1>)P7sN{q&zRG$22biIy z%Ue2dEj^BM#1Sk~CZYNhe8cpi^1U^h-k5&ndrMCI6q_}I1ylJ$CAeIE>I7y1U3>6L zTq>AuDB1L)CTSYLMt+THBHWT+I)hE3VW{CM_;2TN_r1sL9w z+o@};l+17rS18Mo%4HEc194LGgH^oZ8ipFesj-L=Y$sIbHGI*_%Q?w`1G7zwP8nz9 z0oO2=EYH1$(em{l@p%*MaStFZ{*1?M=wEBD^UF@TqbgckYoZy0GI zORgS5Hj!l>!fqlaPvLbZGg$t}Q^+3)5)Tg%mhr8jLInRLL}-9_ctNNT1n2>u_lv`7;G diff --git a/x/wasm/keeper/testdata/staking.wasm b/x/wasm/keeper/testdata/staking.wasm index b9233005c5fdbc6e41cb5676bb39b2ccf272db97..9a278128126ba8c758d94a99ac873e7896078ff8 100644 GIT binary patch delta 3091 zcmY*b3tUuH8lV3;cSIOw7*;^uj)urn5fuz59e$=E&p}~T#M14xxIR%U^p{~iQ4~Dt zDQFXLdzh8V#jcwCLf6XID%FM_R;SY ze0;d##@+ZpqZ{WO^ien$mk?zJQQY-~8yCK8GUHHZv;7FU2^j1!ZN>1EvBN%N;TsY4 z4(|UA4Q0Mq~LcI`oUO|Amf6N9T zP$VbLMv(gV#03n&!klzD=uBCY!EUp0`z=F}HN<2y*enUmKy(d6#jr8raCjsd#I<4j z#I|8GdN6fQ&=&*RHqmkYd(5mMsW2sS*I}8cj>v;ibVM9hd1{Uu6~~ztCswBwz)N+er7&@M zYK$n)@DhK{aKKBnXT*uj3=i{<>&Tzc=5AkDWc4QQ0WxgQOcKsaFPFumSw>;YI^}W~ zE&Q^Bda=Unr+P58BYOpUnNEjst3wfWjz3WZXIivyI?{Ww_0!VSn%s=vHT|dhh%eJ( z#I&hpy|$LT9!^$XuVWFJZxQWz=3aSZzDutDHNQ`|aUy4$XYV=IPy41nyw&-$Ek^dj z7WKI&iWQT$jYqH?J0>dQ#rU~FV&L3RQc0M5ozZke&Oge?wsP5Uv2ck|gf809L#Zu` z2LDmuVZO4;RVLVd^fL9Br1csHElyFxmY&s9t6UZ@hCZ#Qq^n$dTCbLlMLct^2UEkJ zT?h7KnYy>6QK501w{i~kw|V6*#nQErLPSw#Pk;tdEnVG>&?e$V8VrdBgAMlnMfSse z>3X$lt!kvX$l7$yQmVe(T77iFXc}8xDjO@C z8S2%U+ZJPltmqTRT4b;6OH8!d#x8YKC6SI_( zwmp>2;&cUi>y<#}mu}+^nH3xKu~+n41{=4gs~2lH*hXxvI}++`u<7?kf9QIvxXH7Z z1M7aM@70BPiiW+_qIj=ew7yfVX78ix-XQkuuU8MNJE0cV7Xk;gFTgtJvdCu6CWs2{ zGeY;ev*qHegAN$gQHKsFYQ_8MdT}l`(RR4f_y#?W-cfK|eEZ>iOcIAqP8K^qY9-8i zdZ5^H;s?S?PQFK>5>8#fB-MJl(@gnhwhR+Q!z&CZB_KfJoeQG777*BPNCG7+CxF!@k_L@b_R+&9p4f2o9jWuRPoF7 zfjBM;OjwRd+IbUnt{mxwXgS`3KsnZoizM*1xC9yr-ti`Vrwvb&-n7B!B5BSL3?MV@ zvHQ^C#yU4?DbaWfIIevkgGFZDeG=#(+Nq=-y-Uf+;3SS7hheP$uJR^Btig~ZTDHe& zWp;GX9+fL5qLo12B--7RW!oftL>1okFd8izN!=bmZEx2HSeu`Q1^nL7Rk)bQK`yih zvhZ%7dAuuHXhndw_)+-Ka+d4n;1L9C-_1dxVmYCY_XwNO?&P}f+$XV~!&|l$A)7$- zTueZ|TsRk3*v4{g#@`TbBzEZ{lIF>eb>OWHUW~C|r4?F1F+3P0`NUEzP!K9xp2aLQ z$lB#7mT#0`H~eJoa%7=FBUVj6f~l)8i?*?>T?5+CI*5`R)*_V(aAqxD?O{b|RqK#X zeb+kH!w;5!=;a8e#^2I2m%e4lBUf|FaL|i_hE=(O-l)b>8GMlZ4XLKLrk{MR+7+4j z;}j}_^=-sykJq41uZW8ny9@K~5-qP{IbB38cQ+b!NE#REpxRIS@T`84C+lIM7ooQ7 z06vDL^Y?ehL46cuo(2cWUf1xmUdtWtQDhgeyV;ajgTFOj#vZ{BxTyIzBAvTiX$RHt zq9I&5o8T);n~+J>J=f%F!JwmL?V?iUzN4V6txHmO9K$WPvqHOl4AXhPueVT1LS*4d zlxhF@5K9X}!5LYW6PV;Lo@5iwhDfL|LOIaof`MzW#&CDskS*?sm6YVV$QnDwYsknU_#rD>tyfWfq%-H z>&TXI?Who_^I^X+`F=Y!L+PYoP3=flR>QPJp4-9vqD&PGW`ZdVYpm*1NX@jU6>)=e?_d!z6BfNs{Qv zpNZ1(DYB1}n|?(!M#;w8NRU6@(~!xx?`iX1?RZ&vo3!I~?FR`EHCTpp!=s0lAZK;M zCKu>|-|WT!V>wK3b7{Rv**Cw;`pM7^_{c}74j7}Y=%fxQTVUEOKR(8M<-qG0AQNxu zGD)%+`TR}1BBQ%7)D*A(hhp}yB73|n=%S7!$kkn#AnR^m3=(B46@#@fdF2->O1uod zLH+z!HwrECQxhv=wGd6^K1wY-nHbqHKvRN3eX(QR72wd0BPiIR_?9fgv>v85Z zqfU+}W{U{a7PE8Gy@Ywn6-$`Ej4fgAa(6KsqP@R_O*WE(M+v(Rb=vR}HZ%}FXj8Yb zf+MoZ!H3JY3iw!==-{JexPyDk{toUd%cszTFpG5N@+5h}!Tsg@DcnPrI(UHm#KDKk zgE@S#d^DHm%gqJcOJ?d0Tox;H`4o9Ihll7+t@3}mm(w}iChMl~rQR^~eERo7MT?lq i|JzR%=(=nsA8^-+yNoU1n&vx`pYcYbc6lDpjQ&5VAp3j( delta 3177 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 From 8219b1969c28a0ec123b044fd38c8716979d72c9 Mon Sep 17 00:00:00 2001 From: loloicci Date: Thu, 17 Feb 2022 19:11:43 +0900 Subject: [PATCH 64/90] update wasmvm to v0.16.3 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 10023468be..df6965d2e8 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,7 @@ require ( github.com/line/iavl/v2 v2.0.0-init.1.0.20220204054249-bc24184afa8c github.com/line/ostracon v1.0.2 github.com/line/tm-db/v2 v2.0.0-init.1.0.20220121012851-61d2bc1d9486 - github.com/line/wasmvm v0.16.0-rc3-testing + github.com/line/wasmvm v0.16.3-testing github.com/magiconair/properties v1.8.5 github.com/mailru/easyjson v0.7.7 github.com/mattn/go-isatty v0.0.14 diff --git a/go.sum b/go.sum index f7afae5440..2464c966e7 100644 --- a/go.sum +++ b/go.sum @@ -506,8 +506,8 @@ github.com/line/tm-db/v2 v2.0.0-init.1.0.20210413083915-5bb60e117524/go.mod h1:w github.com/line/tm-db/v2 v2.0.0-init.1.0.20210824011847-fcfa67dd3c70/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= github.com/line/tm-db/v2 v2.0.0-init.1.0.20220121012851-61d2bc1d9486 h1:uvXQdcWaUyNsgkXBz375FpQ285WEJaLXhQ5HtoNK/GU= github.com/line/tm-db/v2 v2.0.0-init.1.0.20220121012851-61d2bc1d9486/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= -github.com/line/wasmvm v0.16.0-rc3-testing h1:8XPK31cu2AI3h6g8i807Jbnc2X3eumN9sD7zfVa7haU= -github.com/line/wasmvm v0.16.0-rc3-testing/go.mod h1:cgsILoCDigfQ2XplFI4rOo2ImOLEZH/OM8sulxGoKUA= +github.com/line/wasmvm v0.16.3-testing h1:/PZKErQ9Ov9LhlQeJk9cKBocXiWRSF1Sd8lx/e2K0Fw= +github.com/line/wasmvm v0.16.3-testing/go.mod h1:cgsILoCDigfQ2XplFI4rOo2ImOLEZH/OM8sulxGoKUA= github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= From a219f280fea9a3f590d54a43f4e9976dfa824120 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Tue, 10 Aug 2021 18:19:16 +0200 Subject: [PATCH 65/90] Refactor events --- x/wasm/keeper/events.go | 14 -- x/wasm/keeper/events_test.go | 14 ++ x/wasm/keeper/keeper.go | 61 +++++- x/wasm/keeper/keeper_test.go | 9 +- x/wasm/keeper/msg_server.go | 39 +--- x/wasm/keeper/proposal_handler.go | 38 ++-- x/wasm/keeper/proposal_integration_test.go | 14 +- x/wasm/keeper/relay_test.go | 205 ++++++++------------- x/wasm/keeper/submsg_test.go | 5 +- x/wasm/module_test.go | 34 ++-- x/wasm/types/events.go | 39 ++-- 11 files changed, 221 insertions(+), 251 deletions(-) diff --git a/x/wasm/keeper/events.go b/x/wasm/keeper/events.go index 54555c7afb..fed59204ef 100644 --- a/x/wasm/keeper/events.go +++ b/x/wasm/keeper/events.go @@ -21,20 +21,6 @@ func newWasmModuleEvent(customAttributes []wasmvmtypes.EventAttribute, contractA return sdk.Events{sdk.NewEvent(types.WasmModuleEventType, attrs...)}, nil } -// returns true when a wasm module event was emitted for this contract already -func hasWasmModuleEvent(ctx sdk.Context, contractAddr sdk.AccAddress) bool { - for _, e := range ctx.EventManager().Events() { - if e.Type == types.WasmModuleEventType { - for _, a := range e.Attributes { - if string(a.Key) == types.AttributeKeyContractAddr && string(a.Value) == contractAddr.String() { - return true - } - } - } - } - return false -} - const eventTypeMinLength = 2 // newCustomEvents converts wasmvm events from a contract response to sdk type events diff --git a/x/wasm/keeper/events_test.go b/x/wasm/keeper/events_test.go index deb18bc51b..ea0c9b2e2e 100644 --- a/x/wasm/keeper/events_test.go +++ b/x/wasm/keeper/events_test.go @@ -251,3 +251,17 @@ func TestNewWasmModuleEvent(t *testing.T) { }) } } + +// returns true when a wasm module event was emitted for this contract already +func hasWasmModuleEvent(ctx sdk.Context, contractAddr sdk.AccAddress) bool { + for _, e := range ctx.EventManager().Events() { + if e.Type == types.WasmModuleEventType { + for _, a := range e.Attributes { + if string(a.Key) == types.AttributeKeyContractAddr && string(a.Value) == contractAddr.String() { + return true + } + } + } + } + return false +} diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 14479ec9bc..012c40e514 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -7,6 +7,8 @@ import ( "fmt" "math" "path/filepath" + "strconv" + "strings" "time" "github.com/line/lbm-sdk/codec" @@ -252,6 +254,16 @@ func (k Keeper) create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, } codeInfo := types.NewCodeInfo(checksum, creator, *instantiateAccess) k.storeCodeInfo(ctx, codeID, codeInfo) + + evt := sdk.NewEvent( + types.EventTypeStoreCode, + sdk.NewAttribute(types.AttributeKeyCodeID, strconv.FormatUint(codeID, 10)), + ) + for _, f := range strings.Split(report.RequiredFeatures, ",") { + evt.AppendAttributes(sdk.NewAttribute(types.AttributeKeyFeature, strings.TrimSpace(f))) + } + ctx.EventManager().EmitEvent(evt) + return codeID, nil } @@ -375,6 +387,11 @@ func (k Keeper) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.A return "", nil, sdkerrors.Wrap(err, "dispatch") } + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeInstantiate, + sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), + sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)), + )) return contractAddress, data, nil } @@ -418,6 +435,11 @@ func (k Keeper) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } + + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeExecute, + sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), + )) return data, nil } @@ -487,6 +509,12 @@ func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } + + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeMigrate, + sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", newCodeID)), + sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), + )) return data, nil } @@ -520,6 +548,11 @@ func (k Keeper) Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } + + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeSudo, + sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), + )) return data, nil } @@ -556,6 +589,11 @@ func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply was if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } + + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeReply, + sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), + )) return data, nil } @@ -617,6 +655,7 @@ func (k Keeper) setContractAdmin(ctx sdk.Context, contractAddress, caller, newAd } contractInfo.Admin = newAdmin.String() k.storeContractInfo(ctx, contractAddress, contractInfo) + return nil } @@ -827,6 +866,11 @@ func (k Keeper) pinCode(ctx sdk.Context, codeID uint64) error { store := ctx.KVStore(k.storeKey) // store 1 byte to not run into `nil` debugging issues store.Set(types.GetPinnedCodeIndexPrefix(codeID), []byte{1}) + + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypePinCode, + sdk.NewAttribute(types.AttributeKeyCodeID, strconv.FormatUint(codeID, 10)), + )) return nil } @@ -842,6 +886,11 @@ func (k Keeper) unpinCode(ctx sdk.Context, codeID uint64) error { store := ctx.KVStore(k.storeKey) store.Delete(types.GetPinnedCodeIndexPrefix(codeID)) + + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeUnpinCode, + sdk.NewAttribute(types.AttributeKeyCodeID, strconv.FormatUint(codeID, 10)), + )) return nil } @@ -893,7 +942,7 @@ func (k *Keeper) handleContractResponse( attributeGasCost := k.gasRegister.EventCosts(attrs, evts) ctx.GasMeter().ConsumeGas(attributeGasCost, "Custom contract event attributes") // emit all events from this contract itself - if len(attrs) != 0 || !hasWasmModuleEvent(ctx, contractAddr) { + if len(attrs) != 0 { wasmEvents, err := newWasmModuleEvent(attrs, contractAddr) if err != nil { return nil, err @@ -1133,7 +1182,9 @@ func NewBankCoinTransferrer(keeper types.BankKeeper) BankCoinTransferrer { // TransferCoins transfers coins from source to destination account when coin send was enabled for them and the recipient // is not in the blocked address list. -func (c BankCoinTransferrer) TransferCoins(ctx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error { +func (c BankCoinTransferrer) TransferCoins(parentCtx sdk.Context, fromAddr sdk.AccAddress, toAddr sdk.AccAddress, amt sdk.Coins) error { + em := sdk.NewEventManager() + ctx := parentCtx.WithEventManager(em) if err := c.keeper.SendEnabledCoins(ctx, amt...); err != nil { return err } @@ -1145,6 +1196,12 @@ func (c BankCoinTransferrer) TransferCoins(ctx sdk.Context, fromAddr sdk.AccAddr if sdkerr != nil { return sdkerr } + for _, e := range em.Events() { + if e.Type == sdk.EventTypeMessage { // skip messages as we talk to the keeper directly + continue + } + parentCtx.EventManager().EmitEvent(e) + } return nil } diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 5752d37f60..4849c439f5 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -1084,9 +1084,16 @@ func TestMigrateWithDispatchedMessage(t *testing.T) { {"module": "bank"}, }, }, + { + "Type": "migrate", + "Attr": []dict{ + {"code_id": "2"}, + {"_contract_address": contractAddr}, + }, + }, } expJSONEvts := string(mustMarshal(t, expEvents)) - assert.JSONEq(t, expJSONEvts, prettyEvents(t, ctx.EventManager().Events())) + assert.JSONEq(t, expJSONEvts, prettyEvents(t, ctx.EventManager().Events()), prettyEvents(t, ctx.EventManager().Events())) // all persistent data cleared m := keepers.WasmKeeper.QueryRaw(ctx, contractAddr, []byte("config")) diff --git a/x/wasm/keeper/msg_server.go b/x/wasm/keeper/msg_server.go index e1f79c2d4d..489102f29a 100644 --- a/x/wasm/keeper/msg_server.go +++ b/x/wasm/keeper/msg_server.go @@ -2,8 +2,6 @@ package keeper import ( "context" - "encoding/hex" - "fmt" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" @@ -36,10 +34,6 @@ func (m msgServer) StoreCode(goCtx context.Context, msg *types.MsgStoreCode) (*t sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) - ctx.EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeStoreCode, - sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)), - )) return &types.MsgStoreCodeResponse{ CodeID: codeID, @@ -71,12 +65,6 @@ func (m msgServer) InstantiateContract(goCtx context.Context, msg *types.MsgInst sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) - ctx.EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeInstantiateContract, - sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", msg.CodeID)), - sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddr.String()), - sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), - )) return &types.MsgInstantiateContractResponse{ Address: contractAddr.String(), @@ -101,10 +89,6 @@ func (m msgServer) StoreCodeAndInstantiateContract(goCtx context.Context, sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) - ctx.EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeStoreCode, - sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)), - )) var adminAddr sdk.AccAddress if msg.Admin != "" { @@ -120,12 +104,6 @@ func (m msgServer) StoreCodeAndInstantiateContract(goCtx context.Context, return nil, err } - ctx.EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeInstantiateContract, - sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)), - sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddr.String()), sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), - )) - return &types.MsgStoreCodeAndInstantiateContractResponse{ CodeID: codeID, Address: contractAddr.String(), @@ -154,11 +132,6 @@ func (m msgServer) ExecuteContract(goCtx context.Context, msg *types.MsgExecuteC sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) - ctx.EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeExecuteContract, - sdk.NewAttribute(types.AttributeKeyContractAddr, msg.Contract), - sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), - )) return &types.MsgExecuteContractResponse{ Data: data, @@ -186,12 +159,6 @@ func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateC sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) - ctx.EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeMigrateContract, - sdk.NewAttribute(types.AttributeKeyContractAddr, msg.Contract), - sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", msg.CodeID)), - sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), - )) return &types.MsgMigrateContractResponse{ Data: data, @@ -223,10 +190,6 @@ func (m msgServer) UpdateAdmin(goCtx context.Context, msg *types.MsgUpdateAdmin) sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) - ctx.EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeUpdateAdmin, - sdk.NewAttribute(types.AttributeKeyContractAddr, msg.Contract), - )) return &types.MsgUpdateAdminResponse{}, nil } @@ -252,7 +215,7 @@ func (m msgServer) ClearAdmin(goCtx context.Context, msg *types.MsgClearAdmin) ( sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) ctx.EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeClearAdmin, + types.EventTypeUpdateAdmin, sdk.NewAttribute(types.AttributeKeyContractAddr, msg.Contract), )) diff --git a/x/wasm/keeper/proposal_handler.go b/x/wasm/keeper/proposal_handler.go index 0fa5b66516..4d458ac03d 100644 --- a/x/wasm/keeper/proposal_handler.go +++ b/x/wasm/keeper/proposal_handler.go @@ -2,7 +2,6 @@ package keeper import ( "encoding/hex" - "fmt" "strconv" "strings" @@ -62,17 +61,9 @@ func handleStoreCodeProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types if err != nil { return sdkerrors.Wrap(err, "run as address") } - codeID, err := k.Create(ctx, sdk.AccAddress(p.RunAs), p.WASMByteCode, p.InstantiatePermission) - if err != nil { - return err - } + _, err = k.Create(ctx, sdk.AccAddress(p.RunAs), p.WASMByteCode, p.InstantiatePermission) - ourEvent := sdk.NewEvent( - types.EventTypeStoreCode, - sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)), - ) - ctx.EventManager().EmitEvent(ourEvent) - return nil + return err } func handleInstantiateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.InstantiateContractProposal) error { @@ -88,18 +79,15 @@ func handleInstantiateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p typ return sdkerrors.Wrap(err, "admin") } - contractAddr, data, err := k.Instantiate(ctx, p.CodeID, sdk.AccAddress(p.RunAs), sdk.AccAddress(p.Admin), p.Msg, p.Label, p.Funds) + _, data, err := k.Instantiate(ctx, p.CodeID, sdk.AccAddress(p.RunAs), sdk.AccAddress(p.Admin), p.Msg, p.Label, p.Funds) if err != nil { return err } - ourEvent := sdk.NewEvent( - types.EventTypeInstantiateContract, - sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", p.CodeID)), - sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddr.String()), - sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), - ) - ctx.EventManager().EmitEvent(ourEvent) + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeGovContractResult, + sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)), + )) return nil } @@ -120,14 +108,10 @@ func handleMigrateProposal(ctx sdk.Context, k types.ContractOpsKeeper, p types.M if err != nil { return err } - ourEvent := sdk.NewEvent( - types.EventTypeMigrateContract, - sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), - sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", p.CodeID)), - sdk.NewAttribute(types.AttributeKeyContractAddr, p.Contract), - sdk.NewAttribute(types.AttributeResultDataHex, hex.EncodeToString(data)), - ) - ctx.EventManager().EmitEvent(ourEvent) + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeGovContractResult, + sdk.NewAttribute(types.AttributeKeyResultDataHex, hex.EncodeToString(data)), + )) return nil } diff --git a/x/wasm/keeper/proposal_integration_test.go b/x/wasm/keeper/proposal_integration_test.go index 973f1dd9df..e14cac72bd 100644 --- a/x/wasm/keeper/proposal_integration_test.go +++ b/x/wasm/keeper/proposal_integration_test.go @@ -120,9 +120,14 @@ func TestInstantiateProposal(t *testing.T) { }} assert.Equal(t, expHistory, wasmKeeper.GetContractHistory(ctx, sdk.AccAddress(contractAddr))) // and event - require.Len(t, em.Events(), 2, "%#v", em.Events()) + require.Len(t, em.Events(), 3, "%#v", em.Events()) + require.Equal(t, types.WasmModuleEventType, em.Events()[0].Type) + require.Equal(t, types.EventTypeInstantiate, em.Events()[1].Type) + require.Equal(t, types.EventTypeGovContractResult, em.Events()[2].Type) require.Len(t, em.Events()[0].Attributes, 2) - require.Len(t, em.Events()[1].Attributes, 3) + require.Len(t, em.Events()[1].Attributes, 2) + require.Len(t, em.Events()[2].Attributes, 1) + require.NotEmpty(t, em.Events()[2].Attributes[0]) } func TestMigrateProposal(t *testing.T) { @@ -206,7 +211,10 @@ func TestMigrateProposal(t *testing.T) { assert.Equal(t, expHistory, wasmKeeper.GetContractHistory(ctx, contractAddr)) // and events emitted require.Len(t, em.Events(), 2) - require.Len(t, em.Events()[1].Attributes, 4) + assert.Equal(t, types.EventTypeMigrate, em.Events()[0].Type) + require.Equal(t, types.EventTypeGovContractResult, em.Events()[1].Type) + require.Len(t, em.Events()[1].Attributes, 1) + assert.Equal(t, types.AttributeKeyResultDataHex, string(em.Events()[1].Attributes[0].Key)) } func TestAdminProposals(t *testing.T) { diff --git a/x/wasm/keeper/relay_test.go b/x/wasm/keeper/relay_test.go index 423e7c8b36..87c18a3f55 100644 --- a/x/wasm/keeper/relay_test.go +++ b/x/wasm/keeper/relay_test.go @@ -94,14 +94,13 @@ func TestOnConnectChannel(t *testing.T) { const myContractGas = 40 specs := map[string]struct { - contractAddr sdk.AccAddress - contractResp *wasmvmtypes.IBCBasicResponse - contractErr error - overwriteMessenger *wasmtesting.MockMessageHandler - expContractGas sdk.Gas - expErr bool - expContractEventAttrs int - expNoEvents bool + contractAddr sdk.AccAddress + contractResp *wasmvmtypes.IBCBasicResponse + contractErr error + overwriteMessenger *wasmtesting.MockMessageHandler + expContractGas sdk.Gas + expErr bool + expEventTypes []string }{ "consume contract gas": { contractAddr: example.Contract, @@ -117,7 +116,6 @@ func TestOnConnectChannel(t *testing.T) { }, contractErr: errors.New("test, ignore"), expErr: true, - expNoEvents: true, }, "dispatch contract messages on success": { contractAddr: example.Contract, @@ -132,7 +130,7 @@ func TestOnConnectChannel(t *testing.T) { contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, - expContractEventAttrs: 1, + expEventTypes: []string{types.WasmModuleEventType}, }, "messenger errors returned, events stored": { contractAddr: example.Contract, @@ -141,14 +139,13 @@ func TestOnConnectChannel(t *testing.T) { Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, - overwriteMessenger: wasmtesting.NewErroringMessageHandler(), - expErr: true, - expContractEventAttrs: 1, + overwriteMessenger: wasmtesting.NewErroringMessageHandler(), + expErr: true, + expEventTypes: []string{types.WasmModuleEventType}, }, "unknown contract address": { contractAddr: RandomAccountAddress(t), expErr: true, - expNoEvents: true, }, } for name, spec := range specs { @@ -179,16 +176,10 @@ func TestOnConnectChannel(t *testing.T) { err := keepers.WasmKeeper.OnConnectChannel(ctx, spec.contractAddr, msg) // then - events := ctx.EventManager().Events() if spec.expErr { require.Error(t, err) assert.Empty(t, capturedMsgs) // no messages captured on error - if spec.expNoEvents { - require.Len(t, events, 0) - } else { - require.Len(t, events, 1) - assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) - } + assert.Equal(t, spec.expEventTypes, stripTypes(ctx.EventManager().Events())) return } require.NoError(t, err) @@ -202,9 +193,7 @@ func TestOnConnectChannel(t *testing.T) { for i, m := range spec.contractResp.Messages { assert.Equal(t, (*capturedMsgs)[i], m.Msg) } - // verify events - require.Len(t, events, 1) - assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) + assert.Equal(t, spec.expEventTypes, stripTypes(ctx.EventManager().Events())) }) } } @@ -218,14 +207,13 @@ func TestOnCloseChannel(t *testing.T) { const myContractGas = 40 specs := map[string]struct { - contractAddr sdk.AccAddress - contractResp *wasmvmtypes.IBCBasicResponse - contractErr error - overwriteMessenger *wasmtesting.MockMessageHandler - expContractGas sdk.Gas - expErr bool - expContractEventAttrs int - expNoEvents bool + contractAddr sdk.AccAddress + contractResp *wasmvmtypes.IBCBasicResponse + contractErr error + overwriteMessenger *wasmtesting.MockMessageHandler + expContractGas sdk.Gas + expErr bool + expEventTypes []string }{ "consume contract gas": { contractAddr: example.Contract, @@ -241,7 +229,6 @@ func TestOnCloseChannel(t *testing.T) { }, contractErr: errors.New("test, ignore"), expErr: true, - expNoEvents: true, }, "dispatch contract messages on success": { contractAddr: example.Contract, @@ -256,7 +243,7 @@ func TestOnCloseChannel(t *testing.T) { contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, - expContractEventAttrs: 1, + expEventTypes: []string{types.WasmModuleEventType}, }, "messenger errors returned, events stored": { contractAddr: example.Contract, @@ -265,14 +252,13 @@ func TestOnCloseChannel(t *testing.T) { Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, - overwriteMessenger: wasmtesting.NewErroringMessageHandler(), - expErr: true, - expContractEventAttrs: 1, + overwriteMessenger: wasmtesting.NewErroringMessageHandler(), + expErr: true, + expEventTypes: []string{types.WasmModuleEventType}, }, "unknown contract address": { contractAddr: RandomAccountAddress(t), expErr: true, - expNoEvents: true, }, } for name, spec := range specs { @@ -302,16 +288,10 @@ func TestOnCloseChannel(t *testing.T) { err := keepers.WasmKeeper.OnCloseChannel(ctx, spec.contractAddr, msg) // then - events := ctx.EventManager().Events() if spec.expErr { require.Error(t, err) assert.Empty(t, capturedMsgs) // no messages captured on error - if spec.expNoEvents { - require.Len(t, events, 0) - } else { - require.Len(t, events, 1) - assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) - } + assert.Equal(t, spec.expEventTypes, stripTypes(ctx.EventManager().Events())) return } require.NoError(t, err) @@ -324,8 +304,7 @@ func TestOnCloseChannel(t *testing.T) { for i, m := range spec.contractResp.Messages { assert.Equal(t, (*capturedMsgs)[i], m.Msg) } - require.Len(t, events, 1) - assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) + assert.Equal(t, spec.expEventTypes, stripTypes(ctx.EventManager().Events())) }) } } @@ -347,10 +326,7 @@ func TestOnRecvPacket(t *testing.T) { expContractGas sdk.Gas expAck []byte expErr bool - // normally 0 on error, 1 on success, if we return custom events, this may be > 1 - expContractEvents int - // how many custom attributes are on the "wasm" event (not counting _contract_address) - expContractEventAttrs int + expEventTypes []string }{ "consume contract gas": { contractAddr: example.Contract, @@ -358,14 +334,12 @@ func TestOnRecvPacket(t *testing.T) { contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), }, - expAck: []byte("myAck"), - expContractEvents: 1, + expAck: []byte("myAck"), }, "can return empty ack": { - contractAddr: example.Contract, - expContractGas: myContractGas, - contractResp: &wasmvmtypes.IBCReceiveResponse{}, - expContractEvents: 1, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCReceiveResponse{}, }, "consume gas on error, ignore events + messages": { contractAddr: example.Contract, @@ -385,8 +359,7 @@ func TestOnRecvPacket(t *testing.T) { Acknowledgement: []byte("myAck"), Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, }, - expContractEvents: 1, - expAck: []byte("myAck"), + expAck: []byte("myAck"), }, "emit contract attributes on success": { contractAddr: example.Contract, @@ -395,9 +368,8 @@ func TestOnRecvPacket(t *testing.T) { Acknowledgement: []byte("myAck"), Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, - expContractEvents: 1, - expContractEventAttrs: 1, - expAck: []byte("myAck"), + expEventTypes: []string{types.WasmModuleEventType}, + expAck: []byte("myAck"), }, "emit contract events on success": { contractAddr: example.Contract, @@ -413,9 +385,8 @@ func TestOnRecvPacket(t *testing.T) { }}, }}, }, - expContractEvents: 2, - expContractEventAttrs: 1, - expAck: []byte("myAck"), + expEventTypes: []string{types.WasmModuleEventType, "wasm-custom"}, + expAck: []byte("myAck"), }, "messenger errors returned, events stored": { contractAddr: example.Contract, @@ -425,10 +396,9 @@ func TestOnRecvPacket(t *testing.T) { Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, - overwriteMessenger: wasmtesting.NewErroringMessageHandler(), - expErr: true, - expContractEvents: 1, - expContractEventAttrs: 1, + overwriteMessenger: wasmtesting.NewErroringMessageHandler(), + expErr: true, + expEventTypes: []string{types.WasmModuleEventType}, }, "submessage reply can overwrite ack data": { contractAddr: example.Contract, @@ -440,8 +410,8 @@ func TestOnRecvPacket(t *testing.T) { mockReplyFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { return &wasmvmtypes.Response{Data: []byte("myBetterAck")}, 0, nil }, - expAck: []byte("myBetterAck"), - expContractEvents: 1, + expAck: []byte("myBetterAck"), + expEventTypes: []string{types.EventTypeReply}, }, "unknown contract address": { contractAddr: RandomAccountAddress(t), @@ -478,14 +448,10 @@ func TestOnRecvPacket(t *testing.T) { gotAck, err := keepers.WasmKeeper.OnRecvPacket(ctx, spec.contractAddr, msg) // then - events := ctx.EventManager().Events() if spec.expErr { require.Error(t, err) assert.Empty(t, capturedMsgs) // no messages captured on error - require.Len(t, events, spec.expContractEvents) - if spec.expContractEvents > 0 { - assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) - } + assert.Equal(t, spec.expEventTypes, stripTypes(ctx.EventManager().Events())) return } require.NoError(t, err) @@ -500,8 +466,7 @@ func TestOnRecvPacket(t *testing.T) { for i, m := range spec.contractResp.Messages { assert.Equal(t, (*capturedMsgs)[i], m.Msg) } - require.Len(t, events, spec.expContractEvents) - assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) + assert.Equal(t, spec.expEventTypes, stripTypes(ctx.EventManager().Events())) }) } } @@ -515,14 +480,13 @@ func TestOnAckPacket(t *testing.T) { const myContractGas = 40 specs := map[string]struct { - contractAddr sdk.AccAddress - contractResp *wasmvmtypes.IBCBasicResponse - contractErr error - overwriteMessenger *wasmtesting.MockMessageHandler - expContractGas sdk.Gas - expErr bool - expContractEventAttrs int - expNoEvents bool + contractAddr sdk.AccAddress + contractResp *wasmvmtypes.IBCBasicResponse + contractErr error + overwriteMessenger *wasmtesting.MockMessageHandler + expContractGas sdk.Gas + expErr bool + expEventTypes []string }{ "consume contract gas": { contractAddr: example.Contract, @@ -538,7 +502,6 @@ func TestOnAckPacket(t *testing.T) { }, contractErr: errors.New("test, ignore"), expErr: true, - expNoEvents: true, }, "dispatch contract messages on success": { contractAddr: example.Contract, @@ -553,7 +516,7 @@ func TestOnAckPacket(t *testing.T) { contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, - expContractEventAttrs: 1, + expEventTypes: []string{types.WasmModuleEventType}, }, "messenger errors returned, events stored": { contractAddr: example.Contract, @@ -562,14 +525,13 @@ func TestOnAckPacket(t *testing.T) { Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, - overwriteMessenger: wasmtesting.NewErroringMessageHandler(), - expErr: true, - expContractEventAttrs: 1, + overwriteMessenger: wasmtesting.NewErroringMessageHandler(), + expErr: true, + expEventTypes: []string{types.WasmModuleEventType}, }, "unknown contract address": { contractAddr: RandomAccountAddress(t), expErr: true, - expNoEvents: true, }, } for name, spec := range specs { @@ -594,16 +556,11 @@ func TestOnAckPacket(t *testing.T) { err := keepers.WasmKeeper.OnAckPacket(ctx, spec.contractAddr, myAck) // then - events := ctx.EventManager().Events() + if spec.expErr { require.Error(t, err) assert.Empty(t, capturedMsgs) // no messages captured on error - if spec.expNoEvents { - require.Len(t, events, 0) - } else { - require.Len(t, events, 1) - assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) - } + assert.Equal(t, spec.expEventTypes, stripTypes(ctx.EventManager().Events())) return } require.NoError(t, err) @@ -617,9 +574,7 @@ func TestOnAckPacket(t *testing.T) { for i, m := range spec.contractResp.Messages { assert.Equal(t, (*capturedMsgs)[i], m.Msg) } - - require.Len(t, events, 1) - assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) + assert.Equal(t, spec.expEventTypes, stripTypes(ctx.EventManager().Events())) }) } } @@ -639,16 +594,12 @@ func TestOnTimeoutPacket(t *testing.T) { overwriteMessenger *wasmtesting.MockMessageHandler expContractGas sdk.Gas expErr bool - // normally 0 on error, 1 on success, if we return custom events, this may be > 1 - expContractEvents int - // how many custom attributes are on the "wasm" event (not counting _contract_address) - expContractEventAttrs int + expEventTypes []string }{ "consume contract gas": { - contractAddr: example.Contract, - expContractGas: myContractGas, - contractResp: &wasmvmtypes.IBCBasicResponse{}, - expContractEvents: 1, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCBasicResponse{}, }, "consume gas on error, ignore events + messages": { contractAddr: example.Contract, @@ -667,7 +618,6 @@ func TestOnTimeoutPacket(t *testing.T) { contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, }, - expContractEvents: 1, }, "emit contract attributes on success": { contractAddr: example.Contract, @@ -675,8 +625,7 @@ func TestOnTimeoutPacket(t *testing.T) { contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, - expContractEvents: 1, - expContractEventAttrs: 1, + expEventTypes: []string{types.WasmModuleEventType}, }, "emit contract events on success": { contractAddr: example.Contract, @@ -691,21 +640,18 @@ func TestOnTimeoutPacket(t *testing.T) { }}, }}, }, - expContractEvents: 2, - expContractEventAttrs: 1, + expEventTypes: []string{types.WasmModuleEventType, "wasm-custom"}, }, - // TODO: I am a bit confued this does return events on error... - "messenger errors returned, events stored": { + "messenger errors returned, events stored before": { contractAddr: example.Contract, expContractGas: myContractGas + 10, contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, - overwriteMessenger: wasmtesting.NewErroringMessageHandler(), - expErr: true, - expContractEvents: 1, - expContractEventAttrs: 1, + overwriteMessenger: wasmtesting.NewErroringMessageHandler(), + expErr: true, + expEventTypes: []string{types.WasmModuleEventType}, }, "unknown contract address": { contractAddr: RandomAccountAddress(t), @@ -734,14 +680,10 @@ func TestOnTimeoutPacket(t *testing.T) { err := keepers.WasmKeeper.OnTimeoutPacket(ctx, spec.contractAddr, msg) // then - events := ctx.EventManager().Events() if spec.expErr { require.Error(t, err) assert.Empty(t, capturedMsgs) // no messages captured on error - require.Len(t, events, spec.expContractEvents) - if spec.expContractEvents > 0 { - assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) - } + assert.Equal(t, spec.expEventTypes, stripTypes(ctx.EventManager().Events())) return } require.NoError(t, err) @@ -754,8 +696,15 @@ func TestOnTimeoutPacket(t *testing.T) { for i, m := range spec.contractResp.Messages { assert.Equal(t, (*capturedMsgs)[i], m.Msg) } - require.Len(t, events, spec.expContractEvents) - assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) + assert.Equal(t, spec.expEventTypes, stripTypes(ctx.EventManager().Events())) }) } } + +func stripTypes(events sdk.Events) []string { + var r []string + for _, e := range events { + r = append(r, e.Type) + } + return r +} diff --git a/x/wasm/keeper/submsg_test.go b/x/wasm/keeper/submsg_test.go index efdfb87f52..85d0e4bd16 100644 --- a/x/wasm/keeper/submsg_test.go +++ b/x/wasm/keeper/submsg_test.go @@ -211,7 +211,7 @@ func TestDispatchSubMsgErrorHandling(t *testing.T) { assertReturnedEvents := func(expectedEvents int) assertion { return func(t *testing.T, ctx sdk.Context, contract, emptyAccount string, response wasmvmtypes.SubcallResult) { - assert.Len(t, response.Ok.Events, expectedEvents) + require.Len(t, response.Ok.Events, expectedEvents) } } @@ -232,13 +232,14 @@ func TestDispatchSubMsgErrorHandling(t *testing.T) { assertGotContractAddr := func(t *testing.T, ctx sdk.Context, contract, emptyAccount string, response wasmvmtypes.SubcallResult) { // should get the events emitted on new contract event := response.Ok.Events[0] - assert.Equal(t, event.Type, "wasm") + require.Equal(t, event.Type, "instantiate") assert.Equal(t, event.Attributes[0].Key, "_contract_address") eventAddr := event.Attributes[0].Value assert.NotEqual(t, contract, eventAddr) // data field is the raw canonical address // QUESTION: why not types.MsgInstantiateContractResponse? difference between calling Router and Service? + require.Len(t, response.Ok.Data, 43) resAddr := sdk.AccAddress(response.Ok.Data) assert.Equal(t, eventAddr, resAddr.String()) } diff --git a/x/wasm/module_test.go b/x/wasm/module_test.go index c70ce742f3..d9b07cba78 100644 --- a/x/wasm/module_test.go +++ b/x/wasm/module_test.go @@ -184,9 +184,9 @@ func TestHandleInstantiate(t *testing.T) { require.Equal(t, 3, len(res.Events), prettyEvents(res.Events)) assert.Equal(t, "wasm", res.Events[0].Type) assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[0].Attributes[0]) - assertAttribute(t, "module", "wasm", res.Events[1].Attributes[0]) - assert.Equal(t, "message", res.Events[1].Type) - assert.Equal(t, "instantiate_contract", res.Events[2].Type) + assert.Equal(t, "instantiate", res.Events[1].Type) + assert.Equal(t, "message", res.Events[2].Type) + assertAttribute(t, "module", "wasm", res.Events[2].Attributes[0]) assertCodeList(t, q, data.ctx, 1) assertCodeBytes(t, q, data.ctx, 1, testContract) @@ -235,15 +235,15 @@ func TestHandleStoreAndInstantiate(t *testing.T) { require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", contractBech32Addr) // this should be standard x/wasm init event, nothing from contract require.Equal(t, 4, len(res.Events), prettyEvents(res.Events)) - assert.Equal(t, "message", res.Events[0].Type) - assertAttribute(t, "module", "wasm", res.Events[0].Attributes[0]) - assert.Equal(t, "store_code", res.Events[1].Type) - assertAttribute(t, "code_id", "1", res.Events[1].Attributes[0]) + assert.Equal(t, "store_code", res.Events[0].Type) + assertAttribute(t, "code_id", "1", res.Events[0].Attributes[0]) + assert.Equal(t, "message", res.Events[1].Type) + assertAttribute(t, "module", "wasm", res.Events[1].Attributes[0]) assert.Equal(t, "wasm", res.Events[2].Type) assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[2].Attributes[0]) - assert.Equal(t, "instantiate_contract", res.Events[3].Type) - assertAttribute(t, "code_id", "1", res.Events[3].Attributes[0]) - assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[3].Attributes[1]) + assert.Equal(t, "instantiate", res.Events[3].Type) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[3].Attributes[0]) + assertAttribute(t, "code_id", "1", res.Events[3].Attributes[1]) assertCodeList(t, q, data.ctx, 1) assertCodeBytes(t, q, data.ctx, 1, testContract) @@ -418,9 +418,9 @@ func TestHandleExecute(t *testing.T) { assert.Equal(t, "transfer", res.Events[0].Type) assert.Equal(t, "wasm", res.Events[1].Type) assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[1].Attributes[0]) - assert.Equal(t, "message", res.Events[2].Type) - assertAttribute(t, "module", "wasm", res.Events[2].Attributes[0]) - assert.Equal(t, "instantiate_contract", res.Events[3].Type) + assert.Equal(t, "instantiate", res.Events[2].Type) + assert.Equal(t, "message", res.Events[3].Type) + assertAttribute(t, "module", "wasm", res.Events[3].Attributes[0]) // ensure bob doesn't exist bobAcct := data.acctKeeper.GetAccount(data.ctx, bob) @@ -471,10 +471,10 @@ func TestHandleExecute(t *testing.T) { assertAttribute(t, "sender", contractBech32Addr, res.Events[3].Attributes[1]) assertAttribute(t, "amount", "105000denom", res.Events[3].Attributes[2]) // finally, standard x/wasm tag - assert.Equal(t, "message", res.Events[4].Type) - assertAttribute(t, "module", "wasm", res.Events[4].Attributes[0]) - assert.Equal(t, "execute_contract", res.Events[5].Type) - assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[5].Attributes[0]) + assert.Equal(t, "execute", res.Events[4].Type) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[4].Attributes[0]) + assert.Equal(t, "message", res.Events[5].Type) + assertAttribute(t, "module", "wasm", res.Events[5].Attributes[0]) // ensure bob now exists and got both payments released bobAcct = data.acctKeeper.GetAccount(data.ctx, bob) diff --git a/x/wasm/types/events.go b/x/wasm/types/events.go index e5c8ff7561..a535facef3 100644 --- a/x/wasm/types/events.go +++ b/x/wasm/types/events.go @@ -1,32 +1,33 @@ package types const ( - EventTypeStoreCode = "store_code" - EventTypeInstantiateContract = "instantiate_contract" - EventTypeExecuteContract = "execute_contract" - EventTypeMigrateContract = "migrate_contract" - EventTypeUpdateAdmin = "update_admin" - EventTypeClearAdmin = "clear_admin" - EventTypeUpdateContractStatus = "update_contract_status" - // WasmModuleEventType is stored with any contract TX + // WasmModuleEventType is stored with any contract TX that returns non empty EventAttributes WasmModuleEventType = "wasm" // CustomContractEventPrefix contracts can create custom events. To not mix them with other system events they got the `wasm-` prefix. CustomContractEventPrefix = "wasm-" - EventTypePinCode = "pin_code" - EventTypeUnpinCode = "unpin_code" + + EventTypeStoreCode = "store_code" + EventTypeInstantiate = "instantiate" + EventTypeExecute = "execute" + EventTypeMigrate = "migrate" + EventTypeUpdateAdmin = "update_admin" + EventTypeClearAdmin = "clear_admin" + EventTypeUpdateContractStatus = "update_contract_status" + EventTypePinCode = "pin_code" + EventTypeUnpinCode = "unpin_code" + EventTypeSudo = "sudo" + EventTypeReply = "reply" + EventTypeGovContractResult = "gov_contract_result" ) // event attributes returned from contract execution const ( - AttributeReservedPrefix = "_" - AttributeKeyContractAddr = "_contract_address" -) + AttributeReservedPrefix = "_" -// event attributes returned under "message" type - no prefix needed there -const ( - AttributeKeyCodeID = "code_id" - AttributeKeySigner = "signer" - AttributeResultDataHex = "result" - AttributeKeyCodeIDs = "code_ids" + AttributeKeyContractAddr = "_contract_address" + AttributeKeyCodeID = "code_id" + AttributeKeyCodeIDs = "code_ids" + AttributeKeyResultDataHex = "result" + AttributeKeyFeature = "feature" AttributeKeyContractStatus = "contract_status" ) From 3e1213db77d2906834af7b5d2fb1b1f6111c9e10 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 11 Aug 2021 11:00:39 +0200 Subject: [PATCH 66/90] Update ibc reflect contract from CosmWasm PR 1046 --- x/wasm/keeper/testdata/ibc_reflect.wasm | Bin 283913 -> 283900 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/x/wasm/keeper/testdata/ibc_reflect.wasm b/x/wasm/keeper/testdata/ibc_reflect.wasm index a54a4c933cba17741353a4c026dfdff84306ad10..5c4ced50472d949a7e79b9a174e1d1011548dab5 100644 GIT binary patch delta 13190 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 A)c^nh delta 13264 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 QuSZ?makX{VRbm1CAADf6fB*mh From 837608a89a2edb4bc4dffa3528bfce3ce76bba5f Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Wed, 11 Aug 2021 13:12:46 +0200 Subject: [PATCH 67/90] Add tests for events --- x/wasm/keeper/keeper.go | 4 +- x/wasm/keeper/keeper_test.go | 151 ++++++++++++++++++++++++++++++++--- 2 files changed, 144 insertions(+), 11 deletions(-) diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 012c40e514..2913ca2bf0 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -390,7 +390,7 @@ func (k Keeper) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.A ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeInstantiate, sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), - sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", codeID)), + sdk.NewAttribute(types.AttributeKeyCodeID, strconv.FormatUint(codeID, 10)), )) return contractAddress, data, nil } @@ -512,7 +512,7 @@ func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeMigrate, - sdk.NewAttribute(types.AttributeKeyCodeID, fmt.Sprintf("%d", newCodeID)), + sdk.NewAttribute(types.AttributeKeyCodeID, strconv.FormatUint(newCodeID, 10)), sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), )) return data, nil diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 4849c439f5..f80dc93397 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -40,13 +40,17 @@ func TestCreate(t *testing.T) { wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") require.NoError(t, err) - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + em := sdk.NewEventManager() + codeID, err := keeper.Create(ctx.WithEventManager(em), creator, wasmCode, nil) require.NoError(t, err) - require.Equal(t, uint64(1), contractID) + require.Equal(t, uint64(1), codeID) // and verify content - storedCode, err := keepers.WasmKeeper.GetByteCode(ctx, contractID) + storedCode, err := keepers.WasmKeeper.GetByteCode(ctx, codeID) require.NoError(t, err) require.Equal(t, wasmCode, storedCode) + // and events emitted + exp := sdk.Events{sdk.NewEvent("store_code", sdk.NewAttribute("code_id", "1"))} + assert.Equal(t, exp, em.Events()) } func TestCreateStoresInstantiatePermission(t *testing.T) { @@ -281,8 +285,9 @@ func TestInstantiate(t *testing.T) { gasBefore := ctx.GasMeter().GasConsumed() + em := sdk.NewEventManager() // create with no balance is also legal - gotContractAddr, _, err := keepers.ContractKeeper.Instantiate(ctx, codeID, creator, "", initMsgBz, "demo contract 1", nil) + gotContractAddr, _, err := keepers.ContractKeeper.Instantiate(ctx.WithEventManager(em), codeID, creator, "", initMsgBz, "demo contract 1", nil) require.NoError(t, err) require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", gotContractAddr.String()) @@ -306,6 +311,15 @@ func TestInstantiate(t *testing.T) { Msg: json.RawMessage(initMsgBz), }} assert.Equal(t, exp, keepers.WasmKeeper.GetContractHistory(ctx, gotContractAddr)) + + // and events emitted + expEvt := sdk.Events{ + sdk.NewEvent("wasm", + sdk.NewAttribute("_contract_address", gotContractAddr.String()), sdk.NewAttribute("Let the", "hacking begin")), + sdk.NewEvent("instantiate", + sdk.NewAttribute("_contract_address", gotContractAddr.String()), sdk.NewAttribute("code_id", "1")), + } + assert.Equal(t, expEvt, em.Events()) } func TestInstantiateWithDeposit(t *testing.T) { @@ -513,8 +527,9 @@ func TestExecute(t *testing.T) { // verifier can execute, and get proper gas amount start := time.Now() gasBefore := ctx.GasMeter().GasConsumed() - - res, err = keepers.ContractKeeper.Execute(ctx, addr, fred, []byte(`{"release":{}}`), topUp) + em := sdk.NewEventManager() + // when + res, err = keepers.ContractKeeper.Execute(ctx.WithEventManager(em), addr, fred, []byte(`{"release":{}}`), topUp) diff := time.Now().Sub(start) require.NoError(t, err) require.NotNil(t, res) @@ -535,6 +550,12 @@ func TestExecute(t *testing.T) { require.NotNil(t, contractAcct) assert.Equal(t, sdk.Coins(nil), bankKeeper.GetAllBalances(ctx, contractAcct.GetAddress())) + // and events emitted + require.Len(t, em.Events(), 7) + expEvt := sdk.NewEvent("execute", + sdk.NewAttribute("_contract_address", addr.String())) + assert.Equal(t, expEvt, em.Events()[6]) + t.Logf("Duration: %v (%d gas)\n", diff, gasAfter-gasBefore) } @@ -1244,8 +1265,8 @@ func TestSudo(t *testing.T) { } initMsgBz, err := json.Marshal(initMsg) require.NoError(t, err) - addr, _, err := keepers.ContractKeeper.Instantiate(ctx, contractID, creator, "", initMsgBz, "demo contract 3", deposit) + require.NoError(t, err) require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", addr.String()) @@ -1267,7 +1288,10 @@ func TestSudo(t *testing.T) { sudoMsg, err := json.Marshal(msg) require.NoError(t, err) - _, err = keepers.WasmKeeper.Sudo(ctx, addr, sudoMsg) + em := sdk.NewEventManager() + + // when + _, err = keepers.WasmKeeper.Sudo(ctx.WithEventManager(em), addr, sudoMsg) require.NoError(t, err) // ensure community now exists and got paid @@ -1275,6 +1299,12 @@ func TestSudo(t *testing.T) { require.NotNil(t, comAcct) balance := bankKeeper.GetBalance(ctx, comAcct.GetAddress(), "denom") assert.Equal(t, sdk.NewInt64Coin("denom", 76543), balance) + // and events emitted + require.Len(t, em.Events(), 4) + expEvt := sdk.NewEvent("sudo", + sdk.NewAttribute("_contract_address", addr.String())) + assert.Equal(t, expEvt, em.Events()[3]) + } func prettyEvents(t *testing.T, events sdk.Events) string { @@ -1617,6 +1647,66 @@ func runUpdateStatusSpec(t *testing.T, msg string, contractKeeper types.Contract }) } +func TestPinCode(t *testing.T) { + ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) + k := keepers.WasmKeeper + + var capturedChecksums []wasmvm.Checksum + mock := wasmtesting.MockWasmer{PinFn: func(checksum wasmvm.Checksum) error { + capturedChecksums = append(capturedChecksums, checksum) + return nil + }} + wasmtesting.MakeInstantiable(&mock) + myCodeID := StoreRandomContract(t, ctx, keepers, &mock).CodeID + require.Equal(t, uint64(1), myCodeID) + em := sdk.NewEventManager() + + // when + gotErr := k.pinCode(ctx.WithEventManager(em), myCodeID) + + // then + require.NoError(t, gotErr) + assert.NotEmpty(t, capturedChecksums) + assert.True(t, k.IsPinnedCode(ctx, myCodeID)) + + // and events + exp := sdk.Events{sdk.NewEvent("pin_code", sdk.NewAttribute("code_id", "1"))} + assert.Equal(t, exp, em.Events()) +} + +func TestUnpinCode(t *testing.T) { + ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) + k := keepers.WasmKeeper + + var capturedChecksums []wasmvm.Checksum + mock := wasmtesting.MockWasmer{ + PinFn: func(checksum wasmvm.Checksum) error { + return nil + }, + UnpinFn: func(checksum wasmvm.Checksum) error { + capturedChecksums = append(capturedChecksums, checksum) + return nil + }} + wasmtesting.MakeInstantiable(&mock) + myCodeID := StoreRandomContract(t, ctx, keepers, &mock).CodeID + require.Equal(t, uint64(1), myCodeID) + err := k.pinCode(ctx, myCodeID) + require.NoError(t, err) + em := sdk.NewEventManager() + + // when + gotErr := k.unpinCode(ctx.WithEventManager(em), myCodeID) + + // then + require.NoError(t, gotErr) + assert.NotEmpty(t, capturedChecksums) + assert.False(t, k.IsPinnedCode(ctx, myCodeID)) + + // and events + exp := sdk.Events{sdk.NewEvent("unpin_code", sdk.NewAttribute("code_id", "1"))} + assert.Equal(t, exp, em.Events()) +} + func TestInitializePinnedCodes(t *testing.T) { ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) k := keepers.WasmKeeper @@ -1626,7 +1716,7 @@ func TestInitializePinnedCodes(t *testing.T) { capturedChecksums = append(capturedChecksums, checksum) return nil }} - wasmtesting.MakeIBCInstantiable(&mock) + wasmtesting.MakeInstantiable(&mock) const testItems = 3 myCodeIDs := make([]uint64, testItems) @@ -1759,6 +1849,49 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { } } +func TestReply(t *testing.T) { + ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) + k := keepers.WasmKeeper + var mock wasmtesting.MockWasmer + wasmtesting.MakeInstantiable(&mock) + example := SeedNewContractInstance(t, ctx, keepers, &mock) + + specs := map[string]struct { + rsp wasmvmtypes.Response + expData []byte + expErr bool + expEvt sdk.Events + }{ + "all good": { + rsp: wasmvmtypes.Response{Data: []byte("foo")}, + expData: []byte("foo"), + expEvt: sdk.Events{sdk.NewEvent("reply", sdk.NewAttribute("_contract_address", example.Contract.String()))}, + }, + "error": { + expErr: true, + }, + } + for name, spec := range specs { + t.Run(name, func(t *testing.T) { + mock.ReplyFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { + if spec.expErr { + return nil, 1, errors.New("testing") + } + return &spec.rsp, 1, nil + } + em := sdk.NewEventManager() + gotData, gotErr := k.reply(ctx.WithEventManager(em), example.Contract, wasmvmtypes.Reply{}) + if spec.expErr { + require.Error(t, gotErr) + return + } + require.NoError(t, gotErr) + assert.Equal(t, spec.expData, gotData) + assert.Equal(t, spec.expEvt, em.Events()) + }) + } +} + func TestBuildContractAddress(t *testing.T) { specs := map[string]struct { srcCodeID uint64 From f7cb9064fce8345127e52814227b98c1076aa9e2 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Wed, 11 Aug 2021 14:08:56 +0200 Subject: [PATCH 68/90] Strip message events and reorder --- x/wasm/keeper/keeper.go | 63 ++++++++++-------- x/wasm/keeper/keeper_test.go | 66 +++++++++++-------- x/wasm/keeper/msg_server.go | 57 +++++++++-------- x/wasm/keeper/proposal_integration_test.go | 4 +- x/wasm/module_test.go | 74 +++++++++++----------- 5 files changed, 142 insertions(+), 122 deletions(-) diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 2913ca2bf0..c189042002 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -381,17 +381,17 @@ func (k Keeper) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.A k.appendToContractHistory(ctx, contractAddress, historyEntry) k.storeContractInfo(ctx, contractAddress, &contractInfo) - // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) - if err != nil { - return "", nil, sdkerrors.Wrap(err, "dispatch") - } - ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeInstantiate, sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), sdk.NewAttribute(types.AttributeKeyCodeID, strconv.FormatUint(codeID, 10)), )) + + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) + if err != nil { + return "", nil, sdkerrors.Wrap(err, "dispatch") + } + return contractAddress, data, nil } @@ -430,16 +430,16 @@ func (k Keeper) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller return nil, sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - // dispatch submessages then messages + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeExecute, + sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), + )) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } - ctx.EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeExecute, - sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), - )) return data, nil } @@ -504,17 +504,17 @@ func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller k.addToContractCodeSecondaryIndex(ctx, contractAddress, historyEntry) k.storeContractInfo(ctx, contractAddress, contractInfo) - // dispatch submessages then messages - data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) - if err != nil { - return nil, sdkerrors.Wrap(err, "dispatch") - } - ctx.EventManager().EmitEvent(sdk.NewEvent( types.EventTypeMigrate, sdk.NewAttribute(types.AttributeKeyCodeID, strconv.FormatUint(newCodeID, 10)), sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), )) + + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) + if err != nil { + return nil, sdkerrors.Wrap(err, "dispatch") + } + return data, nil } @@ -543,16 +543,16 @@ func (k Keeper) Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte return nil, sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - // dispatch submessages then messages + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeSudo, + sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), + )) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } - ctx.EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeSudo, - sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), - )) return data, nil } @@ -584,16 +584,16 @@ func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply was return nil, sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } - // dispatch submessages then messages + ctx.EventManager().EmitEvent(sdk.NewEvent( + types.EventTypeReply, + sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), + )) + data, err := k.handleContractResponse(ctx, contractAddress, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Data, res.Events) if err != nil { return nil, sdkerrors.Wrap(err, "dispatch") } - ctx.EventManager().EmitEvent(sdk.NewEvent( - types.EventTypeReply, - sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddress.String()), - )) return data, nil } @@ -1230,12 +1230,19 @@ func NewDefaultWasmVMContractResponseHandler(md msgDispatcher) *DefaultWasmVMCon // Handle processes the data returned by a contract invocation. func (h DefaultWasmVMContractResponseHandler) Handle(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, messages []wasmvmtypes.SubMsg, origRspData []byte) ([]byte, error) { + em := sdk.NewEventManager() result := origRspData - switch rsp, err := h.md.DispatchSubmessages(ctx, contractAddr, ibcPort, messages); { + switch rsp, err := h.md.DispatchSubmessages(ctx.WithEventManager(em), contractAddr, ibcPort, messages); { case err != nil: return nil, sdkerrors.Wrap(err, "submessages") case rsp != nil: result = rsp } + // emit non message type events only + for _, e := range em.Events() { + if e.Type != sdk.EventTypeMessage { + ctx.EventManager().EmitEvent(e) + } + } return result, nil } diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index f80dc93397..60f095dece 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -314,10 +314,10 @@ func TestInstantiate(t *testing.T) { // and events emitted expEvt := sdk.Events{ - sdk.NewEvent("wasm", - sdk.NewAttribute("_contract_address", gotContractAddr.String()), sdk.NewAttribute("Let the", "hacking begin")), sdk.NewEvent("instantiate", sdk.NewAttribute("_contract_address", gotContractAddr.String()), sdk.NewAttribute("code_id", "1")), + sdk.NewEvent("wasm", + sdk.NewAttribute("_contract_address", gotContractAddr.String()), sdk.NewAttribute("Let the", "hacking begin")), } assert.Equal(t, expEvt, em.Events()) } @@ -551,10 +551,10 @@ func TestExecute(t *testing.T) { assert.Equal(t, sdk.Coins(nil), bankKeeper.GetAllBalances(ctx, contractAcct.GetAddress())) // and events emitted - require.Len(t, em.Events(), 7) + require.Len(t, em.Events(), 5) expEvt := sdk.NewEvent("execute", sdk.NewAttribute("_contract_address", addr.String())) - assert.Equal(t, expEvt, em.Events()[6]) + assert.Equal(t, expEvt, em.Events()[1]) t.Logf("Duration: %v (%d gas)\n", diff, gasAfter-gasBefore) } @@ -1077,6 +1077,13 @@ func TestMigrateWithDispatchedMessage(t *testing.T) { assert.Equal(t, "burnt 1 keys", string(data)) type dict map[string]interface{} expEvents := []dict{ + { + "Type": "migrate", + "Attr": []dict{ + {"code_id": "2"}, + {"_contract_address": contractAddr}, + }, + }, { "Type": "wasm", "Attr": []dict{ @@ -1093,25 +1100,6 @@ func TestMigrateWithDispatchedMessage(t *testing.T) { {"amount": "100000denom"}, }, }, - { - "Type": "message", - "Attr": []dict{ - {"sender": contractAddr}, - }, - }, - { - "Type": "message", - "Attr": []dict{ - {"module": "bank"}, - }, - }, - { - "Type": "migrate", - "Attr": []dict{ - {"code_id": "2"}, - {"_contract_address": contractAddr}, - }, - }, } expJSONEvts := string(mustMarshal(t, expEvents)) assert.JSONEq(t, expJSONEvts, prettyEvents(t, ctx.EventManager().Events()), prettyEvents(t, ctx.EventManager().Events())) @@ -1300,10 +1288,10 @@ func TestSudo(t *testing.T) { balance := bankKeeper.GetBalance(ctx, comAcct.GetAddress(), "denom") assert.Equal(t, sdk.NewInt64Coin("denom", 76543), balance) // and events emitted - require.Len(t, em.Events(), 4) + require.Len(t, em.Events(), 2) expEvt := sdk.NewEvent("sudo", sdk.NewAttribute("_contract_address", addr.String())) - assert.Equal(t, expEvt, em.Events()[3]) + assert.Equal(t, expEvt, em.Events()[0]) } @@ -1788,6 +1776,7 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { setup func(m *wasmtesting.MockMsgDispatcher) expErr bool expData []byte + expEvts sdk.Events }{ "submessage overwrites result when set": { srcData: []byte("otherData"), @@ -1798,6 +1787,7 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { }, expErr: false, expData: []byte("mySubMsgData"), + expEvts: sdk.Events{}, }, "submessage overwrites result when empty": { srcData: []byte("otherData"), @@ -1808,6 +1798,7 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { }, expErr: false, expData: []byte(""), + expEvts: sdk.Events{}, }, "submessage do not overwrite result when nil": { srcData: []byte("otherData"), @@ -1818,6 +1809,7 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { }, expErr: false, expData: []byte("otherData"), + expEvts: sdk.Events{}, }, "submessage error aborts process": { setup: func(m *wasmtesting.MockMsgDispatcher) { @@ -1827,6 +1819,24 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { }, expErr: true, }, + "message events filtered out": { + setup: func(m *wasmtesting.MockMsgDispatcher) { + m.DispatchSubmessagesFn = func(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.SubMsg) ([]byte, error) { + ctx.EventManager().EmitEvent(sdk.NewEvent(sdk.EventTypeMessage)) + return nil, nil + } + }, + expEvts: sdk.Events{}, + }, + "message emit non message events": { + setup: func(m *wasmtesting.MockMsgDispatcher) { + m.DispatchSubmessagesFn = func(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.SubMsg) ([]byte, error) { + ctx.EventManager().EmitEvent(sdk.NewEvent("myEvent")) + return nil, nil + } + }, + expEvts: sdk.Events{sdk.NewEvent("myEvent")}, + }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { @@ -1836,15 +1846,17 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { var mock wasmtesting.MockMsgDispatcher spec.setup(&mock) d := NewDefaultWasmVMContractResponseHandler(&mock) - // when + em := sdk.NewEventManager() - gotData, gotErr := d.Handle(sdk.Context{}, RandomAccountAddress(t), "ibc-port", msgs, spec.srcData) + // when + gotData, gotErr := d.Handle(sdk.Context{}.WithEventManager(em), RandomAccountAddress(t), "ibc-port", msgs, spec.srcData) if spec.expErr { require.Error(t, gotErr) return } require.NoError(t, gotErr) assert.Equal(t, spec.expData, gotData) + assert.Equal(t, spec.expEvts, em.Events()) }) } } diff --git a/x/wasm/keeper/msg_server.go b/x/wasm/keeper/msg_server.go index 489102f29a..0a0387a3a9 100644 --- a/x/wasm/keeper/msg_server.go +++ b/x/wasm/keeper/msg_server.go @@ -24,10 +24,6 @@ func (m msgServer) StoreCode(goCtx context.Context, msg *types.MsgStoreCode) (*t if err != nil { return nil, sdkerrors.Wrap(err, "sender") } - codeID, err := m.keeper.Create(ctx, sdk.AccAddress(msg.Sender), msg.WASMByteCode, msg.InstantiatePermission) - if err != nil { - return nil, err - } ctx.EventManager().EmitEvent(sdk.NewEvent( sdk.EventTypeMessage, @@ -35,6 +31,11 @@ func (m msgServer) StoreCode(goCtx context.Context, msg *types.MsgStoreCode) (*t sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) + codeID, err := m.keeper.Create(ctx, sdk.AccAddress(msg.Sender), msg.WASMByteCode, msg.InstantiatePermission) + if err != nil { + return nil, err + } + return &types.MsgStoreCodeResponse{ CodeID: codeID, }, nil @@ -55,17 +56,17 @@ func (m msgServer) InstantiateContract(goCtx context.Context, msg *types.MsgInst adminAddr = sdk.AccAddress(msg.Admin) } - contractAddr, data, err := m.keeper.Instantiate(ctx, msg.CodeID, sdk.AccAddress(msg.Sender), adminAddr, msg.Msg, msg.Label, msg.Funds) - if err != nil { - return nil, err - } - ctx.EventManager().EmitEvent(sdk.NewEvent( sdk.EventTypeMessage, sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) + contractAddr, data, err := m.keeper.Instantiate(ctx, msg.CodeID, sdk.AccAddress(msg.Sender), adminAddr, msg.Msg, msg.Label, msg.Funds) + if err != nil { + return nil, err + } + return &types.MsgInstantiateContractResponse{ Address: contractAddr.String(), Data: data, @@ -122,17 +123,17 @@ func (m msgServer) ExecuteContract(goCtx context.Context, msg *types.MsgExecuteC return nil, sdkerrors.Wrap(err, "contract") } - data, err := m.keeper.Execute(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.Msg, msg.Funds) - if err != nil { - return nil, err - } - ctx.EventManager().EmitEvent(sdk.NewEvent( sdk.EventTypeMessage, sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) + data, err := m.keeper.Execute(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.Msg, msg.Funds) + if err != nil { + return nil, err + } + return &types.MsgExecuteContractResponse{ Data: data, }, nil @@ -149,17 +150,17 @@ func (m msgServer) MigrateContract(goCtx context.Context, msg *types.MsgMigrateC return nil, sdkerrors.Wrap(err, "contract") } - data, err := m.keeper.Migrate(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.CodeID, msg.Msg) - if err != nil { - return nil, err - } - ctx.EventManager().EmitEvent(sdk.NewEvent( sdk.EventTypeMessage, sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) + data, err := m.keeper.Migrate(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), msg.CodeID, msg.Msg) + if err != nil { + return nil, err + } + return &types.MsgMigrateContractResponse{ Data: data, }, nil @@ -180,17 +181,17 @@ func (m msgServer) UpdateAdmin(goCtx context.Context, msg *types.MsgUpdateAdmin) return nil, sdkerrors.Wrap(err, "new admin") } - if err := m.keeper.UpdateContractAdmin(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), - sdk.AccAddress(msg.NewAdmin)); err != nil { - return nil, err - } - ctx.EventManager().EmitEvent(sdk.NewEvent( sdk.EventTypeMessage, sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), sdk.NewAttribute(sdk.AttributeKeySender, msg.Sender), )) + if err := m.keeper.UpdateContractAdmin(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender), + sdk.AccAddress(msg.NewAdmin)); err != nil { + return nil, err + } + return &types.MsgUpdateAdminResponse{}, nil } @@ -205,10 +206,6 @@ func (m msgServer) ClearAdmin(goCtx context.Context, msg *types.MsgClearAdmin) ( return nil, sdkerrors.Wrap(err, "contract") } - if err := m.keeper.ClearContractAdmin(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender)); err != nil { - return nil, err - } - ctx.EventManager().EmitEvent(sdk.NewEvent( sdk.EventTypeMessage, sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), @@ -219,6 +216,10 @@ func (m msgServer) ClearAdmin(goCtx context.Context, msg *types.MsgClearAdmin) ( sdk.NewAttribute(types.AttributeKeyContractAddr, msg.Contract), )) + if err := m.keeper.ClearContractAdmin(ctx, sdk.AccAddress(msg.Contract), sdk.AccAddress(msg.Sender)); err != nil { + return nil, err + } + return &types.MsgClearAdminResponse{}, nil } diff --git a/x/wasm/keeper/proposal_integration_test.go b/x/wasm/keeper/proposal_integration_test.go index e14cac72bd..5c736fdd2c 100644 --- a/x/wasm/keeper/proposal_integration_test.go +++ b/x/wasm/keeper/proposal_integration_test.go @@ -121,8 +121,8 @@ func TestInstantiateProposal(t *testing.T) { assert.Equal(t, expHistory, wasmKeeper.GetContractHistory(ctx, sdk.AccAddress(contractAddr))) // and event require.Len(t, em.Events(), 3, "%#v", em.Events()) - require.Equal(t, types.WasmModuleEventType, em.Events()[0].Type) - require.Equal(t, types.EventTypeInstantiate, em.Events()[1].Type) + require.Equal(t, types.EventTypeInstantiate, em.Events()[0].Type) + require.Equal(t, types.WasmModuleEventType, em.Events()[1].Type) require.Equal(t, types.EventTypeGovContractResult, em.Events()[2].Type) require.Len(t, em.Events()[0].Attributes, 2) require.Len(t, em.Events()[1].Attributes, 2) diff --git a/x/wasm/module_test.go b/x/wasm/module_test.go index d9b07cba78..3f947e3974 100644 --- a/x/wasm/module_test.go +++ b/x/wasm/module_test.go @@ -179,14 +179,14 @@ func TestHandleInstantiate(t *testing.T) { require.NoError(t, err) contractBech32Addr := parseInitResponse(t, res.Data) - require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", contractBech32Addr) + assert.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", contractBech32Addr) // this should be standard x/wasm init event, nothing from contract - require.Equal(t, 3, len(res.Events), prettyEvents(res.Events)) - assert.Equal(t, "wasm", res.Events[0].Type) - assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[0].Attributes[0]) + assert.Equal(t, 3, len(res.Events), prettyEvents(res.Events)) + assert.Equal(t, "message", res.Events[0].Type) + assertAttribute(t, "module", "wasm", res.Events[0].Attributes[0]) assert.Equal(t, "instantiate", res.Events[1].Type) - assert.Equal(t, "message", res.Events[2].Type) - assertAttribute(t, "module", "wasm", res.Events[2].Attributes[0]) + assert.Equal(t, "wasm", res.Events[2].Type) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[2].Attributes[0]) assertCodeList(t, q, data.ctx, 1) assertCodeBytes(t, q, data.ctx, 1, testContract) @@ -239,11 +239,11 @@ func TestHandleStoreAndInstantiate(t *testing.T) { assertAttribute(t, "code_id", "1", res.Events[0].Attributes[0]) assert.Equal(t, "message", res.Events[1].Type) assertAttribute(t, "module", "wasm", res.Events[1].Attributes[0]) - assert.Equal(t, "wasm", res.Events[2].Type) + assert.Equal(t, "instantiate", res.Events[2].Type) assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[2].Attributes[0]) - assert.Equal(t, "instantiate", res.Events[3].Type) + assertAttribute(t, "code_id", "1", res.Events[2].Attributes[1]) + assert.Equal(t, "wasm", res.Events[3].Type) assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[3].Attributes[0]) - assertAttribute(t, "code_id", "1", res.Events[3].Attributes[1]) assertCodeList(t, q, data.ctx, 1) assertCodeBytes(t, q, data.ctx, 1, testContract) @@ -412,15 +412,15 @@ func TestHandleExecute(t *testing.T) { require.NoError(t, err) contractBech32Addr := parseInitResponse(t, res.Data) - require.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", contractBech32Addr) + assert.Equal(t, "link14hj2tavq8fpesdwxxcu44rty3hh90vhud63e6j", contractBech32Addr) // this should be standard x/wasm init event, plus a bank send event (2), with no custom contract events - require.Equal(t, 4, len(res.Events), prettyEvents(res.Events)) - assert.Equal(t, "transfer", res.Events[0].Type) - assert.Equal(t, "wasm", res.Events[1].Type) - assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[1].Attributes[0]) + assert.Equal(t, 4, len(res.Events), prettyEvents(res.Events)) + assert.Equal(t, "message", res.Events[0].Type) + assertAttribute(t, "module", "wasm", res.Events[0].Attributes[0]) + assert.Equal(t, "transfer", res.Events[1].Type) assert.Equal(t, "instantiate", res.Events[2].Type) - assert.Equal(t, "message", res.Events[3].Type) - assertAttribute(t, "module", "wasm", res.Events[3].Attributes[0]) + assert.Equal(t, "wasm", res.Events[3].Type) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[3].Attributes[0]) // ensure bob doesn't exist bobAcct := data.acctKeeper.GetAccount(data.ctx, bob) @@ -452,30 +452,30 @@ func TestHandleExecute(t *testing.T) { // this should be standard message event, plus x/wasm init event, plus 2 bank send event, plus a special event from the contract require.Equal(t, 6, len(res.Events), prettyEvents(res.Events)) - require.Equal(t, "transfer", res.Events[0].Type) - require.Len(t, res.Events[0].Attributes, 3) - assertAttribute(t, "recipient", contractBech32Addr, res.Events[0].Attributes[0]) - assertAttribute(t, "sender", fred.String(), res.Events[0].Attributes[1]) - assertAttribute(t, "amount", "5000denom", res.Events[0].Attributes[2]) + assert.Equal(t, "message", res.Events[0].Type) + assertAttribute(t, "module", "wasm", res.Events[0].Attributes[0]) + + require.Equal(t, "transfer", res.Events[1].Type) + require.Len(t, res.Events[1].Attributes, 3) + assertAttribute(t, "recipient", contractBech32Addr, res.Events[1].Attributes[0]) + assertAttribute(t, "sender", fred.String(), res.Events[1].Attributes[1]) + assertAttribute(t, "amount", "5000denom", res.Events[1].Attributes[2]) + + assert.Equal(t, "execute", res.Events[2].Type) + // custom contract event attribute - assert.Equal(t, "wasm", res.Events[1].Type) - assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[1].Attributes[0]) - assertAttribute(t, "action", "release", res.Events[1].Attributes[1]) + assert.Equal(t, "wasm", res.Events[3].Type) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[3].Attributes[0]) + assertAttribute(t, "action", "release", res.Events[3].Attributes[1]) // custom contract event - assert.Equal(t, "wasm-hackatom", res.Events[2].Type) - assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[1].Attributes[0]) - assertAttribute(t, "action", "release", res.Events[1].Attributes[1]) - // second transfer (this without conflicting message) - assert.Equal(t, "transfer", res.Events[3].Type) - assertAttribute(t, "recipient", bob.String(), res.Events[3].Attributes[0]) - assertAttribute(t, "sender", contractBech32Addr, res.Events[3].Attributes[1]) - assertAttribute(t, "amount", "105000denom", res.Events[3].Attributes[2]) - // finally, standard x/wasm tag - assert.Equal(t, "execute", res.Events[4].Type) + assert.Equal(t, "wasm-hackatom", res.Events[4].Type) assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[4].Attributes[0]) - assert.Equal(t, "message", res.Events[5].Type) - assertAttribute(t, "module", "wasm", res.Events[5].Attributes[0]) - + assertAttribute(t, "action", "release", res.Events[4].Attributes[1]) + // second transfer (this without conflicting message) + assert.Equal(t, "transfer", res.Events[5].Type) + assertAttribute(t, "recipient", bob.String(), res.Events[5].Attributes[0]) + assertAttribute(t, "sender", contractBech32Addr, res.Events[5].Attributes[1]) + assertAttribute(t, "amount", "105000denom", res.Events[5].Attributes[2]) // ensure bob now exists and got both payments released bobAcct = data.acctKeeper.GetAccount(data.ctx, bob) require.NotNil(t, bobAcct) From 8c15d50077f7548589246f434f30e944393e4672 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Wed, 11 Aug 2021 14:25:43 +0200 Subject: [PATCH 69/90] Download cosmwasm contracts --- x/wasm/keeper/testdata/download_releases.sh | 3 +++ x/wasm/keeper/testdata/hackatom.wasm.gzip | Bin 62309 -> 62309 bytes x/wasm/keeper/testdata/version.txt | 1 + 3 files changed, 4 insertions(+) create mode 100644 x/wasm/keeper/testdata/version.txt diff --git a/x/wasm/keeper/testdata/download_releases.sh b/x/wasm/keeper/testdata/download_releases.sh index 4d6041ef20..6d14586c64 100755 --- a/x/wasm/keeper/testdata/download_releases.sh +++ b/x/wasm/keeper/testdata/download_releases.sh @@ -18,3 +18,6 @@ done # create the zip variant gzip -k hackatom.wasm mv hackatom.wasm.gz hackatom.wasm.gzip + +rm -f version.txt +echo "$tag" >version.txt diff --git a/x/wasm/keeper/testdata/hackatom.wasm.gzip b/x/wasm/keeper/testdata/hackatom.wasm.gzip index 031d43e7c34fb25596bf383277a4a7550d59b10b..0bbfea03fad7b68e4174b9c5279413c343ef1e87 100644 GIT binary patch delta 18 acmaF*jQQy^W_I~*4i4Fw!W-G+J_7(suLm#y delta 18 acmaF*jQQy^W_I~*4i4t$+#A{BJ_7(tr3YL9 diff --git a/x/wasm/keeper/testdata/version.txt b/x/wasm/keeper/testdata/version.txt new file mode 100644 index 0000000000..b6734ac57e --- /dev/null +++ b/x/wasm/keeper/testdata/version.txt @@ -0,0 +1 @@ +v0.16.0+contracts From a6d2d1827f49edbde66283bfad8f6b1d68b31b6c Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 12 Aug 2021 13:15:29 +0200 Subject: [PATCH 70/90] Add failing testcase showing messages make it into reply block --- x/wasm/keeper/keeper.go | 1 + x/wasm/keeper/msg_dispatcher_test.go | 52 +++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index c189042002..b955caee57 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -1238,6 +1238,7 @@ func (h DefaultWasmVMContractResponseHandler) Handle(ctx sdk.Context, contractAd case rsp != nil: result = rsp } + // TODO: remove this - handled inside DispatchSubmessages // emit non message type events only for _, e := range em.Events() { if e.Type != sdk.EventTypeMessage { diff --git a/x/wasm/keeper/msg_dispatcher_test.go b/x/wasm/keeper/msg_dispatcher_test.go index eaf518e9c8..2d239b26aa 100644 --- a/x/wasm/keeper/msg_dispatcher_test.go +++ b/x/wasm/keeper/msg_dispatcher_test.go @@ -86,6 +86,7 @@ func TestDispatchSubmessages(t *testing.T) { }}, replyer: &mockReplyer{ replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { + ctx.EventManager().EmitEvent(sdk.NewEvent("wasm-reply")) return []byte("myReplyData"), nil }, }, @@ -100,7 +101,9 @@ func TestDispatchSubmessages(t *testing.T) { expEvents: []sdk.Event{{ Type: "myEvent", Attributes: []abci.EventAttribute{{Key: []byte("foo"), Value: []byte("bar")}}, - }}, + }, + sdk.NewEvent("wasm-reply"), + }, }, "with context events - released on commit": { msgs: []wasmvmtypes.SubMsg{{ @@ -267,6 +270,53 @@ func TestDispatchSubmessages(t *testing.T) { expData: []byte{}, expCommits: []bool{false, false}, }, + "reply gets proper events": { + msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyAlways}}, + replyer: &mockReplyer{ + replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { + if reply.Result.Err != "" { + return nil, errors.New(reply.Result.Err) + } + res := reply.Result.Ok + + // ensure the input events are what we expect + // I didn't use require.Equal() to act more like a contract... but maybe that would be better + if len(res.Events) != 2 { + return nil, fmt.Errorf("event count: %#v", res.Events) + } + if res.Events[0].Type != "execute" { + return nil, fmt.Errorf("event0: %#v", res.Events[0]) + } + if res.Events[0].Type != "wasm" { + return nil, fmt.Errorf("event1: %#v", res.Events[1]) + } + + // let's add a custom event here and see if it makes it out + ctx.EventManager().EmitEvent(sdk.NewEvent("wasm-reply")) + + // update data from what we got in + return res.Data, nil + }, + }, + msgHandler: &wasmtesting.MockMessageHandler{ + DispatchMsgFn: func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { + events = []sdk.Event{ + sdk.NewEvent("message", sdk.NewAttribute("_contract_address", contractAddr.String())), + // we don't know what the contarctAddr will be so we can't use it in the final tests + sdk.NewEvent("execute", sdk.NewAttribute("_contract_address", "placeholder-random-addr")), + sdk.NewEvent("wasm", sdk.NewAttribute("random", "data")), + } + return events, [][]byte{[]byte("subData")}, nil + }, + }, + expData: []byte("subData"), + expCommits: []bool{true}, + expEvents: []sdk.Event{ + sdk.NewEvent("execute", sdk.NewAttribute("_contract_address", "placeholder-random-addr")), + sdk.NewEvent("wasm", sdk.NewAttribute("random", "data")), + sdk.NewEvent("wasm-reply"), + }, + }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { From 6cb3f03945cdd0c5167eb598c8f414957a0a0034 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 12 Aug 2021 13:22:36 +0200 Subject: [PATCH 71/90] One more test for message event without reply --- x/wasm/keeper/msg_dispatcher_test.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/x/wasm/keeper/msg_dispatcher_test.go b/x/wasm/keeper/msg_dispatcher_test.go index 2d239b26aa..ffe8979e22 100644 --- a/x/wasm/keeper/msg_dispatcher_test.go +++ b/x/wasm/keeper/msg_dispatcher_test.go @@ -270,6 +270,28 @@ func TestDispatchSubmessages(t *testing.T) { expData: []byte{}, expCommits: []bool{false, false}, }, + "message event filtered without reply": { + msgs: []wasmvmtypes.SubMsg{{ + ReplyOn: wasmvmtypes.ReplyNever, + }}, + replyer: &mockReplyer{ + replyFn: func(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { + return nil, errors.New("should never be called") + }, + }, + msgHandler: &wasmtesting.MockMessageHandler{ + DispatchMsgFn: func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { + myEvents := []sdk.Event{ + sdk.NewEvent("message"), + sdk.NewEvent("execute", sdk.NewAttribute("foo", "bar")), + } + return myEvents, [][]byte{[]byte("myData")}, nil + }, + }, + expData: nil, + expCommits: []bool{true}, + expEvents: []sdk.Event{sdk.NewEvent("execute", sdk.NewAttribute("foo", "bar"))}, + }, "reply gets proper events": { msgs: []wasmvmtypes.SubMsg{{ID: 1, ReplyOn: wasmvmtypes.ReplyAlways}}, replyer: &mockReplyer{ From f74f4660ebabf9e8aed17e0ca8a893b82fc97a35 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 12 Aug 2021 13:28:58 +0200 Subject: [PATCH 72/90] Filter messages, fix new tests, break older ones --- x/wasm/keeper/msg_dispatcher.go | 27 +++++++++++++++++++++++---- x/wasm/keeper/msg_dispatcher_test.go | 2 +- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/x/wasm/keeper/msg_dispatcher.go b/x/wasm/keeper/msg_dispatcher.go index ae4b589955..b91fc69ba1 100644 --- a/x/wasm/keeper/msg_dispatcher.go +++ b/x/wasm/keeper/msg_dispatcher.go @@ -99,10 +99,11 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk } // if it succeeds, commit state changes from submessage, and pass on events to Event Manager + var filteredEvents []sdk.Event if err == nil { commit() - ctx.EventManager().EmitEvents(em.Events()) - ctx.EventManager().EmitEvents(events) + filteredEvents = filterEvents(em.Events(), events) + ctx.EventManager().EmitEvents(filteredEvents) } // on failure, revert state from sandbox, and ignore events (just skip doing the above) // we only callback if requested. Short-circuit here the cases we don't want to @@ -124,7 +125,7 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk } result = wasmvmtypes.SubcallResult{ Ok: &wasmvmtypes.SubcallResponse{ - Events: sdkEventsToWasmVMEvents(events), + Events: sdkEventsToWasmVmEvents(filteredEvents), Data: responseData, }, } @@ -153,7 +154,25 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk return rsp, nil } -func sdkEventsToWasmVMEvents(events []sdk.Event) []wasmvmtypes.Event { +func filterEvents(events ...[]sdk.Event) []sdk.Event { + // pre-allocate space for efficiency + cap := 0 + for _, evts := range events { + cap += len(evts) + } + res := make([]sdk.Event, 0, cap) + + for _, evts := range events { + for _, ev := range evts { + if ev.Type != "message" { + res = append(res, ev) + } + } + } + return res +} + +func sdkEventsToWasmVmEvents(events []sdk.Event) []wasmvmtypes.Event { res := make([]wasmvmtypes.Event, len(events)) for i, ev := range events { res[i] = wasmvmtypes.Event{ diff --git a/x/wasm/keeper/msg_dispatcher_test.go b/x/wasm/keeper/msg_dispatcher_test.go index ffe8979e22..e619f964db 100644 --- a/x/wasm/keeper/msg_dispatcher_test.go +++ b/x/wasm/keeper/msg_dispatcher_test.go @@ -309,7 +309,7 @@ func TestDispatchSubmessages(t *testing.T) { if res.Events[0].Type != "execute" { return nil, fmt.Errorf("event0: %#v", res.Events[0]) } - if res.Events[0].Type != "wasm" { + if res.Events[1].Type != "wasm" { return nil, fmt.Errorf("event1: %#v", res.Events[1]) } From 5ec7eaf891f8096d05c825b81404b3adf9e72150 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 12 Aug 2021 13:33:23 +0200 Subject: [PATCH 73/90] Update tests to not expect message event --- x/wasm/keeper/submsg_test.go | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/x/wasm/keeper/submsg_test.go b/x/wasm/keeper/submsg_test.go index 85d0e4bd16..d36182da4d 100644 --- a/x/wasm/keeper/submsg_test.go +++ b/x/wasm/keeper/submsg_test.go @@ -94,7 +94,7 @@ func TestDispatchSubMsgSuccessCase(t *testing.T) { require.NotNil(t, res.Result.Ok) sub := res.Result.Ok assert.Empty(t, sub.Data) - require.Len(t, sub.Events, 3) + require.Len(t, sub.Events, 1) transfer := sub.Events[0] assert.Equal(t, "transfer", transfer.Type) @@ -102,22 +102,6 @@ func TestDispatchSubMsgSuccessCase(t *testing.T) { Key: "recipient", Value: fred.String(), }, transfer.Attributes[0]) - - sender := sub.Events[1] - assert.Equal(t, "message", sender.Type) - assert.Equal(t, wasmvmtypes.EventAttribute{ - Key: "sender", - Value: contractAddr.String(), - }, sender.Attributes[0]) - - // where does this come from? - module := sub.Events[2] - assert.Equal(t, "message", module.Type) - assert.Equal(t, wasmvmtypes.EventAttribute{ - Key: "module", - Value: "bank", - }, module.Attributes[0]) - } func TestDispatchSubMsgErrorHandling(t *testing.T) { @@ -263,7 +247,7 @@ func TestDispatchSubMsgErrorHandling(t *testing.T) { submsgID: 5, msg: validBankSend, // note we charge another 40k for the reply call - resultAssertions: []assertion{assertReturnedEvents(3), assertGasUsed(117000, 130000)}, + resultAssertions: []assertion{assertReturnedEvents(1), assertGasUsed(115534, 121000)}, }, "not enough tokens": { submsgID: 6, @@ -283,7 +267,7 @@ func TestDispatchSubMsgErrorHandling(t *testing.T) { msg: validBankSend, gasLimit: &subGasLimit, // uses same gas as call without limit - resultAssertions: []assertion{assertReturnedEvents(3), assertGasUsed(117000, 130000)}, + resultAssertions: []assertion{assertReturnedEvents(1), assertGasUsed(115534, 121000)}, }, "not enough tokens with limit": { submsgID: 16, @@ -301,7 +285,6 @@ func TestDispatchSubMsgErrorHandling(t *testing.T) { // uses all the subGasLimit, plus the 92k or so for the main contract resultAssertions: []assertion{assertGasUsed(subGasLimit+92000, subGasLimit+106000), assertErrorString("out of gas")}, }, - "instantiate contract gets address in data and events": { submsgID: 21, msg: instantiateContract, From 9e6ca9a0b6ca361504842c315fd56905cec04d68 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 12 Aug 2021 13:36:22 +0200 Subject: [PATCH 74/90] Remove (now-unneeded) filtering in DefaultWasmVMContractResponseHandler.Handle --- x/wasm/keeper/keeper.go | 10 +--------- x/wasm/keeper/keeper_test.go | 9 --------- 2 files changed, 1 insertion(+), 18 deletions(-) diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index b955caee57..518095a9a4 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -1230,20 +1230,12 @@ func NewDefaultWasmVMContractResponseHandler(md msgDispatcher) *DefaultWasmVMCon // Handle processes the data returned by a contract invocation. func (h DefaultWasmVMContractResponseHandler) Handle(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, messages []wasmvmtypes.SubMsg, origRspData []byte) ([]byte, error) { - em := sdk.NewEventManager() result := origRspData - switch rsp, err := h.md.DispatchSubmessages(ctx.WithEventManager(em), contractAddr, ibcPort, messages); { + switch rsp, err := h.md.DispatchSubmessages(ctx, contractAddr, ibcPort, messages); { case err != nil: return nil, sdkerrors.Wrap(err, "submessages") case rsp != nil: result = rsp } - // TODO: remove this - handled inside DispatchSubmessages - // emit non message type events only - for _, e := range em.Events() { - if e.Type != sdk.EventTypeMessage { - ctx.EventManager().EmitEvent(e) - } - } return result, nil } diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 60f095dece..cc3436009f 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -1819,15 +1819,6 @@ func TestNewDefaultWasmVMContractResponseHandler(t *testing.T) { }, expErr: true, }, - "message events filtered out": { - setup: func(m *wasmtesting.MockMsgDispatcher) { - m.DispatchSubmessagesFn = func(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.SubMsg) ([]byte, error) { - ctx.EventManager().EmitEvent(sdk.NewEvent(sdk.EventTypeMessage)) - return nil, nil - } - }, - expEvts: sdk.Events{}, - }, "message emit non message events": { setup: func(m *wasmtesting.MockMsgDispatcher) { m.DispatchSubmessagesFn = func(ctx sdk.Context, contractAddr sdk.AccAddress, ibcPort string, msgs []wasmvmtypes.SubMsg) ([]byte, error) { From c9a890e46a507a4796d734d9fa93ded93fb372d7 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 12 Aug 2021 14:49:43 +0200 Subject: [PATCH 75/90] Simplify filter method --- x/wasm/keeper/msg_dispatcher.go | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/x/wasm/keeper/msg_dispatcher.go b/x/wasm/keeper/msg_dispatcher.go index b91fc69ba1..7179f0d387 100644 --- a/x/wasm/keeper/msg_dispatcher.go +++ b/x/wasm/keeper/msg_dispatcher.go @@ -102,7 +102,7 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk var filteredEvents []sdk.Event if err == nil { commit() - filteredEvents = filterEvents(em.Events(), events) + filteredEvents = filterEvents(append(em.Events(), events...)) ctx.EventManager().EmitEvents(filteredEvents) } // on failure, revert state from sandbox, and ignore events (just skip doing the above) @@ -154,19 +154,12 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk return rsp, nil } -func filterEvents(events ...[]sdk.Event) []sdk.Event { +func filterEvents(events []sdk.Event) []sdk.Event { // pre-allocate space for efficiency - cap := 0 - for _, evts := range events { - cap += len(evts) - } - res := make([]sdk.Event, 0, cap) - - for _, evts := range events { - for _, ev := range evts { - if ev.Type != "message" { - res = append(res, ev) - } + res := make([]sdk.Event, 0, len(events)) + for _, ev := range events { + if ev.Type != "message" { + res = append(res, ev) } } return res From 231a831ad674b0a73f553da3970dfdca52722d80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Husiaty=C5=84ski?= <1517+husio@users.noreply.github.com> Date: Fri, 27 Aug 2021 15:37:07 +0200 Subject: [PATCH 76/90] Keeper tests (#590) * More keeper tests x/wasm/keeper tests are extended to test various input validation. Keeper input is validated before passing to the keeper method when used within wasmd application. We cannot ensure such validation when this keeper is used outside of wasmd application. To keep it safe, fully validate keeper methods input. hackatom.wasm is loaded into memory during initialization to avoid reading file in each test separately. Once migrated to go 1.16, embed package should be used instead. Run goimport on certain files. Some comments fixed or removed. * ensure that creator address is not nil --- cmd/wasmd/root.go | 251 ++++++++++++++++++ x/wasm/keeper/handler_plugin.go | 15 +- x/wasm/keeper/handler_plugin_encoders_test.go | 3 +- x/wasm/keeper/handler_plugin_test.go | 4 +- x/wasm/keeper/keeper.go | 5 +- x/wasm/keeper/keeper_test.go | 142 +++++----- x/wasm/module_test.go | 1 - 7 files changed, 334 insertions(+), 87 deletions(-) create mode 100644 cmd/wasmd/root.go diff --git a/cmd/wasmd/root.go b/cmd/wasmd/root.go new file mode 100644 index 0000000000..485ac51825 --- /dev/null +++ b/cmd/wasmd/root.go @@ -0,0 +1,251 @@ +package main + +import ( + "errors" + "io" + "os" + "path/filepath" + + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + "github.com/prometheus/client_golang/prometheus" + + "github.com/CosmWasm/wasmd/x/wasm" + clientcodec "github.com/CosmWasm/wasmd/x/wasm/client/codec" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" + vestingcli "github.com/cosmos/cosmos-sdk/x/auth/vesting/client/cli" + bankcmd "github.com/cosmos/cosmos-sdk/x/bank/client/cli" + "github.com/spf13/cast" + "github.com/spf13/cobra" + tmcli "github.com/tendermint/tendermint/libs/cli" + "github.com/tendermint/tendermint/libs/log" + dbm "github.com/tendermint/tm-db" + + "github.com/CosmWasm/wasmd/app" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/debug" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/keys" + "github.com/cosmos/cosmos-sdk/client/rpc" + "github.com/cosmos/cosmos-sdk/server" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + "github.com/cosmos/cosmos-sdk/snapshots" + "github.com/cosmos/cosmos-sdk/store" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/version" + authclient "github.com/cosmos/cosmos-sdk/x/auth/client" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/cosmos/cosmos-sdk/x/crisis" + genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" +) + +// NewRootCmd creates a new root command for wasmd. It is called once in the +// main function. +func NewRootCmd() (*cobra.Command, app.EncodingConfig) { + encodingConfig := app.MakeEncodingConfig() + + config := sdk.GetConfig() + config.SetBech32PrefixForAccount(app.Bech32PrefixAccAddr, app.Bech32PrefixAccPub) + config.SetBech32PrefixForValidator(app.Bech32PrefixValAddr, app.Bech32PrefixValPub) + config.SetBech32PrefixForConsensusNode(app.Bech32PrefixConsAddr, app.Bech32PrefixConsPub) + config.Seal() + + initClientCtx := client.Context{}. + WithJSONMarshaler(clientcodec.NewProtoCodec(encodingConfig.Marshaler, encodingConfig.InterfaceRegistry)). + WithInterfaceRegistry(encodingConfig.InterfaceRegistry). + WithTxConfig(encodingConfig.TxConfig). + WithLegacyAmino(encodingConfig.Amino). + WithInput(os.Stdin). + WithAccountRetriever(authtypes.AccountRetriever{}). + WithBroadcastMode(flags.BroadcastBlock). + WithHomeDir(app.DefaultNodeHome) + + rootCmd := &cobra.Command{ + Use: version.AppName, + Short: "Wasm Daemon (server)", + PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { + if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { + return err + } + + return server.InterceptConfigsPreRunHandler(cmd) + }, + } + + initRootCmd(rootCmd, encodingConfig) + + return rootCmd, encodingConfig +} + +func initRootCmd(rootCmd *cobra.Command, encodingConfig app.EncodingConfig) { + authclient.Codec = encodingConfig.Marshaler + + rootCmd.AddCommand( + genutilcli.InitCmd(app.ModuleBasics, app.DefaultNodeHome), + genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome), + genutilcli.MigrateGenesisCmd(), + genutilcli.GenTxCmd(app.ModuleBasics, encodingConfig.TxConfig, banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome), + genutilcli.ValidateGenesisCmd(app.ModuleBasics), + AddGenesisAccountCmd(app.DefaultNodeHome), + AddGenesisWasmMsgCmd(app.DefaultNodeHome), + tmcli.NewCompletionCmd(rootCmd, true), + // testnetCmd(app.ModuleBasics, banktypes.GenesisBalancesIterator{}), + debug.Cmd(), + ) + + server.AddCommands(rootCmd, app.DefaultNodeHome, newApp, createWasmAppAndExport, addModuleInitFlags) + + // add keybase, auxiliary RPC, query, and tx child commands + rootCmd.AddCommand( + rpc.StatusCommand(), + queryCommand(), + txCommand(), + keys.Commands(app.DefaultNodeHome), + ) +} + +func addModuleInitFlags(startCmd *cobra.Command) { + crisis.AddModuleInitFlags(startCmd) + wasm.AddModuleInitFlags(startCmd) +} + +func queryCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "query", + Aliases: []string{"q"}, + Short: "Querying subcommands", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + cmd.AddCommand( + authcmd.GetAccountCmd(), + flags.LineBreak, + rpc.ValidatorCommand(), + rpc.BlockCommand(), + authcmd.QueryTxsByEventsCmd(), + authcmd.QueryTxCmd(), + ) + + app.ModuleBasics.AddQueryCommands(cmd) + cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") + + return cmd +} + +func txCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "tx", + Short: "Transactions subcommands", + DisableFlagParsing: true, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + bankcmd.NewSendTxCmd(), + flags.LineBreak, + authcmd.GetSignCommand(), + authcmd.GetSignBatchCommand(), + authcmd.GetMultiSignCommand(), + authcmd.GetValidateSignaturesCommand(), + flags.LineBreak, + authcmd.GetBroadcastCommand(), + authcmd.GetEncodeCommand(), + authcmd.GetDecodeCommand(), + flags.LineBreak, + vestingcli.GetTxCmd(), + ) + + // add modules' tx commands + app.ModuleBasics.AddTxCommands(cmd) + + // remove auth and bank commands as they're mounted under the root tx command + var cmdsToRemove []*cobra.Command + + for _, cmd := range cmd.Commands() { + if cmd.Use == authtypes.ModuleName || cmd.Use == banktypes.ModuleName { + cmdsToRemove = append(cmdsToRemove, cmd) + } + } + + cmd.RemoveCommand(cmdsToRemove...) + cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") + + return cmd +} + +func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { + var cache sdk.MultiStorePersistentCache + + if cast.ToBool(appOpts.Get(server.FlagInterBlockCache)) { + cache = store.NewCommitKVStoreCacheManager() + } + + skipUpgradeHeights := make(map[int64]bool) + for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) { + skipUpgradeHeights[int64(h)] = true + } + + pruningOpts, err := server.GetPruningOptionsFromFlags(appOpts) + if err != nil { + panic(err) + } + + snapshotDir := filepath.Join(cast.ToString(appOpts.Get(flags.FlagHome)), "data", "snapshots") + snapshotDB, err := sdk.NewLevelDB("metadata", snapshotDir) + if err != nil { + panic(err) + } + snapshotStore, err := snapshots.NewStore(snapshotDB, snapshotDir) + if err != nil { + panic(err) + } + var wasmOpts []wasm.Option + if cast.ToBool(appOpts.Get("telemetry.enabled")) { + wasmOpts = append(wasmOpts, wasmkeeper.WithVMCacheMetrics(prometheus.DefaultRegisterer)) + } + + return app.NewWasmApp(logger, db, traceStore, true, skipUpgradeHeights, + cast.ToString(appOpts.Get(flags.FlagHome)), + cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)), + app.GetEnabledProposals(), + appOpts, + wasmOpts, + baseapp.SetPruning(pruningOpts), + baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))), + baseapp.SetHaltHeight(cast.ToUint64(appOpts.Get(server.FlagHaltHeight))), + baseapp.SetHaltTime(cast.ToUint64(appOpts.Get(server.FlagHaltTime))), + baseapp.SetMinRetainBlocks(cast.ToUint64(appOpts.Get(server.FlagMinRetainBlocks))), + baseapp.SetInterBlockCache(cache), + baseapp.SetTrace(cast.ToBool(appOpts.Get(server.FlagTrace))), + baseapp.SetIndexEvents(cast.ToStringSlice(appOpts.Get(server.FlagIndexEvents))), + baseapp.SetSnapshotStore(snapshotStore), + baseapp.SetSnapshotInterval(cast.ToUint64(appOpts.Get(server.FlagStateSyncSnapshotInterval))), + baseapp.SetSnapshotKeepRecent(cast.ToUint32(appOpts.Get(server.FlagStateSyncSnapshotKeepRecent))), + ) +} + +func createWasmAppAndExport( + logger log.Logger, db dbm.DB, traceStore io.Writer, height int64, forZeroHeight bool, jailAllowedAddrs []string, + appOpts servertypes.AppOptions) (servertypes.ExportedApp, error) { + + var wasmApp *app.WasmApp + homePath, ok := appOpts.Get(flags.FlagHome).(string) + if !ok || homePath == "" { + return servertypes.ExportedApp{}, errors.New("application home not set") + } + var emptyWasmOpts []wasm.Option + if height != -1 { + wasmApp = app.NewWasmApp(logger, db, traceStore, false, map[int64]bool{}, homePath, uint(1), app.GetEnabledProposals(), appOpts, emptyWasmOpts) + + if err := wasmApp.LoadHeight(height); err != nil { + return servertypes.ExportedApp{}, err + } + } else { + wasmApp = app.NewWasmApp(logger, db, traceStore, true, map[int64]bool{}, homePath, uint(1), app.GetEnabledProposals(), appOpts, emptyWasmOpts) + } + + return wasmApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs) +} diff --git a/x/wasm/keeper/handler_plugin.go b/x/wasm/keeper/handler_plugin.go index cb7c277bf2..bf31603078 100644 --- a/x/wasm/keeper/handler_plugin.go +++ b/x/wasm/keeper/handler_plugin.go @@ -3,6 +3,7 @@ package keeper import ( "errors" "fmt" + "github.com/line/lbm-sdk/x/wasm/types" wasmvmtypes "github.com/line/wasmvm/types" codectypes "github.com/line/lbm-sdk/codec/types" @@ -111,13 +112,16 @@ func NewMessageHandlerChain(first Messenger, others ...Messenger) *MessageHandle return r } -// DispatchMsg dispatch message to handlers. +// DispatchMsg dispatch message and calls chained handlers one after another in +// order to find the right one to process given message. If a handler cannot +// process given message (returns ErrUnknownMsg), its result is ignored and the +// next handler is executed. func (m MessageHandlerChain) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) ([]sdk.Event, [][]byte, error) { for _, h := range m.handlers { events, data, err := h.DispatchMsg(ctx, contractAddr, contractIBCPortID, msg) switch { case err == nil: - return events, data, err + return events, data, nil case errors.Is(err, types.ErrUnknownMsg): continue default: @@ -133,8 +137,8 @@ type IBCRawPacketHandler struct { capabilityKeeper types.CapabilityKeeper } -func NewIBCRawPacketHandler(chk types.ChannelKeeper, cak types.CapabilityKeeper) *IBCRawPacketHandler { - return &IBCRawPacketHandler{channelKeeper: chk, capabilityKeeper: cak} +func NewIBCRawPacketHandler(chk types.ChannelKeeper, cak types.CapabilityKeeper) IBCRawPacketHandler { + return IBCRawPacketHandler{channelKeeper: chk, capabilityKeeper: cak} } // DispatchMsg publishes a raw IBC packet onto the channel. @@ -180,9 +184,10 @@ func (h IBCRawPacketHandler) DispatchMsg(ctx sdk.Context, _ sdk.AccAddress, cont var _ Messenger = MessageHandlerFunc(nil) -// MessageHandlerFunc is a helper to construct simple function based message handler +// MessageHandlerFunc is a helper to construct a function based message handler. type MessageHandlerFunc func(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) +// DispatchMsg delegates dispatching of provided message into the MessageHandlerFunc. func (m MessageHandlerFunc) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) (events []sdk.Event, data [][]byte, err error) { return m(ctx, contractAddr, contractIBCPortID, msg) } diff --git a/x/wasm/keeper/handler_plugin_encoders_test.go b/x/wasm/keeper/handler_plugin_encoders_test.go index 959bdea074..322556da0f 100644 --- a/x/wasm/keeper/handler_plugin_encoders_test.go +++ b/x/wasm/keeper/handler_plugin_encoders_test.go @@ -2,6 +2,8 @@ package keeper import ( "encoding/json" + "testing" + "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" codectypes "github.com/line/lbm-sdk/codec/types" govtypes "github.com/line/lbm-sdk/x/gov/types" @@ -10,7 +12,6 @@ import ( channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" "github.com/golang/protobuf/proto" "github.com/stretchr/testify/assert" - "testing" "github.com/line/lbm-sdk/x/wasm/types" wasmvmtypes "github.com/line/wasmvm/types" diff --git a/x/wasm/keeper/handler_plugin_test.go b/x/wasm/keeper/handler_plugin_test.go index 3bf124b546..734723153e 100644 --- a/x/wasm/keeper/handler_plugin_test.go +++ b/x/wasm/keeper/handler_plugin_test.go @@ -2,6 +2,8 @@ package keeper import ( "encoding/json" + "testing" + "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" "github.com/line/lbm-sdk/x/wasm/types" wasmvm "github.com/line/wasmvm" @@ -14,9 +16,9 @@ import ( clienttypes "github.com/line/lbm-sdk/x/ibc/core/02-client/types" channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" ibcexported "github.com/line/lbm-sdk/x/ibc/core/exported" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "testing" ) func TestMessageHandlerChainDispatch(t *testing.T) { diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 518095a9a4..0df865a10f 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -229,6 +229,10 @@ func (k Keeper) setParams(ctx sdk.Context, ps types.Params) { } func (k Keeper) create(ctx sdk.Context, creator sdk.AccAddress, wasmCode []byte, instantiateAccess *types.AccessConfig, authZ AuthorizationPolicy) (codeID uint64, err error) { + if creator == "" { + return 0, sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, "cannot be empty") + } + if !authZ.CanCreateCode(k.getUploadAccessConfig(ctx), creator) { return 0, sdkerrors.Wrap(sdkerrors.ErrUnauthorized, "can not create code") } @@ -557,7 +561,6 @@ func (k Keeper) Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte } // reply is only called from keeper internal functions (dispatchSubmessages) after processing the submessage -// it func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply wasmvmtypes.Reply) ([]byte, error) { contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddress) if err != nil { diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index cc3436009f..ec1c3f3218 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -23,6 +23,17 @@ import ( "github.com/stretchr/testify/require" ) +// When migrated to go 1.16, embed package should be used instead. +func init() { + b, err := ioutil.ReadFile("./testdata/hackatom.wasm") + if err != nil { + panic(err) + } + hackatomWasm = b +} + +var hackatomWasm []byte + const SupportedFeatures = "staking,stargate" func TestNewKeeper(t *testing.T) { @@ -30,32 +41,52 @@ func TestNewKeeper(t *testing.T) { require.NotNil(t, keepers.ContractKeeper) } -func TestCreate(t *testing.T) { +func TestCreateSuccess(t *testing.T) { ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) accKeeper, keeper, bankKeeper := keepers.AccountKeeper, keepers.ContractKeeper, keepers.BankKeeper deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - em := sdk.NewEventManager() - codeID, err := keeper.Create(ctx.WithEventManager(em), creator, wasmCode, nil) + contractID, err := keeper.Create(ctx.WithEventManager(em), creator, hackatomWasm, nil) require.NoError(t, err) - require.Equal(t, uint64(1), codeID) + require.Equal(t, uint64(1), contractID) // and verify content - storedCode, err := keepers.WasmKeeper.GetByteCode(ctx, codeID) + storedCode, err := keepers.WasmKeeper.GetByteCode(ctx, contractID) require.NoError(t, err) - require.Equal(t, wasmCode, storedCode) + require.Equal(t, hackatomWasm, storedCode) // and events emitted exp := sdk.Events{sdk.NewEvent("store_code", sdk.NewAttribute("code_id", "1"))} assert.Equal(t, exp, em.Events()) } +func TestCreateNilCreatorAddress(t *testing.T) { + ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) + + _, err := keepers.ContractKeeper.Create(ctx, "", hackatomWasm, nil) + require.Error(t, err, "nil creator is not allowed") +} + +func TestCreateNilWasmCode(t *testing.T) { + ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) + deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) + creator := createFakeFundedAccount(t, ctx, keepers.AccountKeeper, keepers.BankKeeper, deposit) + + _, err := keepers.ContractKeeper.Create(ctx, creator, nil, nil) + require.Error(t, err, "nil WASM code is not allowed") +} + +func TestCreateInvalidWasmCode(t *testing.T) { + ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) + deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) + creator := createFakeFundedAccount(t, ctx, keepers.AccountKeeper, keepers.BankKeeper, deposit) + + _, err := keepers.ContractKeeper.Create(ctx, creator, []byte("potatoes"), nil) + require.Error(t, err, "potatoes are not valid WASM code") +} + func TestCreateStoresInstantiatePermission(t *testing.T) { - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) var ( deposit = sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) myAddr = sdk.BytesToAccAddress(bytes.Repeat([]byte{1}, sdk.BytesAddrLen)) @@ -97,7 +128,7 @@ func TestCreateStoresInstantiatePermission(t *testing.T) { }) fundAccounts(t, ctx, accKeeper, bankKeeper, myAddr, deposit) - codeID, err := keeper.Create(ctx, myAddr, wasmCode, nil) + codeID, err := keeper.Create(ctx, myAddr, hackatomWasm, nil) require.NoError(t, err) codeInfo := keepers.WasmKeeper.GetCodeInfo(ctx, codeID) @@ -115,9 +146,6 @@ func TestCreateWithParamPermissions(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) otherAddr := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - specs := map[string]struct { srcPermission types.AccessConfig expError *sdkerrors.Error @@ -145,7 +173,7 @@ func TestCreateWithParamPermissions(t *testing.T) { params := types.DefaultParams() params.CodeUploadAccess = spec.srcPermission keepers.WasmKeeper.setParams(ctx, params) - _, err := keeper.Create(ctx, creator, wasmCode, nil) + _, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.True(t, spec.expError.Is(err), err) if spec.expError != nil { return @@ -161,26 +189,23 @@ func TestCreateDuplicate(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - // create one copy - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) require.Equal(t, uint64(1), contractID) // create second copy - duplicateID, err := keeper.Create(ctx, creator, wasmCode, nil) + duplicateID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) require.Equal(t, uint64(2), duplicateID) // and verify both content is proper storedCode, err := keepers.WasmKeeper.GetByteCode(ctx, contractID) require.NoError(t, err) - require.Equal(t, wasmCode, storedCode) + require.Equal(t, hackatomWasm, storedCode) storedCode, err = keepers.WasmKeeper.GetByteCode(ctx, duplicateID) require.NoError(t, err) - require.Equal(t, wasmCode, storedCode) + require.Equal(t, hackatomWasm, storedCode) } func TestCreateWithSimulation(t *testing.T) { @@ -193,25 +218,22 @@ func TestCreateWithSimulation(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - // create this once in simulation mode - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) require.Equal(t, uint64(1), contractID) // then try to create it in non-simulation mode (should not fail) ctx, keepers = CreateTestInput(t, false, SupportedFeatures, nil, nil) accKeeper, keeper = keepers.AccountKeeper, keepers.ContractKeeper - contractID, err = keeper.Create(ctx, creator, wasmCode, nil) + contractID, err = keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) require.Equal(t, uint64(1), contractID) // and verify content code, err := keepers.WasmKeeper.GetByteCode(ctx, contractID) require.NoError(t, err) - require.Equal(t, code, wasmCode) + require.Equal(t, code, hackatomWasm) } func TestIsSimulationMode(t *testing.T) { @@ -247,7 +269,7 @@ func TestCreateWithGzippedPayload(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm.gzip") - require.NoError(t, err) + require.NoError(t, err, "reading gzipped WASM code") contractID, err := keeper.Create(ctx, creator, wasmCode, nil) require.NoError(t, err) @@ -255,9 +277,7 @@ func TestCreateWithGzippedPayload(t *testing.T) { // and verify content storedCode, err := keepers.WasmKeeper.GetByteCode(ctx, contractID) require.NoError(t, err) - rawCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - require.Equal(t, rawCode, storedCode) + require.Equal(t, hackatomWasm, storedCode) } func TestInstantiate(t *testing.T) { @@ -267,10 +287,7 @@ func TestInstantiate(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - codeID, err := keeper.Create(ctx, creator, wasmCode, nil) + codeID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -323,9 +340,6 @@ func TestInstantiate(t *testing.T) { } func TestInstantiateWithDeposit(t *testing.T) { - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - var ( bob = sdk.BytesToAccAddress(bytes.Repeat([]byte{1}, sdk.BytesAddrLen)) fred = sdk.BytesToAccAddress(bytes.Repeat([]byte{2}, sdk.BytesAddrLen)) @@ -364,7 +378,7 @@ func TestInstantiateWithDeposit(t *testing.T) { if spec.fundAddr { fundAccounts(t, ctx, accKeeper, bankKeeper, spec.srcActor, sdk.NewCoins(sdk.NewInt64Coin("denom", 200))) } - contractID, err := keeper.Create(ctx, spec.srcActor, wasmCode, nil) + contractID, err := keeper.Create(ctx, spec.srcActor, hackatomWasm, nil) require.NoError(t, err) // when @@ -382,9 +396,6 @@ func TestInstantiateWithDeposit(t *testing.T) { } func TestInstantiateWithPermissions(t *testing.T) { - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - var ( deposit = sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) myAddr = sdk.BytesToAccAddress(bytes.Repeat([]byte{1}, sdk.BytesAddrLen)) @@ -432,7 +443,7 @@ func TestInstantiateWithPermissions(t *testing.T) { accKeeper, bankKeeper, keeper := keepers.AccountKeeper, keepers.BankKeeper, keepers.ContractKeeper fundAccounts(t, ctx, accKeeper, bankKeeper, spec.srcActor, deposit) - contractID, err := keeper.Create(ctx, myAddr, wasmCode, &spec.srcPermission) + contractID, err := keeper.Create(ctx, myAddr, hackatomWasm, &spec.srcPermission) require.NoError(t, err) _, _, err = keepers.ContractKeeper.Instantiate(ctx, contractID, spec.srcActor, "", initMsgBz, "demo contract 1", nil) @@ -484,10 +495,7 @@ func TestExecute(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -560,9 +568,6 @@ func TestExecute(t *testing.T) { } func TestExecuteWithDeposit(t *testing.T) { - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - var ( bob = sdk.BytesToAccAddress(bytes.Repeat([]byte{1}, sdk.BytesAddrLen)) fred = sdk.BytesToAccAddress(bytes.Repeat([]byte{2}, sdk.BytesAddrLen)) @@ -627,7 +632,7 @@ func TestExecuteWithDeposit(t *testing.T) { if spec.fundAddr { fundAccounts(t, ctx, accKeeper, bankKeeper, spec.srcActor, sdk.NewCoins(sdk.NewInt64Coin("denom", 200))) } - codeID, err := keeper.Create(ctx, spec.srcActor, wasmCode, nil) + codeID, err := keeper.Create(ctx, spec.srcActor, hackatomWasm, nil) require.NoError(t, err) initMsg := HackatomExampleInitMsg{Verifier: spec.srcActor, Beneficiary: spec.beneficiary} @@ -674,10 +679,7 @@ func TestExecuteWithPanic(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -708,10 +710,7 @@ func TestExecuteWithCpuLoop(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -753,10 +752,7 @@ func TestExecuteWithStorageLoop(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -1048,12 +1044,10 @@ func TestMigrateWithDispatchedMessage(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, sdk.NewCoins(sdk.NewInt64Coin("denom", 5000))) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) burnerCode, err := ioutil.ReadFile("./testdata/burner.wasm") require.NoError(t, err) - originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) + originalContractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) burnerContractID, err := keeper.Create(ctx, creator, burnerCode, nil) require.NoError(t, err) @@ -1240,9 +1234,7 @@ func TestSudo(t *testing.T) { deposit := sdk.NewCoins(sdk.NewInt64Coin("denom", 100000)) creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - contractID, err := keeper.Create(ctx, creator, wasmCode, nil) + contractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, bob := keyPubAddr() @@ -1329,10 +1321,7 @@ func TestUpdateContractAdmin(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) + originalContractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, anyAddr := keyPubAddr() @@ -1436,10 +1425,7 @@ func TestClearContractAdmin(t *testing.T) { creator := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, deposit.Add(deposit...)) fred := createFakeFundedAccount(t, ctx, accKeeper, bankKeeper, topUp) - wasmCode, err := ioutil.ReadFile("./testdata/hackatom.wasm") - require.NoError(t, err) - - originalContractID, err := keeper.Create(ctx, creator, wasmCode, nil) + originalContractID, err := keeper.Create(ctx, creator, hackatomWasm, nil) require.NoError(t, err) _, _, anyAddr := keyPubAddr() diff --git a/x/wasm/module_test.go b/x/wasm/module_test.go index 3f947e3974..cc5edecfbb 100644 --- a/x/wasm/module_test.go +++ b/x/wasm/module_test.go @@ -30,7 +30,6 @@ type testData struct { stakingKeeper stakingkeeper.Keeper } -// returns a cleanup function, which must be defered on func setupTest(t *testing.T) testData { ctx, keepers := CreateTestInput(t, false, "staking,stargate", nil, nil) cdc := keeper.MakeTestCodec(t) From b021a58f17720a61f87d24e6b5eed57a13afbff9 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Mon, 30 Aug 2021 14:15:50 +0200 Subject: [PATCH 77/90] Add decorator options --- x/wasm/keeper/options.go | 24 ++++++++++++++++---- x/wasm/keeper/options_test.go | 41 +++++++++++++++++++++++++--------- x/wasm/keeper/query_plugins.go | 10 +++++++++ x/wasm/keeper/recurse_test.go | 17 +++++--------- 4 files changed, 66 insertions(+), 26 deletions(-) diff --git a/x/wasm/keeper/options.go b/x/wasm/keeper/options.go index c0aca444d9..165fc17b73 100644 --- a/x/wasm/keeper/options.go +++ b/x/wasm/keeper/options.go @@ -22,23 +22,39 @@ func WithWasmEngine(x types.WasmerEngine) Option { } // WithMessageHandler is an optional constructor parameter to set a custom handler for wasmVM messages. -// This option should not be combined with Option `WithMessageEncoders`. +// This option should not be combined with Option `WithMessageEncoders` or `WithMessageHandlerDecorator` func WithMessageHandler(x Messenger) Option { return optsFn(func(k *Keeper) { k.messenger = x }) } +// WithMessageHandlerDecorator is an optional constructor parameter to decorate the wasm handler for wasmVM messages. +// This option should not be combined with Option `WithMessageEncoders` or `WithMessageHandler` +func WithMessageHandlerDecorator(d func(old Messenger) Messenger) Option { + return optsFn(func(k *Keeper) { + k.messenger = d(k.messenger) + }) +} + // WithQueryHandler is an optional constructor parameter to set custom query handler for wasmVM requests. -// This option should not be combined with Option `WithQueryPlugins`. +// This option should not be combined with Option `WithQueryPlugins` or `WithQueryHandlerDecorator` func WithQueryHandler(x WasmVMQueryHandler) Option { return optsFn(func(k *Keeper) { k.wasmVMQueryHandler = x }) } +// WithQueryHandlerDecorator is an optional constructor parameter to decorate the default wasm query handler for wasmVM requests. +// This option should not be combined with Option `WithQueryPlugins` or `WithQueryHandler` +func WithQueryHandlerDecorator(d func(old WasmVMQueryHandler) WasmVMQueryHandler) Option { + return optsFn(func(k *Keeper) { + k.wasmVMQueryHandler = d(k.wasmVMQueryHandler) + }) +} + // WithQueryPlugins is an optional constructor parameter to pass custom query plugins for wasmVM requests. -// This option expects the default `QueryHandler` set an should not be combined with Option `WithQueryHandler`. +// This option expects the default `QueryHandler` set an should not be combined with Option `WithQueryHandler` or `WithQueryHandlerDecorator`. func WithQueryPlugins(x *QueryPlugins) Option { return optsFn(func(k *Keeper) { q, ok := k.wasmVMQueryHandler.(QueryPlugins) @@ -50,7 +66,7 @@ func WithQueryPlugins(x *QueryPlugins) Option { } // WithMessageEncoders is an optional constructor parameter to pass custom message encoder to the default wasm message handler. -// This option expects the `DefaultMessageHandler` set an should not be combined with Option `WithMessageHandler`. +// This option expects the `DefaultMessageHandler` set and should not be combined with Option `WithMessageHandler` or `WithMessageHandlerDecorator`. func WithMessageEncoders(x *MessageEncoders) Option { return optsFn(func(k *Keeper) { q, ok := k.messenger.(*MessageHandlerChain) diff --git a/x/wasm/keeper/options_test.go b/x/wasm/keeper/options_test.go index b9070d3496..6d0ba2f84d 100644 --- a/x/wasm/keeper/options_test.go +++ b/x/wasm/keeper/options_test.go @@ -1,52 +1,71 @@ package keeper import ( - bankpluskeeper "github.com/line/lbm-sdk/x/bankplus/keeper" "testing" authkeeper "github.com/line/lbm-sdk/x/auth/keeper" + bankpluskeeper "github.com/line/lbm-sdk/x/bankplus/keeper" distributionkeeper "github.com/line/lbm-sdk/x/distribution/keeper" paramtypes "github.com/line/lbm-sdk/x/params/types" stakingkeeper "github.com/line/lbm-sdk/x/staking/keeper" "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" "github.com/line/lbm-sdk/x/wasm/types" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestConstructorOptions(t *testing.T) { specs := map[string]struct { srcOpt Option - verify func(Keeper) + verify func(*testing.T, Keeper) }{ "wasm engine": { srcOpt: WithWasmEngine(&wasmtesting.MockWasmer{}), - verify: func(k Keeper) { - assert.IsType(t, k.wasmVM, &wasmtesting.MockWasmer{}) + verify: func(t *testing.T, k Keeper) { + assert.IsType(t, &wasmtesting.MockWasmer{}, k.wasmVM) }, }, "message handler": { srcOpt: WithMessageHandler(&wasmtesting.MockMessageHandler{}), - verify: func(k Keeper) { - assert.IsType(t, k.messenger, &wasmtesting.MockMessageHandler{}) + verify: func(t *testing.T, k Keeper) { + assert.IsType(t, &wasmtesting.MockMessageHandler{}, k.messenger) }, }, "query plugins": { srcOpt: WithQueryHandler(&wasmtesting.MockQueryHandler{}), - verify: func(k Keeper) { - assert.IsType(t, k.wasmVMQueryHandler, &wasmtesting.MockQueryHandler{}) + verify: func(t *testing.T, k Keeper) { + assert.IsType(t, &wasmtesting.MockQueryHandler{}, k.wasmVMQueryHandler) + }, + }, + "message handler decorator": { + srcOpt: WithMessageHandlerDecorator(func(old Messenger) Messenger { + require.IsType(t, &MessageHandlerChain{}, old) + return &wasmtesting.MockMessageHandler{} + }), + verify: func(t *testing.T, k Keeper) { + assert.IsType(t, &wasmtesting.MockMessageHandler{}, k.messenger) + }, + }, + "query plugins decorator": { + srcOpt: WithQueryHandlerDecorator(func(old WasmVMQueryHandler) WasmVMQueryHandler { + require.IsType(t, QueryPlugins{}, old) + return &wasmtesting.MockQueryHandler{} + }), + verify: func(t *testing.T, k Keeper) { + assert.IsType(t, &wasmtesting.MockQueryHandler{}, k.wasmVMQueryHandler) }, }, "coin transferrer": { srcOpt: WithCoinTransferrer(&wasmtesting.MockCoinTransferrer{}), - verify: func(k Keeper) { - assert.IsType(t, k.bank, &wasmtesting.MockCoinTransferrer{}) + verify: func(t *testing.T, k Keeper) { + assert.IsType(t, &wasmtesting.MockCoinTransferrer{}, k.bank) }, }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { k := NewKeeper(nil, nil, paramtypes.NewSubspace(nil, nil, nil, ""), authkeeper.AccountKeeper{}, bankpluskeeper.BaseKeeper{}, stakingkeeper.Keeper{}, distributionkeeper.Keeper{}, nil, nil, nil, nil, nil, nil, "tempDir", types.DefaultWasmConfig(), SupportedFeatures, nil, nil, spec.srcOpt) - spec.verify(k) + spec.verify(t, k) }) } diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index fd86d3bcbb..459cd46a7c 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -515,3 +515,13 @@ func convertSdkCoinToWasmCoin(coin sdk.Coin) wasmvmtypes.Coin { Amount: coin.Amount.String(), } } + +var _ WasmVMQueryHandler = WasmVMQueryHandlerFn(nil) + +// WasmVMQueryHandlerFn is a helper to construct a function based query handler. +type WasmVMQueryHandlerFn func(ctx sdk.Context, caller sdk.AccAddress, request wasmvmtypes.QueryRequest) ([]byte, error) + +// HandleQuery delegates call into wrapped WasmVMQueryHandlerFn +func (w WasmVMQueryHandlerFn) HandleQuery(ctx sdk.Context, caller sdk.AccAddress, request wasmvmtypes.QueryRequest) ([]byte, error) { + return w(ctx, caller, request) +} diff --git a/x/wasm/keeper/recurse_test.go b/x/wasm/keeper/recurse_test.go index 0cd7ac41b2..bdcc0f1f9f 100644 --- a/x/wasm/keeper/recurse_test.go +++ b/x/wasm/keeper/recurse_test.go @@ -4,7 +4,6 @@ import ( "encoding/json" "testing" - "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" "github.com/line/lbm-sdk/x/wasm/types" wasmvmtypes "github.com/line/wasmvm/types" @@ -40,18 +39,14 @@ type recurseResponse struct { var totalWasmQueryCounter int func initRecurseContract(t *testing.T) (contract sdk.AccAddress, creator sdk.AccAddress, ctx sdk.Context, keeper *Keeper) { - // we do one basic setup before all test cases (which are read-only and don't change state) - var realWasmQuerier func(ctx sdk.Context, request *wasmvmtypes.WasmQuery) ([]byte, error) - countingQuerier := &wasmtesting.MockQueryHandler{ - HandleQueryFn: func(ctx sdk.Context, request wasmvmtypes.QueryRequest, caller sdk.AccAddress) ([]byte, error) { + countingQuerierDec := func(realWasmQuerier WasmVMQueryHandler) WasmVMQueryHandler { + return WasmVMQueryHandlerFn(func(ctx sdk.Context, caller sdk.AccAddress, request wasmvmtypes.QueryRequest) ([]byte, error) { totalWasmQueryCounter++ - return realWasmQuerier(ctx, request.Wasm) - }} - - ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil, WithQueryHandler(countingQuerier)) + return realWasmQuerier.HandleQuery(ctx, caller, request) + }) + } + ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil, WithQueryHandlerDecorator(countingQuerierDec)) keeper = keepers.WasmKeeper - realWasmQuerier = WasmQuerier(keeper) - exampleContract := InstantiateHackatomExampleContract(t, ctx, keepers) return exampleContract.Contract, exampleContract.CreatorAddr, ctx, keeper } From 8d96b4de792827878b2102493655ec04188c3ba1 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Mon, 13 Sep 2021 09:48:31 +0200 Subject: [PATCH 78/90] Fix query handler instantiation --- x/wasm/keeper/keeper.go | 6 +----- x/wasm/keeper/keeper_test.go | 42 +++++++++++++++++++++++++++++------- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 0df865a10f..9579c4b8fb 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -573,11 +573,7 @@ func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply was env := types.NewEnv(ctx, contractAddress) // prepare querier - querier := QueryHandler{ - Ctx: ctx, - Plugins: k.wasmVMQueryHandler, - GasMultiplier: k.getGasMultiplier(ctx), - } + querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddress, k.getGasMultiplier(ctx)) gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) res, gasUsed, execErr := k.wasmVM.Reply(codeInfo.CodeHash, env, reply, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJsonDeserialization) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index ec1c3f3218..2af6ab03d5 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -1846,28 +1846,54 @@ func TestReply(t *testing.T) { example := SeedNewContractInstance(t, ctx, keepers, &mock) specs := map[string]struct { - rsp wasmvmtypes.Response + replyFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) expData []byte expErr bool expEvt sdk.Events }{ "all good": { - rsp: wasmvmtypes.Response{Data: []byte("foo")}, + replyFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { + return &wasmvmtypes.Response{Data: []byte("foo")}, 1, nil + }, + expData: []byte("foo"), + expEvt: sdk.Events{sdk.NewEvent("reply", sdk.NewAttribute("_contract_address", example.Contract.String()))}, + }, + "with query": { + replyFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { + bzRsp, err := querier.Query(wasmvmtypes.QueryRequest{ + Bank: &wasmvmtypes.BankQuery{ + Balance: &wasmvmtypes.BalanceQuery{Address: env.Contract.Address, Denom: "stake"}, + }, + }, 1_000_000) + require.NoError(t, err) + var gotBankRsp wasmvmtypes.BalanceResponse + require.NoError(t, json.Unmarshal(bzRsp, &gotBankRsp)) + assert.Equal(t, wasmvmtypes.BalanceResponse{Amount: wasmvmtypes.NewCoin(0, "stake")}, gotBankRsp) + return &wasmvmtypes.Response{Data: []byte("foo")}, 1, nil + }, + expData: []byte("foo"), + expEvt: sdk.Events{sdk.NewEvent("reply", sdk.NewAttribute("_contract_address", example.Contract.String()))}, + }, + "with query error handled": { + replyFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { + bzRsp, err := querier.Query(wasmvmtypes.QueryRequest{}, 0) + require.Error(t, err) + assert.Nil(t, bzRsp) + return &wasmvmtypes.Response{Data: []byte("foo")}, 1, nil + }, expData: []byte("foo"), expEvt: sdk.Events{sdk.NewEvent("reply", sdk.NewAttribute("_contract_address", example.Contract.String()))}, }, "error": { + replyFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { + return nil, 1, errors.New("testing") + }, expErr: true, }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { - mock.ReplyFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { - if spec.expErr { - return nil, 1, errors.New("testing") - } - return &spec.rsp, 1, nil - } + mock.ReplyFn = spec.replyFn em := sdk.NewEventManager() gotData, gotErr := k.reply(ctx.WithEventManager(em), example.Contract, wasmvmtypes.Reply{}) if spec.expErr { From e519c196169580a6c1f0ab720fa4c0a1ab6d2da2 Mon Sep 17 00:00:00 2001 From: Alex Peters Date: Mon, 13 Sep 2021 14:51:14 +0200 Subject: [PATCH 79/90] Optimize BalanceQuery --- x/wasm/keeper/query_plugins.go | 7 ++--- x/wasm/keeper/query_plugins_test.go | 45 +++++++++++++++++++++++++++++ x/wasm/types/expected_keepers.go | 1 + 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index 459cd46a7c..2bdc565661 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -168,12 +168,11 @@ func BankQuerier(bankKeeper types.BankViewKeeper) func(ctx sdk.Context, request if err != nil { return nil, sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, request.Balance.Address) } - coins := bankKeeper.GetAllBalances(ctx, sdk.AccAddress(request.Balance.Address)) - amount := coins.AmountOf(request.Balance.Denom) + coin := bankKeeper.GetBalance(ctx, sdk.AccAddress(request.Balance.Address), request.Balance.Denom) res := wasmvmtypes.BalanceResponse{ Amount: wasmvmtypes.Coin{ - Denom: request.Balance.Denom, - Amount: amount.String(), + Denom: coin.Denom, + Amount: coin.Amount.String(), }, } return json.Marshal(res) diff --git a/x/wasm/keeper/query_plugins_test.go b/x/wasm/keeper/query_plugins_test.go index 2f91c84d46..9e4db434de 100644 --- a/x/wasm/keeper/query_plugins_test.go +++ b/x/wasm/keeper/query_plugins_test.go @@ -2,6 +2,7 @@ package keeper import ( "testing" + "encoding/json" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" @@ -312,6 +313,31 @@ func TestIBCQuerier(t *testing.T) { } +func TestBankQuerierBalance(t *testing.T) { + mock := bankKeeperMock{GetBalanceFn: func(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin { + return sdk.NewCoin(denom, sdk.NewInt(1)) + }} + + ctx := sdk.Context{} + q := BankQuerier(mock) + gotBz, gotErr := q(ctx, &wasmvmtypes.BankQuery{ + Balance: &wasmvmtypes.BalanceQuery{ + Address: RandomBech32AccountAddress(t), + Denom: "ALX", + }, + }) + require.NoError(t, gotErr) + var got wasmvmtypes.BalanceResponse + require.NoError(t, json.Unmarshal(gotBz, &got)) + exp := wasmvmtypes.BalanceResponse{ + Amount: wasmvmtypes.Coin{ + Denom: "ALX", + Amount: "1", + }, + } + assert.Equal(t, exp, got) +} + type wasmKeeperMock struct { GetContractInfoFn func(ctx sdk.Context, contractAddress sdk.AccAddress) *types.ContractInfo } @@ -326,3 +352,22 @@ func (m wasmKeeperMock) GetContractInfo(ctx sdk.Context, contractAddress sdk.Acc } return m.GetContractInfoFn(ctx, contractAddress) } + +type bankKeeperMock struct { + GetBalanceFn func(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin + GetAllBalancesFn func(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins +} + +func (m bankKeeperMock) GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin { + if m.GetBalanceFn == nil { + panic("not expected to be called") + } + return m.GetBalanceFn(ctx, addr, denom) +} + +func (m bankKeeperMock) GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins { + if m.GetAllBalancesFn == nil { + panic("not expected to be called") + } + return m.GetAllBalancesFn(ctx, addr) +} diff --git a/x/wasm/types/expected_keepers.go b/x/wasm/types/expected_keepers.go index a7bd2b555a..1bf2568443 100644 --- a/x/wasm/types/expected_keepers.go +++ b/x/wasm/types/expected_keepers.go @@ -16,6 +16,7 @@ import ( // BankViewKeeper defines a subset of methods implemented by the cosmos-sdk bank keeper type BankViewKeeper interface { GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins + GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin } // Burner is a subset of the sdk bank keeper methods From a90266f35a24a2b65c64267d2cbad768eea0e73b Mon Sep 17 00:00:00 2001 From: Alexander Peters Date: Tue, 14 Sep 2021 17:25:05 +0200 Subject: [PATCH 80/90] Ensure query isolation (#611) * Ensure query isolation * Review feedback --- x/wasm/keeper/keeper_test.go | 31 +++++++++++++++++++++++++++++++ x/wasm/keeper/query_plugins.go | 9 +++++---- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 2af6ab03d5..589a2e375c 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -1907,6 +1907,37 @@ func TestReply(t *testing.T) { } } +func TestQueryIsolation(t *testing.T) { + ctx, keepers := CreateTestInput(t, false, SupportedFeatures, nil, nil) + k := keepers.WasmKeeper + var mock wasmtesting.MockWasmer + wasmtesting.MakeInstantiable(&mock) + example := SeedNewContractInstance(t, ctx, keepers, &mock) + WithQueryHandlerDecorator(func(other WasmVMQueryHandler) WasmVMQueryHandler { + return WasmVMQueryHandlerFn(func(ctx sdk.Context, caller sdk.AccAddress, request wasmvmtypes.QueryRequest) ([]byte, error) { + if request.Custom == nil { + return other.HandleQuery(ctx, caller, request) + } + // here we write to DB which should not be persisted + ctx.KVStore(k.storeKey).Set([]byte(`set_in_query`), []byte(`this_is_allowed`)) + return nil, nil + }) + }).apply(k) + + // when + mock.ReplyFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { + _, err := querier.Query(wasmvmtypes.QueryRequest{ + Custom: []byte(`{}`), + }, 1_000_000) + require.NoError(t, err) + return &wasmvmtypes.Response{}, 0, nil + } + em := sdk.NewEventManager() + _, gotErr := k.reply(ctx.WithEventManager(em), example.Contract, wasmvmtypes.Reply{}) + require.NoError(t, gotErr) + assert.Nil(t, ctx.KVStore(k.storeKey).Get([]byte(`set_in_query`))) +} + func TestBuildContractAddress(t *testing.T) { specs := map[string]struct { srcCodeID uint64 diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index 2bdc565661..d2c4d06bbf 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -46,15 +46,16 @@ type GRPCQueryRouter interface { var _ wasmvmtypes.Querier = QueryHandler{} func (q QueryHandler) Query(request wasmvmtypes.QueryRequest, gasLimit uint64) ([]byte, error) { - // set a limit for a subctx + // set a limit for a subCtx sdkGas := q.GasMultiplier.FromWasmVMGas(gasLimit) - subctx := q.Ctx.WithGasMeter(sdk.NewGasMeter(sdkGas)) + // discard all changes/ events in subCtx by not committing the cached context + subCtx, _ := q.Ctx.WithGasMeter(sdk.NewGasMeter(sdkGas)).CacheContext() // make sure we charge the higher level context even on panic defer func() { - q.Ctx.GasMeter().ConsumeGas(subctx.GasMeter().GasConsumed(), "contract sub-query") + q.Ctx.GasMeter().ConsumeGas(subCtx.GasMeter().GasConsumed(), "contract sub-query") }() - return q.Plugins.HandleQuery(subctx, q.Caller, request) + return q.Plugins.HandleQuery(subCtx, q.Caller, request) } func (q QueryHandler) GasConsumed() uint64 { From dd736f05921a171764bfca898428027091523695 Mon Sep 17 00:00:00 2001 From: loloicci Date: Tue, 22 Feb 2022 20:45:17 +0900 Subject: [PATCH 81/90] chore: go fmt --- x/wasm/keeper/api.go | 2 +- x/wasm/keeper/events.go | 4 +-- x/wasm/keeper/events_test.go | 2 +- x/wasm/keeper/gas_register.go | 2 +- x/wasm/keeper/handler_plugin.go | 4 +-- x/wasm/keeper/handler_plugin_encoders.go | 4 +-- x/wasm/keeper/handler_plugin_encoders_test.go | 8 +++--- x/wasm/keeper/handler_plugin_test.go | 8 +++--- x/wasm/keeper/query_plugins_test.go | 2 +- x/wasm/keeper/relay_test.go | 8 +++--- x/wasm/types/events.go | 28 +++++++++---------- 11 files changed, 36 insertions(+), 36 deletions(-) diff --git a/x/wasm/keeper/api.go b/x/wasm/keeper/api.go index 4565da7ef8..891c61212a 100644 --- a/x/wasm/keeper/api.go +++ b/x/wasm/keeper/api.go @@ -5,8 +5,8 @@ import ( sdk "github.com/line/lbm-sdk/types" types "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" wasmvm "github.com/line/wasmvm" + wasmvmtypes "github.com/line/wasmvm/types" ) type cosmwasmAPIImpl struct { diff --git a/x/wasm/keeper/events.go b/x/wasm/keeper/events.go index fed59204ef..c7d60663a3 100644 --- a/x/wasm/keeper/events.go +++ b/x/wasm/keeper/events.go @@ -2,10 +2,10 @@ package keeper import ( "fmt" - "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" + "github.com/line/lbm-sdk/x/wasm/types" + wasmvmtypes "github.com/line/wasmvm/types" "strings" ) diff --git a/x/wasm/keeper/events_test.go b/x/wasm/keeper/events_test.go index ea0c9b2e2e..8dcd4b3351 100644 --- a/x/wasm/keeper/events_test.go +++ b/x/wasm/keeper/events_test.go @@ -2,9 +2,9 @@ package keeper import ( "context" + sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/wasm/types" wasmvmtypes "github.com/line/wasmvm/types" - sdk "github.com/line/lbm-sdk/types" "github.com/stretchr/testify/assert" "testing" ) diff --git a/x/wasm/keeper/gas_register.go b/x/wasm/keeper/gas_register.go index 1082cd7400..116a549fe3 100644 --- a/x/wasm/keeper/gas_register.go +++ b/x/wasm/keeper/gas_register.go @@ -1,8 +1,8 @@ package keeper import ( - wasmvmtypes "github.com/line/wasmvm/types" sdk "github.com/line/lbm-sdk/types" + wasmvmtypes "github.com/line/wasmvm/types" ) const ( diff --git a/x/wasm/keeper/handler_plugin.go b/x/wasm/keeper/handler_plugin.go index bf31603078..71f015e0a0 100644 --- a/x/wasm/keeper/handler_plugin.go +++ b/x/wasm/keeper/handler_plugin.go @@ -4,13 +4,13 @@ import ( "errors" "fmt" - "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" codectypes "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" host "github.com/line/lbm-sdk/x/ibc/core/24-host" + "github.com/line/lbm-sdk/x/wasm/types" + wasmvmtypes "github.com/line/wasmvm/types" ) // msgEncoder is an extension point to customize encodings diff --git a/x/wasm/keeper/handler_plugin_encoders.go b/x/wasm/keeper/handler_plugin_encoders.go index fc736e4fd0..42554ad7e6 100644 --- a/x/wasm/keeper/handler_plugin_encoders.go +++ b/x/wasm/keeper/handler_plugin_encoders.go @@ -3,8 +3,6 @@ package keeper import ( "encoding/json" "fmt" - "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" codectypes "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" @@ -15,6 +13,8 @@ import ( ibcclienttypes "github.com/line/lbm-sdk/x/ibc/core/02-client/types" channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" stakingtypes "github.com/line/lbm-sdk/x/staking/types" + "github.com/line/lbm-sdk/x/wasm/types" + wasmvmtypes "github.com/line/wasmvm/types" ) type BankEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.BankMsg) ([]sdk.Msg, error) diff --git a/x/wasm/keeper/handler_plugin_encoders_test.go b/x/wasm/keeper/handler_plugin_encoders_test.go index 322556da0f..90d8ec4d80 100644 --- a/x/wasm/keeper/handler_plugin_encoders_test.go +++ b/x/wasm/keeper/handler_plugin_encoders_test.go @@ -4,21 +4,21 @@ import ( "encoding/json" "testing" - "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" + "github.com/golang/protobuf/proto" codectypes "github.com/line/lbm-sdk/codec/types" govtypes "github.com/line/lbm-sdk/x/gov/types" ibctransfertypes "github.com/line/lbm-sdk/x/ibc/applications/transfer/types" clienttypes "github.com/line/lbm-sdk/x/ibc/core/02-client/types" channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" - "github.com/golang/protobuf/proto" + "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" "github.com/stretchr/testify/assert" - "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" sdk "github.com/line/lbm-sdk/types" banktypes "github.com/line/lbm-sdk/x/bank/types" distributiontypes "github.com/line/lbm-sdk/x/distribution/types" stakingtypes "github.com/line/lbm-sdk/x/staking/types" + "github.com/line/lbm-sdk/x/wasm/types" + wasmvmtypes "github.com/line/wasmvm/types" "github.com/stretchr/testify/require" ) diff --git a/x/wasm/keeper/handler_plugin_test.go b/x/wasm/keeper/handler_plugin_test.go index 734723153e..2de750ac87 100644 --- a/x/wasm/keeper/handler_plugin_test.go +++ b/x/wasm/keeper/handler_plugin_test.go @@ -4,10 +4,6 @@ import ( "encoding/json" "testing" - "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" - "github.com/line/lbm-sdk/x/wasm/types" - wasmvm "github.com/line/wasmvm" - wasmvmtypes "github.com/line/wasmvm/types" "github.com/line/lbm-sdk/baseapp" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" @@ -16,6 +12,10 @@ import ( clienttypes "github.com/line/lbm-sdk/x/ibc/core/02-client/types" channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" ibcexported "github.com/line/lbm-sdk/x/ibc/core/exported" + "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" + "github.com/line/lbm-sdk/x/wasm/types" + wasmvm "github.com/line/wasmvm" + wasmvmtypes "github.com/line/wasmvm/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/x/wasm/keeper/query_plugins_test.go b/x/wasm/keeper/query_plugins_test.go index 9e4db434de..09b396444d 100644 --- a/x/wasm/keeper/query_plugins_test.go +++ b/x/wasm/keeper/query_plugins_test.go @@ -1,8 +1,8 @@ package keeper import ( - "testing" "encoding/json" + "testing" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" diff --git a/x/wasm/keeper/relay_test.go b/x/wasm/keeper/relay_test.go index 87c18a3f55..2cbaa4443d 100644 --- a/x/wasm/keeper/relay_test.go +++ b/x/wasm/keeper/relay_test.go @@ -127,7 +127,7 @@ func TestOnConnectChannel(t *testing.T) { "emit contract events on success": { contractAddr: example.Contract, expContractGas: myContractGas + 10, - contractResp: &wasmvmtypes.IBCBasicResponse{ + contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, expEventTypes: []string{types.WasmModuleEventType}, @@ -240,7 +240,7 @@ func TestOnCloseChannel(t *testing.T) { "emit contract events on success": { contractAddr: example.Contract, expContractGas: myContractGas + 10, - contractResp: &wasmvmtypes.IBCBasicResponse{ + contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, expEventTypes: []string{types.WasmModuleEventType}, @@ -513,7 +513,7 @@ func TestOnAckPacket(t *testing.T) { "emit contract events on success": { contractAddr: example.Contract, expContractGas: myContractGas + 10, - contractResp: &wasmvmtypes.IBCBasicResponse{ + contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, expEventTypes: []string{types.WasmModuleEventType}, @@ -612,7 +612,7 @@ func TestOnTimeoutPacket(t *testing.T) { expErr: true, }, "dispatch contract messages on success": { - contractAddr: example.Contract, + contractAddr: example.Contract, expContractGas: myContractGas, contractResp: &wasmvmtypes.IBCBasicResponse{ diff --git a/x/wasm/types/events.go b/x/wasm/types/events.go index a535facef3..1675860a14 100644 --- a/x/wasm/types/events.go +++ b/x/wasm/types/events.go @@ -6,28 +6,28 @@ const ( // CustomContractEventPrefix contracts can create custom events. To not mix them with other system events they got the `wasm-` prefix. CustomContractEventPrefix = "wasm-" - EventTypeStoreCode = "store_code" - EventTypeInstantiate = "instantiate" - EventTypeExecute = "execute" - EventTypeMigrate = "migrate" + EventTypeStoreCode = "store_code" + EventTypeInstantiate = "instantiate" + EventTypeExecute = "execute" + EventTypeMigrate = "migrate" EventTypeUpdateAdmin = "update_admin" EventTypeClearAdmin = "clear_admin" EventTypeUpdateContractStatus = "update_contract_status" - EventTypePinCode = "pin_code" - EventTypeUnpinCode = "unpin_code" - EventTypeSudo = "sudo" - EventTypeReply = "reply" - EventTypeGovContractResult = "gov_contract_result" + EventTypePinCode = "pin_code" + EventTypeUnpinCode = "unpin_code" + EventTypeSudo = "sudo" + EventTypeReply = "reply" + EventTypeGovContractResult = "gov_contract_result" ) // event attributes returned from contract execution const ( AttributeReservedPrefix = "_" - AttributeKeyContractAddr = "_contract_address" - AttributeKeyCodeID = "code_id" - AttributeKeyCodeIDs = "code_ids" - AttributeKeyResultDataHex = "result" - AttributeKeyFeature = "feature" + AttributeKeyContractAddr = "_contract_address" + AttributeKeyCodeID = "code_id" + AttributeKeyCodeIDs = "code_ids" + AttributeKeyResultDataHex = "result" + AttributeKeyFeature = "feature" AttributeKeyContractStatus = "contract_status" ) From 02799b36a1a3ed6ee40066920f0d3c17bc304908 Mon Sep 17 00:00:00 2001 From: loloicci Date: Tue, 22 Feb 2022 20:54:32 +0900 Subject: [PATCH 82/90] chore: remove unused file --- cmd/wasmd/root.go | 251 ---------------------------------------------- 1 file changed, 251 deletions(-) delete mode 100644 cmd/wasmd/root.go diff --git a/cmd/wasmd/root.go b/cmd/wasmd/root.go deleted file mode 100644 index 485ac51825..0000000000 --- a/cmd/wasmd/root.go +++ /dev/null @@ -1,251 +0,0 @@ -package main - -import ( - "errors" - "io" - "os" - "path/filepath" - - wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" - "github.com/prometheus/client_golang/prometheus" - - "github.com/CosmWasm/wasmd/x/wasm" - clientcodec "github.com/CosmWasm/wasmd/x/wasm/client/codec" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" - vestingcli "github.com/cosmos/cosmos-sdk/x/auth/vesting/client/cli" - bankcmd "github.com/cosmos/cosmos-sdk/x/bank/client/cli" - "github.com/spf13/cast" - "github.com/spf13/cobra" - tmcli "github.com/tendermint/tendermint/libs/cli" - "github.com/tendermint/tendermint/libs/log" - dbm "github.com/tendermint/tm-db" - - "github.com/CosmWasm/wasmd/app" - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/debug" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/keys" - "github.com/cosmos/cosmos-sdk/client/rpc" - "github.com/cosmos/cosmos-sdk/server" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/snapshots" - "github.com/cosmos/cosmos-sdk/store" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/version" - authclient "github.com/cosmos/cosmos-sdk/x/auth/client" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/crisis" - genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" -) - -// NewRootCmd creates a new root command for wasmd. It is called once in the -// main function. -func NewRootCmd() (*cobra.Command, app.EncodingConfig) { - encodingConfig := app.MakeEncodingConfig() - - config := sdk.GetConfig() - config.SetBech32PrefixForAccount(app.Bech32PrefixAccAddr, app.Bech32PrefixAccPub) - config.SetBech32PrefixForValidator(app.Bech32PrefixValAddr, app.Bech32PrefixValPub) - config.SetBech32PrefixForConsensusNode(app.Bech32PrefixConsAddr, app.Bech32PrefixConsPub) - config.Seal() - - initClientCtx := client.Context{}. - WithJSONMarshaler(clientcodec.NewProtoCodec(encodingConfig.Marshaler, encodingConfig.InterfaceRegistry)). - WithInterfaceRegistry(encodingConfig.InterfaceRegistry). - WithTxConfig(encodingConfig.TxConfig). - WithLegacyAmino(encodingConfig.Amino). - WithInput(os.Stdin). - WithAccountRetriever(authtypes.AccountRetriever{}). - WithBroadcastMode(flags.BroadcastBlock). - WithHomeDir(app.DefaultNodeHome) - - rootCmd := &cobra.Command{ - Use: version.AppName, - Short: "Wasm Daemon (server)", - PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { - if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { - return err - } - - return server.InterceptConfigsPreRunHandler(cmd) - }, - } - - initRootCmd(rootCmd, encodingConfig) - - return rootCmd, encodingConfig -} - -func initRootCmd(rootCmd *cobra.Command, encodingConfig app.EncodingConfig) { - authclient.Codec = encodingConfig.Marshaler - - rootCmd.AddCommand( - genutilcli.InitCmd(app.ModuleBasics, app.DefaultNodeHome), - genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome), - genutilcli.MigrateGenesisCmd(), - genutilcli.GenTxCmd(app.ModuleBasics, encodingConfig.TxConfig, banktypes.GenesisBalancesIterator{}, app.DefaultNodeHome), - genutilcli.ValidateGenesisCmd(app.ModuleBasics), - AddGenesisAccountCmd(app.DefaultNodeHome), - AddGenesisWasmMsgCmd(app.DefaultNodeHome), - tmcli.NewCompletionCmd(rootCmd, true), - // testnetCmd(app.ModuleBasics, banktypes.GenesisBalancesIterator{}), - debug.Cmd(), - ) - - server.AddCommands(rootCmd, app.DefaultNodeHome, newApp, createWasmAppAndExport, addModuleInitFlags) - - // add keybase, auxiliary RPC, query, and tx child commands - rootCmd.AddCommand( - rpc.StatusCommand(), - queryCommand(), - txCommand(), - keys.Commands(app.DefaultNodeHome), - ) -} - -func addModuleInitFlags(startCmd *cobra.Command) { - crisis.AddModuleInitFlags(startCmd) - wasm.AddModuleInitFlags(startCmd) -} - -func queryCommand() *cobra.Command { - cmd := &cobra.Command{ - Use: "query", - Aliases: []string{"q"}, - Short: "Querying subcommands", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - cmd.AddCommand( - authcmd.GetAccountCmd(), - flags.LineBreak, - rpc.ValidatorCommand(), - rpc.BlockCommand(), - authcmd.QueryTxsByEventsCmd(), - authcmd.QueryTxCmd(), - ) - - app.ModuleBasics.AddQueryCommands(cmd) - cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") - - return cmd -} - -func txCommand() *cobra.Command { - cmd := &cobra.Command{ - Use: "tx", - Short: "Transactions subcommands", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - bankcmd.NewSendTxCmd(), - flags.LineBreak, - authcmd.GetSignCommand(), - authcmd.GetSignBatchCommand(), - authcmd.GetMultiSignCommand(), - authcmd.GetValidateSignaturesCommand(), - flags.LineBreak, - authcmd.GetBroadcastCommand(), - authcmd.GetEncodeCommand(), - authcmd.GetDecodeCommand(), - flags.LineBreak, - vestingcli.GetTxCmd(), - ) - - // add modules' tx commands - app.ModuleBasics.AddTxCommands(cmd) - - // remove auth and bank commands as they're mounted under the root tx command - var cmdsToRemove []*cobra.Command - - for _, cmd := range cmd.Commands() { - if cmd.Use == authtypes.ModuleName || cmd.Use == banktypes.ModuleName { - cmdsToRemove = append(cmdsToRemove, cmd) - } - } - - cmd.RemoveCommand(cmdsToRemove...) - cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") - - return cmd -} - -func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { - var cache sdk.MultiStorePersistentCache - - if cast.ToBool(appOpts.Get(server.FlagInterBlockCache)) { - cache = store.NewCommitKVStoreCacheManager() - } - - skipUpgradeHeights := make(map[int64]bool) - for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) { - skipUpgradeHeights[int64(h)] = true - } - - pruningOpts, err := server.GetPruningOptionsFromFlags(appOpts) - if err != nil { - panic(err) - } - - snapshotDir := filepath.Join(cast.ToString(appOpts.Get(flags.FlagHome)), "data", "snapshots") - snapshotDB, err := sdk.NewLevelDB("metadata", snapshotDir) - if err != nil { - panic(err) - } - snapshotStore, err := snapshots.NewStore(snapshotDB, snapshotDir) - if err != nil { - panic(err) - } - var wasmOpts []wasm.Option - if cast.ToBool(appOpts.Get("telemetry.enabled")) { - wasmOpts = append(wasmOpts, wasmkeeper.WithVMCacheMetrics(prometheus.DefaultRegisterer)) - } - - return app.NewWasmApp(logger, db, traceStore, true, skipUpgradeHeights, - cast.ToString(appOpts.Get(flags.FlagHome)), - cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)), - app.GetEnabledProposals(), - appOpts, - wasmOpts, - baseapp.SetPruning(pruningOpts), - baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))), - baseapp.SetHaltHeight(cast.ToUint64(appOpts.Get(server.FlagHaltHeight))), - baseapp.SetHaltTime(cast.ToUint64(appOpts.Get(server.FlagHaltTime))), - baseapp.SetMinRetainBlocks(cast.ToUint64(appOpts.Get(server.FlagMinRetainBlocks))), - baseapp.SetInterBlockCache(cache), - baseapp.SetTrace(cast.ToBool(appOpts.Get(server.FlagTrace))), - baseapp.SetIndexEvents(cast.ToStringSlice(appOpts.Get(server.FlagIndexEvents))), - baseapp.SetSnapshotStore(snapshotStore), - baseapp.SetSnapshotInterval(cast.ToUint64(appOpts.Get(server.FlagStateSyncSnapshotInterval))), - baseapp.SetSnapshotKeepRecent(cast.ToUint32(appOpts.Get(server.FlagStateSyncSnapshotKeepRecent))), - ) -} - -func createWasmAppAndExport( - logger log.Logger, db dbm.DB, traceStore io.Writer, height int64, forZeroHeight bool, jailAllowedAddrs []string, - appOpts servertypes.AppOptions) (servertypes.ExportedApp, error) { - - var wasmApp *app.WasmApp - homePath, ok := appOpts.Get(flags.FlagHome).(string) - if !ok || homePath == "" { - return servertypes.ExportedApp{}, errors.New("application home not set") - } - var emptyWasmOpts []wasm.Option - if height != -1 { - wasmApp = app.NewWasmApp(logger, db, traceStore, false, map[int64]bool{}, homePath, uint(1), app.GetEnabledProposals(), appOpts, emptyWasmOpts) - - if err := wasmApp.LoadHeight(height); err != nil { - return servertypes.ExportedApp{}, err - } - } else { - wasmApp = app.NewWasmApp(logger, db, traceStore, true, map[int64]bool{}, homePath, uint(1), app.GetEnabledProposals(), appOpts, emptyWasmOpts) - } - - return wasmApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs) -} From d7cd656f4ee677e4eb069cfde0149995139b90aa Mon Sep 17 00:00:00 2001 From: loloicci Date: Tue, 22 Feb 2022 21:32:10 +0900 Subject: [PATCH 83/90] chore: make format --- baseapp/options.go | 3 ++- client/grpc/tmservice/service.go | 3 ++- client/keys/utils_test.go | 3 ++- server/config/config.go | 3 ++- server/start.go | 5 +++-- simapp/app.go | 7 ++++--- simapp/app_test.go | 7 ++++--- simapp/sim_test.go | 3 ++- simapp/simd/cmd/root_test.go | 7 ++++--- simapp/simd/cmd/testnet_test.go | 7 ++++--- store/cache/cache.go | 1 + store/cachemulti/store_test.go | 3 ++- store/iavl/cache.go | 1 + types/address/store_key_test.go | 1 + types/decimal_internal_test.go | 3 ++- types/result_easyjson.go | 1 + x/auth/client/cli/cli_test.go | 3 ++- x/auth/client/cli/tx.go | 3 ++- x/auth/types/account_test.go | 5 +++-- x/auth/types/msgs_test.go | 3 ++- x/bank/types/key_test.go | 3 ++- x/bankplus/keeper/inactive_test.go | 14 ++++++++------ x/bankplus/keeper/keeper_test.go | 8 +++++--- x/capability/capability_test.go | 2 +- x/consortium/client/testutil/query.go | 3 ++- x/consortium/keeper/grpc_query_test.go | 2 +- x/consortium/keeper/keeper_test.go | 2 +- x/consortium/proposal_handler_test.go | 2 +- x/feegrant/client/cli/query.go | 3 ++- x/feegrant/client/cli/tx.go | 3 ++- x/feegrant/client/testutil/suite.go | 3 ++- x/feegrant/keeper/genesis_test.go | 3 ++- x/feegrant/keeper/grpc_query.go | 3 ++- x/feegrant/keeper/keeper.go | 3 ++- x/feegrant/keeper/keeper_test.go | 3 ++- x/feegrant/module.go | 3 ++- x/feegrant/simulation/decoder_test.go | 3 ++- x/feegrant/simulation/genesis_test.go | 3 ++- x/feegrant/simulation/operations_test.go | 3 ++- x/feegrant/types/basic_fee_test.go | 3 ++- x/feegrant/types/filtered_fee.go | 1 + x/feegrant/types/filtered_fee_test.go | 5 +++-- x/feegrant/types/grant.go | 1 + x/feegrant/types/grant_test.go | 3 ++- x/feegrant/types/msgs.go | 1 + x/feegrant/types/msgs_test.go | 3 ++- x/feegrant/types/periodic_fee_test.go | 3 ++- x/genutil/client/cli/init_test.go | 3 ++- x/gov/client/cli/cli_test.go | 3 ++- x/gov/client/testutil/deposits.go | 5 +++-- x/ibc/core/02-client/keeper/client_test.go | 2 +- x/ibc/core/02-client/keeper/keeper_test.go | 2 +- x/ibc/core/02-client/types/codec_test.go | 2 +- x/ibc/core/02-client/types/genesis_test.go | 2 +- x/ibc/core/03-connection/types/msgs_test.go | 3 ++- x/ibc/core/04-channel/types/msgs_test.go | 3 ++- x/ibc/core/genesis_test.go | 2 +- .../09-localhost/types/client_state_test.go | 2 +- .../types/misbehaviour_handle_test.go | 2 +- x/wasm/client/cli/genesis_msg.go | 8 +++++--- x/wasm/client/cli/genesis_msg_test.go | 13 +++++++------ x/wasm/client/cli/gov_tx.go | 5 +++-- x/wasm/client/cli/new_tx.go | 3 ++- x/wasm/client/cli/query.go | 5 +++-- x/wasm/client/cli/tx.go | 5 +++-- x/wasm/client/codec/marshaller.go | 1 + x/wasm/client/proposal_handler_test.go | 3 ++- x/wasm/client/rest/new_tx.go | 1 + x/wasm/client/rest/query.go | 1 + x/wasm/client/rest/rest.go | 1 + x/wasm/client/rest/tx.go | 1 + x/wasm/client/utils/utils_test.go | 3 ++- x/wasm/common_test.go | 6 ++++-- x/wasm/genesis_test.go | 3 ++- x/wasm/handler.go | 3 ++- x/wasm/ibc.go | 3 ++- x/wasm/keeper/api.go | 5 +++-- x/wasm/keeper/bench_test.go | 3 ++- x/wasm/keeper/events.go | 6 ++++-- x/wasm/keeper/events_test.go | 8 +++++--- x/wasm/keeper/gas_register.go | 3 ++- x/wasm/keeper/genesis.go | 3 ++- x/wasm/keeper/genesis_test.go | 18 ++++++++++-------- x/wasm/keeper/handler_plugin.go | 3 ++- x/wasm/keeper/handler_plugin_encoders.go | 4 +++- x/wasm/keeper/handler_plugin_encoders_test.go | 8 +++++--- x/wasm/keeper/handler_plugin_test.go | 5 +++-- x/wasm/keeper/ibc_test.go | 3 ++- x/wasm/keeper/ioutil_test.go | 3 ++- x/wasm/keeper/keeper.go | 9 +++++---- x/wasm/keeper/keeper_test.go | 11 ++++++----- x/wasm/keeper/legacy_querier.go | 3 ++- x/wasm/keeper/legacy_querier_test.go | 7 ++++--- x/wasm/keeper/msg_dispatcher.go | 5 +++-- x/wasm/keeper/msg_dispatcher_test.go | 5 +++-- x/wasm/keeper/options.go | 5 +++-- x/wasm/keeper/options_test.go | 5 +++-- x/wasm/keeper/proposal_integration_test.go | 7 ++++--- x/wasm/keeper/querier.go | 3 ++- x/wasm/keeper/querier_test.go | 14 ++++++++------ x/wasm/keeper/query_plugins.go | 5 +++-- x/wasm/keeper/query_plugins_test.go | 7 ++++--- x/wasm/keeper/recurse_test.go | 3 ++- x/wasm/keeper/reflect_test.go | 7 ++++--- x/wasm/keeper/relay.go | 3 ++- x/wasm/keeper/relay_test.go | 7 ++++--- x/wasm/keeper/staking_test.go | 9 +++++---- x/wasm/keeper/submsg_test.go | 3 ++- x/wasm/keeper/test_common.go | 17 +++++++++-------- x/wasm/keeper/test_fuzz.go | 3 ++- x/wasm/keeper/wasmtesting/messenger.go | 3 ++- x/wasm/keeper/wasmtesting/mock_engine.go | 5 +++-- x/wasm/keeper/wasmtesting/msg_dispatcher.go | 3 ++- x/wasm/keeper/wasmtesting/query_handler.go | 3 ++- x/wasm/module.go | 7 ++++--- x/wasm/module_test.go | 11 ++++++----- x/wasm/types/exported_keepers.go | 3 ++- x/wasm/types/iavl_range_test.go | 8 +++++--- x/wasm/types/keys_test.go | 3 ++- x/wasm/types/params.go | 5 +++-- x/wasm/types/params_test.go | 5 +++-- x/wasm/types/proposal_test.go | 5 +++-- x/wasm/types/querier_router_test.go | 3 ++- x/wasm/types/router_test.go | 3 ++- x/wasm/types/store.go | 3 ++- x/wasm/types/tx_test.go | 3 ++- x/wasm/types/types.go | 3 ++- x/wasm/types/types_test.go | 9 +++++---- 128 files changed, 340 insertions(+), 212 deletions(-) diff --git a/baseapp/options.go b/baseapp/options.go index dc0199e7e0..78bd10a80c 100644 --- a/baseapp/options.go +++ b/baseapp/options.go @@ -4,9 +4,10 @@ import ( "fmt" "io" + tmdb "github.com/line/tm-db/v2" + "github.com/line/lbm-sdk/store/cache" "github.com/line/lbm-sdk/store/iavl" - tmdb "github.com/line/tm-db/v2" "github.com/line/lbm-sdk/codec/types" "github.com/line/lbm-sdk/snapshots" diff --git a/client/grpc/tmservice/service.go b/client/grpc/tmservice/service.go index 24e43011d7..ad9e12eccd 100644 --- a/client/grpc/tmservice/service.go +++ b/client/grpc/tmservice/service.go @@ -8,13 +8,14 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + abci "github.com/line/ostracon/abci/types" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/rpc" codectypes "github.com/line/lbm-sdk/codec/types" cryptotypes "github.com/line/lbm-sdk/crypto/types" qtypes "github.com/line/lbm-sdk/types/query" "github.com/line/lbm-sdk/version" - abci "github.com/line/ostracon/abci/types" ) // This is the struct that we will implement all the handlers on. diff --git a/client/keys/utils_test.go b/client/keys/utils_test.go index ce31b89a32..9d2f0a75f7 100644 --- a/client/keys/utils_test.go +++ b/client/keys/utils_test.go @@ -4,12 +4,13 @@ import ( "bytes" "testing" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/crypto/hd" "github.com/line/lbm-sdk/crypto/keyring" "github.com/line/lbm-sdk/testutil" "github.com/line/lbm-sdk/types" - "github.com/stretchr/testify/require" ) func Test_printInfos(t *testing.T) { diff --git a/server/config/config.go b/server/config/config.go index 239c745ad8..0ae14ccb87 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -4,9 +4,10 @@ import ( "fmt" "strings" + "github.com/spf13/viper" + "github.com/line/lbm-sdk/store/cache" "github.com/line/lbm-sdk/store/iavl" - "github.com/spf13/viper" storetypes "github.com/line/lbm-sdk/store/types" "github.com/line/lbm-sdk/telemetry" diff --git a/server/start.go b/server/start.go index 881b6cbccf..d2c7425c35 100644 --- a/server/start.go +++ b/server/start.go @@ -8,8 +8,6 @@ import ( "runtime/pprof" "time" - "github.com/line/lbm-sdk/store/cache" - "github.com/line/lbm-sdk/store/iavl" "github.com/line/ostracon/abci/server" ostcmd "github.com/line/ostracon/cmd/ostracon/commands" ostos "github.com/line/ostracon/libs/os" @@ -21,6 +19,9 @@ import ( "github.com/spf13/cobra" "google.golang.org/grpc" + "github.com/line/lbm-sdk/store/cache" + "github.com/line/lbm-sdk/store/iavl" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/server/api" diff --git a/simapp/app.go b/simapp/app.go index ee02883f60..929a7cf5cc 100644 --- a/simapp/app.go +++ b/simapp/app.go @@ -7,9 +7,6 @@ import ( "path/filepath" "github.com/gorilla/mux" - "github.com/line/lbm-sdk/x/feegrant" - feegrantkeeper "github.com/line/lbm-sdk/x/feegrant/keeper" - feegranttypes "github.com/line/lbm-sdk/x/feegrant/types" abci "github.com/line/ostracon/abci/types" ostjson "github.com/line/ostracon/libs/json" "github.com/line/ostracon/libs/log" @@ -19,6 +16,10 @@ import ( "github.com/rakyll/statik/fs" "github.com/spf13/cast" + "github.com/line/lbm-sdk/x/feegrant" + feegrantkeeper "github.com/line/lbm-sdk/x/feegrant/keeper" + feegranttypes "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/grpc/tmservice" diff --git a/simapp/app_test.go b/simapp/app_test.go index 489d0272cd..1b05cb12ae 100644 --- a/simapp/app_test.go +++ b/simapp/app_test.go @@ -11,22 +11,23 @@ import ( "github.com/line/tm-db/v2/memdb" "github.com/stretchr/testify/require" + abci "github.com/line/ostracon/abci/types" + "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/tests/mocks" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/types/module" - abci "github.com/line/ostracon/abci/types" "github.com/line/lbm-sdk/x/auth" "github.com/line/lbm-sdk/x/auth/vesting" banktypes "github.com/line/lbm-sdk/x/bank/types" "github.com/line/lbm-sdk/x/capability" + "github.com/line/lbm-sdk/x/consortium" "github.com/line/lbm-sdk/x/crisis" "github.com/line/lbm-sdk/x/distribution" "github.com/line/lbm-sdk/x/evidence" "github.com/line/lbm-sdk/x/genutil" "github.com/line/lbm-sdk/x/gov" - "github.com/line/lbm-sdk/x/consortium" transfer "github.com/line/lbm-sdk/x/ibc/applications/transfer" ibc "github.com/line/lbm-sdk/x/ibc/core" "github.com/line/lbm-sdk/x/mint" @@ -140,7 +141,7 @@ func TestRunMigrations(t *testing.T) { var err error // Since it's very hard to test actual in-place store migrations in - // tests (due to the difficulty of maintaing multiple versions of a + // tests (due to the difficulty of maintaining multiple versions of a // module), we're just testing here that the migration logic is // called. called := 0 diff --git a/simapp/sim_test.go b/simapp/sim_test.go index 7b677778f0..07f4a3a0b2 100644 --- a/simapp/sim_test.go +++ b/simapp/sim_test.go @@ -7,13 +7,14 @@ import ( "os" "testing" - "github.com/line/lbm-sdk/store/cache" abci "github.com/line/ostracon/abci/types" "github.com/line/ostracon/libs/log" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/line/tm-db/v2/memdb" "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/store/cache" + "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/simapp/helpers" "github.com/line/lbm-sdk/store" diff --git a/simapp/simd/cmd/root_test.go b/simapp/simd/cmd/root_test.go index 582333d3a7..32bf672419 100644 --- a/simapp/simd/cmd/root_test.go +++ b/simapp/simd/cmd/root_test.go @@ -4,13 +4,14 @@ import ( "os" "testing" + "github.com/line/ostracon/libs/log" + "github.com/line/tm-db/v2/memdb" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/server" "github.com/line/lbm-sdk/simapp" "github.com/line/lbm-sdk/store/types" - "github.com/line/ostracon/libs/log" - "github.com/line/tm-db/v2/memdb" - "github.com/stretchr/testify/require" ) func TestNewApp(t *testing.T) { diff --git a/simapp/simd/cmd/testnet_test.go b/simapp/simd/cmd/testnet_test.go index 45456b250b..7ef3bf0184 100644 --- a/simapp/simd/cmd/testnet_test.go +++ b/simapp/simd/cmd/testnet_test.go @@ -5,6 +5,10 @@ import ( "fmt" "testing" + "github.com/line/ostracon/libs/log" + "github.com/spf13/viper" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/server" @@ -12,9 +16,6 @@ import ( banktypes "github.com/line/lbm-sdk/x/bank/types" genutiltest "github.com/line/lbm-sdk/x/genutil/client/testutil" genutiltypes "github.com/line/lbm-sdk/x/genutil/types" - "github.com/spf13/viper" - "github.com/stretchr/testify/require" - "github.com/line/ostracon/libs/log" ) func Test_TestnetCmd(t *testing.T) { diff --git a/store/cache/cache.go b/store/cache/cache.go index e185bdfa56..8683ffb9b4 100644 --- a/store/cache/cache.go +++ b/store/cache/cache.go @@ -5,6 +5,7 @@ import ( "time" "github.com/VictoriaMetrics/fastcache" + "github.com/line/lbm-sdk/store/cachekv" "github.com/line/lbm-sdk/store/types" ) diff --git a/store/cachemulti/store_test.go b/store/cachemulti/store_test.go index 87a85d8f00..7090e8a398 100644 --- a/store/cachemulti/store_test.go +++ b/store/cachemulti/store_test.go @@ -4,8 +4,9 @@ import ( "fmt" "testing" - "github.com/line/lbm-sdk/store/types" "github.com/stretchr/testify/require" + + "github.com/line/lbm-sdk/store/types" ) func TestStoreGetKVStore(t *testing.T) { diff --git a/store/iavl/cache.go b/store/iavl/cache.go index a84df3408c..a4f6b30390 100644 --- a/store/iavl/cache.go +++ b/store/iavl/cache.go @@ -4,6 +4,7 @@ import ( "github.com/VictoriaMetrics/fastcache" "github.com/coocood/freecache" "github.com/dgraph-io/ristretto" + "github.com/line/lbm-sdk/store/types" ) diff --git a/types/address/store_key_test.go b/types/address/store_key_test.go index 4176bcf357..01302841fc 100644 --- a/types/address/store_key_test.go +++ b/types/address/store_key_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/stretchr/testify/suite" + "github.com/line/lbm-sdk/types/address" ) diff --git a/types/decimal_internal_test.go b/types/decimal_internal_test.go index c9646341f4..6e545188a9 100644 --- a/types/decimal_internal_test.go +++ b/types/decimal_internal_test.go @@ -4,8 +4,9 @@ import ( "math/big" "testing" - "github.com/line/lbm-sdk/codec" "github.com/stretchr/testify/suite" + + "github.com/line/lbm-sdk/codec" ) type decimalInternalTestSuite struct { diff --git a/types/result_easyjson.go b/types/result_easyjson.go index 506e3e33f7..ccb2d158a5 100644 --- a/types/result_easyjson.go +++ b/types/result_easyjson.go @@ -4,6 +4,7 @@ package types import ( json "encoding/json" + easyjson "github.com/mailru/easyjson" jlexer "github.com/mailru/easyjson/jlexer" jwriter "github.com/mailru/easyjson/jwriter" diff --git a/x/auth/client/cli/cli_test.go b/x/auth/client/cli/cli_test.go index 598a1c100a..b794c7939e 100644 --- a/x/auth/client/cli/cli_test.go +++ b/x/auth/client/cli/cli_test.go @@ -13,11 +13,12 @@ import ( "testing" "github.com/gogo/protobuf/proto" - sdkerrors "github.com/line/lbm-sdk/types/errors" ostcli "github.com/line/ostracon/libs/cli" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" + sdkerrors "github.com/line/lbm-sdk/types/errors" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/crypto/hd" diff --git a/x/auth/client/cli/tx.go b/x/auth/client/cli/tx.go index d9f01798cb..81c97e1262 100644 --- a/x/auth/client/cli/tx.go +++ b/x/auth/client/cli/tx.go @@ -1,11 +1,12 @@ package cli import ( + "github.com/spf13/cobra" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/client/tx" "github.com/line/lbm-sdk/x/auth/types" - "github.com/spf13/cobra" ) // NewTxCmd returns a root CLI command handler for all x/auth transaction commands. diff --git a/x/auth/types/account_test.go b/x/auth/types/account_test.go index e497cfc197..016aeb312e 100644 --- a/x/auth/types/account_test.go +++ b/x/auth/types/account_test.go @@ -6,11 +6,12 @@ import ( "fmt" "testing" - "github.com/line/lbm-sdk/codec" - types2 "github.com/line/lbm-sdk/codec/types" "github.com/stretchr/testify/require" yaml "gopkg.in/yaml.v2" + "github.com/line/lbm-sdk/codec" + types2 "github.com/line/lbm-sdk/codec/types" + "github.com/line/lbm-sdk/crypto/keys/secp256k1" "github.com/line/lbm-sdk/testutil/testdata" sdk "github.com/line/lbm-sdk/types" diff --git a/x/auth/types/msgs_test.go b/x/auth/types/msgs_test.go index 08d77c022b..62a18d3dd7 100644 --- a/x/auth/types/msgs_test.go +++ b/x/auth/types/msgs_test.go @@ -5,8 +5,9 @@ import ( "fmt" "testing" - sdk "github.com/line/lbm-sdk/types" "github.com/stretchr/testify/require" + + sdk "github.com/line/lbm-sdk/types" ) func TestMsgSendRoute(t *testing.T) { diff --git a/x/bank/types/key_test.go b/x/bank/types/key_test.go index 5306d2ff27..5043a529c1 100644 --- a/x/bank/types/key_test.go +++ b/x/bank/types/key_test.go @@ -3,9 +3,10 @@ package types_test import ( "testing" - "github.com/line/lbm-sdk/x/bank/keeper" "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/x/bank/keeper" + sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/bank/types" ) diff --git a/x/bankplus/keeper/inactive_test.go b/x/bankplus/keeper/inactive_test.go index 6205ed7202..62a8a97c86 100644 --- a/x/bankplus/keeper/inactive_test.go +++ b/x/bankplus/keeper/inactive_test.go @@ -1,6 +1,14 @@ package keeper import ( + "math/rand" + "testing" + + "github.com/line/ostracon/libs/log" + ostproto "github.com/line/ostracon/proto/ostracon/types" + "github.com/line/tm-db/v2/memdb" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/codec" codectypes "github.com/line/lbm-sdk/codec/types" "github.com/line/lbm-sdk/store" @@ -9,12 +17,6 @@ import ( accounttypes "github.com/line/lbm-sdk/x/auth/types" banktypes "github.com/line/lbm-sdk/x/bank/types" paramtypes "github.com/line/lbm-sdk/x/params/types" - "github.com/line/ostracon/libs/log" - ostproto "github.com/line/ostracon/proto/ostracon/types" - "github.com/line/tm-db/v2/memdb" - "github.com/stretchr/testify/require" - "math/rand" - "testing" ) func genAddress() sdk.AccAddress { diff --git a/x/bankplus/keeper/keeper_test.go b/x/bankplus/keeper/keeper_test.go index 613535954e..9571797935 100644 --- a/x/bankplus/keeper/keeper_test.go +++ b/x/bankplus/keeper/keeper_test.go @@ -1,16 +1,18 @@ package keeper_test import ( + "testing" + "github.com/line/lbm-sdk/simapp" sdk "github.com/line/lbm-sdk/types" authkeeper "github.com/line/lbm-sdk/x/auth/keeper" authtypes "github.com/line/lbm-sdk/x/auth/types" - "testing" - "github.com/line/lbm-sdk/x/bank/types" - bankpluskeeper "github.com/line/lbm-sdk/x/bankplus/keeper" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/suite" + + "github.com/line/lbm-sdk/x/bank/types" + bankpluskeeper "github.com/line/lbm-sdk/x/bankplus/keeper" ) const ( diff --git a/x/capability/capability_test.go b/x/capability/capability_test.go index a31a3eaa30..3368d46fed 100644 --- a/x/capability/capability_test.go +++ b/x/capability/capability_test.go @@ -3,9 +3,9 @@ package capability_test import ( "testing" - "github.com/stretchr/testify/suite" abci "github.com/line/ostracon/abci/types" osproto "github.com/line/ostracon/proto/ostracon/types" + "github.com/stretchr/testify/suite" "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/simapp" diff --git a/x/consortium/client/testutil/query.go b/x/consortium/client/testutil/query.go index e589f07f59..cb493be8b6 100644 --- a/x/consortium/client/testutil/query.go +++ b/x/consortium/client/testutil/query.go @@ -4,10 +4,11 @@ import ( "fmt" "strings" + ostcli "github.com/line/ostracon/libs/cli" + "github.com/line/lbm-sdk/client/flags" clitestutil "github.com/line/lbm-sdk/testutil/cli" "github.com/line/lbm-sdk/x/consortium/client/cli" - ostcli "github.com/line/ostracon/libs/cli" ) func (s *IntegrationTestSuite) TestNewQueryCmdParams() { diff --git a/x/consortium/keeper/grpc_query_test.go b/x/consortium/keeper/grpc_query_test.go index 9f8f4efe82..7f00d704e6 100644 --- a/x/consortium/keeper/grpc_query_test.go +++ b/x/consortium/keeper/grpc_query_test.go @@ -130,7 +130,7 @@ func (suite *ConsortiumTestSuite) TestQueryValidatorAuth() { } func (suite *ConsortiumTestSuite) TestQueryValidatorAuths() { - var req *types.QueryValidatorAuthsRequest + var req *types.QueryValidatorAuthsRequest testCases := []struct { msg string malleate func() diff --git a/x/consortium/keeper/keeper_test.go b/x/consortium/keeper/keeper_test.go index ef28ff421b..b64bf34b57 100644 --- a/x/consortium/keeper/keeper_test.go +++ b/x/consortium/keeper/keeper_test.go @@ -25,7 +25,7 @@ func TestCleanup(t *testing.T) { k := app.ConsortiumKeeper // add auths - auth := &types.ValidatorAuth{ + auth := &types.ValidatorAuth{ OperatorAddress: valAddr.String(), CreationAllowed: true, } diff --git a/x/consortium/proposal_handler_test.go b/x/consortium/proposal_handler_test.go index 7a398fd5a1..278d33195c 100644 --- a/x/consortium/proposal_handler_test.go +++ b/x/consortium/proposal_handler_test.go @@ -53,7 +53,7 @@ func TestProposalHandler(t *testing.T) { keeper := app.ConsortiumKeeper params_on := newParams(true) keeper.SetParams(ctx, params_on) - + handler := consortium.NewProposalHandler(keeper) // test adding creation allowed validators diff --git a/x/feegrant/client/cli/query.go b/x/feegrant/client/cli/query.go index be45087acb..e26d6b10ba 100644 --- a/x/feegrant/client/cli/query.go +++ b/x/feegrant/client/cli/query.go @@ -4,9 +4,10 @@ import ( "fmt" "strings" - "github.com/line/lbm-sdk/x/feegrant/types" "github.com/spf13/cobra" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" sdk "github.com/line/lbm-sdk/types" diff --git a/x/feegrant/client/cli/tx.go b/x/feegrant/client/cli/tx.go index f028d9dff0..175c732af6 100644 --- a/x/feegrant/client/cli/tx.go +++ b/x/feegrant/client/cli/tx.go @@ -5,9 +5,10 @@ import ( "strings" "time" - "github.com/line/lbm-sdk/x/feegrant/types" "github.com/spf13/cobra" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/client/tx" diff --git a/x/feegrant/client/testutil/suite.go b/x/feegrant/client/testutil/suite.go index 2be955ef26..f4baee8439 100644 --- a/x/feegrant/client/testutil/suite.go +++ b/x/feegrant/client/testutil/suite.go @@ -7,10 +7,11 @@ import ( "time" "github.com/gogo/protobuf/proto" - "github.com/line/lbm-sdk/x/feegrant/types" tmcli "github.com/line/ostracon/libs/cli" "github.com/stretchr/testify/suite" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/crypto/hd" diff --git a/x/feegrant/keeper/genesis_test.go b/x/feegrant/keeper/genesis_test.go index 705c1b2696..84e135e42f 100644 --- a/x/feegrant/keeper/genesis_test.go +++ b/x/feegrant/keeper/genesis_test.go @@ -3,10 +3,11 @@ package keeper_test import ( "testing" - "github.com/line/lbm-sdk/x/feegrant/types" tmproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/suite" + "github.com/line/lbm-sdk/x/feegrant/types" + codectypes "github.com/line/lbm-sdk/codec/types" "github.com/line/lbm-sdk/crypto/keys/secp256k1" "github.com/line/lbm-sdk/simapp" diff --git a/x/feegrant/keeper/grpc_query.go b/x/feegrant/keeper/grpc_query.go index 3f0fd74f0e..cdae1b7d54 100644 --- a/x/feegrant/keeper/grpc_query.go +++ b/x/feegrant/keeper/grpc_query.go @@ -4,10 +4,11 @@ import ( "context" "github.com/gogo/protobuf/proto" - "github.com/line/lbm-sdk/x/feegrant/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "github.com/line/lbm-sdk/x/feegrant/types" + codectypes "github.com/line/lbm-sdk/codec/types" "github.com/line/lbm-sdk/store/prefix" sdk "github.com/line/lbm-sdk/types" diff --git a/x/feegrant/keeper/keeper.go b/x/feegrant/keeper/keeper.go index f175f896bf..8a3510095c 100644 --- a/x/feegrant/keeper/keeper.go +++ b/x/feegrant/keeper/keeper.go @@ -3,9 +3,10 @@ package keeper import ( "fmt" + "github.com/line/ostracon/libs/log" + storetypes "github.com/line/lbm-sdk/store/types" "github.com/line/lbm-sdk/x/feegrant/types" - "github.com/line/ostracon/libs/log" "github.com/line/lbm-sdk/codec" sdk "github.com/line/lbm-sdk/types" diff --git a/x/feegrant/keeper/keeper_test.go b/x/feegrant/keeper/keeper_test.go index ff39684608..72a0f38be0 100644 --- a/x/feegrant/keeper/keeper_test.go +++ b/x/feegrant/keeper/keeper_test.go @@ -4,10 +4,11 @@ import ( "context" "testing" - "github.com/line/lbm-sdk/x/feegrant/types" tmproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/suite" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/simapp" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/feegrant/keeper" diff --git a/x/feegrant/module.go b/x/feegrant/module.go index 72575289bc..b89f4d3ec8 100644 --- a/x/feegrant/module.go +++ b/x/feegrant/module.go @@ -7,10 +7,11 @@ import ( "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/line/lbm-sdk/x/feegrant/types" abci "github.com/line/ostracon/abci/types" "github.com/spf13/cobra" + "github.com/line/lbm-sdk/x/feegrant/types" + sdkclient "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" cdctypes "github.com/line/lbm-sdk/codec/types" diff --git a/x/feegrant/simulation/decoder_test.go b/x/feegrant/simulation/decoder_test.go index bc1d31830d..be5a0b5bcf 100644 --- a/x/feegrant/simulation/decoder_test.go +++ b/x/feegrant/simulation/decoder_test.go @@ -4,9 +4,10 @@ import ( "fmt" "testing" - "github.com/line/lbm-sdk/x/feegrant/types" "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/crypto/keys/ed25519" "github.com/line/lbm-sdk/simapp" sdk "github.com/line/lbm-sdk/types" diff --git a/x/feegrant/simulation/genesis_test.go b/x/feegrant/simulation/genesis_test.go index 7a1d752bbb..2e4c403c03 100644 --- a/x/feegrant/simulation/genesis_test.go +++ b/x/feegrant/simulation/genesis_test.go @@ -5,9 +5,10 @@ import ( "math/rand" "testing" - "github.com/line/lbm-sdk/x/feegrant/types" "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/simapp" "github.com/line/lbm-sdk/types/module" simtypes "github.com/line/lbm-sdk/types/simulation" diff --git a/x/feegrant/simulation/operations_test.go b/x/feegrant/simulation/operations_test.go index 37aa353aa2..d9c4e35c17 100644 --- a/x/feegrant/simulation/operations_test.go +++ b/x/feegrant/simulation/operations_test.go @@ -5,11 +5,12 @@ import ( "testing" "time" - "github.com/line/lbm-sdk/x/feegrant/types" abci "github.com/line/ostracon/abci/types" tmproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/suite" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/simapp" simappparams "github.com/line/lbm-sdk/simapp/params" sdk "github.com/line/lbm-sdk/types" diff --git a/x/feegrant/types/basic_fee_test.go b/x/feegrant/types/basic_fee_test.go index 57f127a0fd..62c9947bbb 100644 --- a/x/feegrant/types/basic_fee_test.go +++ b/x/feegrant/types/basic_fee_test.go @@ -4,11 +4,12 @@ import ( "testing" "time" - "github.com/line/lbm-sdk/x/feegrant/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/simapp" sdk "github.com/line/lbm-sdk/types" ) diff --git a/x/feegrant/types/filtered_fee.go b/x/feegrant/types/filtered_fee.go index b860b58338..a0f2d98090 100644 --- a/x/feegrant/types/filtered_fee.go +++ b/x/feegrant/types/filtered_fee.go @@ -2,6 +2,7 @@ package types import ( "github.com/gogo/protobuf/proto" + "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" diff --git a/x/feegrant/types/filtered_fee_test.go b/x/feegrant/types/filtered_fee_test.go index 807eae175b..fe80b972a1 100644 --- a/x/feegrant/types/filtered_fee_test.go +++ b/x/feegrant/types/filtered_fee_test.go @@ -4,12 +4,13 @@ import ( "testing" "time" - "github.com/line/lbm-sdk/x/feegrant/types" - authtypes "github.com/line/lbm-sdk/x/auth/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + authtypes "github.com/line/lbm-sdk/x/auth/types" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/simapp" sdk "github.com/line/lbm-sdk/types" ) diff --git a/x/feegrant/types/grant.go b/x/feegrant/types/grant.go index d98ff4e16c..12e733358b 100644 --- a/x/feegrant/types/grant.go +++ b/x/feegrant/types/grant.go @@ -2,6 +2,7 @@ package types import ( "github.com/gogo/protobuf/proto" + "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" diff --git a/x/feegrant/types/grant_test.go b/x/feegrant/types/grant_test.go index 3e5945cec7..ff150a7ab9 100644 --- a/x/feegrant/types/grant_test.go +++ b/x/feegrant/types/grant_test.go @@ -4,10 +4,11 @@ import ( "testing" "time" - "github.com/line/lbm-sdk/x/feegrant/types" ocproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/simapp" sdk "github.com/line/lbm-sdk/types" ) diff --git a/x/feegrant/types/msgs.go b/x/feegrant/types/msgs.go index a2d90f6c8d..87ffd781d8 100644 --- a/x/feegrant/types/msgs.go +++ b/x/feegrant/types/msgs.go @@ -2,6 +2,7 @@ package types import ( "github.com/gogo/protobuf/proto" + "github.com/line/lbm-sdk/codec/legacy" "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" diff --git a/x/feegrant/types/msgs_test.go b/x/feegrant/types/msgs_test.go index 68001b2680..bd416e7728 100644 --- a/x/feegrant/types/msgs_test.go +++ b/x/feegrant/types/msgs_test.go @@ -4,9 +4,10 @@ import ( "testing" "time" - "github.com/line/lbm-sdk/x/feegrant/types" "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/codec" codectypes "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" diff --git a/x/feegrant/types/periodic_fee_test.go b/x/feegrant/types/periodic_fee_test.go index 9949df65db..0d551e17c0 100644 --- a/x/feegrant/types/periodic_fee_test.go +++ b/x/feegrant/types/periodic_fee_test.go @@ -4,11 +4,12 @@ import ( "testing" "time" - "github.com/line/lbm-sdk/x/feegrant/types" tmproto "github.com/line/ostracon/proto/ostracon/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/x/feegrant/types" + "github.com/line/lbm-sdk/simapp" sdk "github.com/line/lbm-sdk/types" ) diff --git a/x/genutil/client/cli/init_test.go b/x/genutil/client/cli/init_test.go index 7c8f84bed0..ade835702a 100644 --- a/x/genutil/client/cli/init_test.go +++ b/x/genutil/client/cli/init_test.go @@ -10,13 +10,14 @@ import ( "testing" "time" - ed255192 "github.com/line/lbm-sdk/crypto/keys/ed25519" abci_server "github.com/line/ostracon/abci/server" "github.com/line/ostracon/libs/cli" "github.com/line/ostracon/libs/log" "github.com/spf13/viper" "github.com/stretchr/testify/require" + ed255192 "github.com/line/lbm-sdk/crypto/keys/ed25519" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/codec/types" diff --git a/x/gov/client/cli/cli_test.go b/x/gov/client/cli/cli_test.go index 3ec7cc4b0d..ba6fd6a3f2 100644 --- a/x/gov/client/cli/cli_test.go +++ b/x/gov/client/cli/cli_test.go @@ -9,9 +9,10 @@ import ( "testing" "github.com/gogo/protobuf/proto" - "github.com/line/lbm-sdk/testutil" "github.com/stretchr/testify/suite" + "github.com/line/lbm-sdk/testutil" + ostcli "github.com/line/ostracon/libs/cli" "github.com/line/lbm-sdk/client/flags" diff --git a/x/gov/client/testutil/deposits.go b/x/gov/client/testutil/deposits.go index b0a439c778..4c92af2ea4 100644 --- a/x/gov/client/testutil/deposits.go +++ b/x/gov/client/testutil/deposits.go @@ -4,13 +4,14 @@ import ( "fmt" "time" + ostcli "github.com/line/ostracon/libs/cli" + "github.com/stretchr/testify/suite" + clitestutil "github.com/line/lbm-sdk/testutil/cli" "github.com/line/lbm-sdk/testutil/network" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/gov/client/cli" "github.com/line/lbm-sdk/x/gov/types" - ostcli "github.com/line/ostracon/libs/cli" - "github.com/stretchr/testify/suite" ) type DepositTestSuite struct { diff --git a/x/ibc/core/02-client/keeper/client_test.go b/x/ibc/core/02-client/keeper/client_test.go index e3109d3916..d5f2701d13 100644 --- a/x/ibc/core/02-client/keeper/client_test.go +++ b/x/ibc/core/02-client/keeper/client_test.go @@ -11,8 +11,8 @@ import ( clienttypes "github.com/line/lbm-sdk/x/ibc/core/02-client/types" commitmenttypes "github.com/line/lbm-sdk/x/ibc/core/23-commitment/types" "github.com/line/lbm-sdk/x/ibc/core/exported" - ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" localhoctypes "github.com/line/lbm-sdk/x/ibc/light-clients/09-localhost/types" + ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" ibctesting "github.com/line/lbm-sdk/x/ibc/testing" ibctestingmock "github.com/line/lbm-sdk/x/ibc/testing/mock" upgradetypes "github.com/line/lbm-sdk/x/upgrade/types" diff --git a/x/ibc/core/02-client/keeper/keeper_test.go b/x/ibc/core/02-client/keeper/keeper_test.go index 7f1019ff52..f5a2535ac2 100644 --- a/x/ibc/core/02-client/keeper/keeper_test.go +++ b/x/ibc/core/02-client/keeper/keeper_test.go @@ -19,8 +19,8 @@ import ( "github.com/line/lbm-sdk/x/ibc/core/02-client/types" commitmenttypes "github.com/line/lbm-sdk/x/ibc/core/23-commitment/types" "github.com/line/lbm-sdk/x/ibc/core/exported" - ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" localhoctypes "github.com/line/lbm-sdk/x/ibc/light-clients/09-localhost/types" + ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" ibctesting "github.com/line/lbm-sdk/x/ibc/testing" ibctestingmock "github.com/line/lbm-sdk/x/ibc/testing/mock" stakingtypes "github.com/line/lbm-sdk/x/staking/types" diff --git a/x/ibc/core/02-client/types/codec_test.go b/x/ibc/core/02-client/types/codec_test.go index 48f8ad6fd5..34eb1c1ccc 100644 --- a/x/ibc/core/02-client/types/codec_test.go +++ b/x/ibc/core/02-client/types/codec_test.go @@ -5,8 +5,8 @@ import ( "github.com/line/lbm-sdk/x/ibc/core/02-client/types" commitmenttypes "github.com/line/lbm-sdk/x/ibc/core/23-commitment/types" "github.com/line/lbm-sdk/x/ibc/core/exported" - ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" localhoctypes "github.com/line/lbm-sdk/x/ibc/light-clients/09-localhost/types" + ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" ibctesting "github.com/line/lbm-sdk/x/ibc/testing" ) diff --git a/x/ibc/core/02-client/types/genesis_test.go b/x/ibc/core/02-client/types/genesis_test.go index f528dd0633..2b57ad7670 100644 --- a/x/ibc/core/02-client/types/genesis_test.go +++ b/x/ibc/core/02-client/types/genesis_test.go @@ -10,8 +10,8 @@ import ( channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" commitmenttypes "github.com/line/lbm-sdk/x/ibc/core/23-commitment/types" "github.com/line/lbm-sdk/x/ibc/core/exported" - ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" localhoctypes "github.com/line/lbm-sdk/x/ibc/light-clients/09-localhost/types" + ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" ibctesting "github.com/line/lbm-sdk/x/ibc/testing" ibctestingmock "github.com/line/lbm-sdk/x/ibc/testing/mock" ) diff --git a/x/ibc/core/03-connection/types/msgs_test.go b/x/ibc/core/03-connection/types/msgs_test.go index 1617c66996..1a82a721fd 100644 --- a/x/ibc/core/03-connection/types/msgs_test.go +++ b/x/ibc/core/03-connection/types/msgs_test.go @@ -9,6 +9,8 @@ import ( "github.com/line/tm-db/v2/memdb" + abci "github.com/line/ostracon/abci/types" + "github.com/line/lbm-sdk/simapp" "github.com/line/lbm-sdk/store/iavl" "github.com/line/lbm-sdk/store/rootmulti" @@ -19,7 +21,6 @@ import ( commitmenttypes "github.com/line/lbm-sdk/x/ibc/core/23-commitment/types" ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" ibctesting "github.com/line/lbm-sdk/x/ibc/testing" - abci "github.com/line/ostracon/abci/types" ) var ( diff --git a/x/ibc/core/04-channel/types/msgs_test.go b/x/ibc/core/04-channel/types/msgs_test.go index 967e97f4a3..a0f379191a 100644 --- a/x/ibc/core/04-channel/types/msgs_test.go +++ b/x/ibc/core/04-channel/types/msgs_test.go @@ -8,6 +8,8 @@ import ( "github.com/line/tm-db/v2/memdb" + abci "github.com/line/ostracon/abci/types" + "github.com/line/lbm-sdk/simapp" "github.com/line/lbm-sdk/store/iavl" "github.com/line/lbm-sdk/store/rootmulti" @@ -17,7 +19,6 @@ import ( "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" commitmenttypes "github.com/line/lbm-sdk/x/ibc/core/23-commitment/types" "github.com/line/lbm-sdk/x/ibc/core/exported" - abci "github.com/line/ostracon/abci/types" ) const ( diff --git a/x/ibc/core/genesis_test.go b/x/ibc/core/genesis_test.go index 386b5af088..63afcc4f07 100644 --- a/x/ibc/core/genesis_test.go +++ b/x/ibc/core/genesis_test.go @@ -16,8 +16,8 @@ import ( commitmenttypes "github.com/line/lbm-sdk/x/ibc/core/23-commitment/types" "github.com/line/lbm-sdk/x/ibc/core/exported" "github.com/line/lbm-sdk/x/ibc/core/types" - ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" localhoctypes "github.com/line/lbm-sdk/x/ibc/light-clients/09-localhost/types" + ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" ibctesting "github.com/line/lbm-sdk/x/ibc/testing" ) diff --git a/x/ibc/light-clients/09-localhost/types/client_state_test.go b/x/ibc/light-clients/09-localhost/types/client_state_test.go index cbf4e91b29..e795e1e3fb 100644 --- a/x/ibc/light-clients/09-localhost/types/client_state_test.go +++ b/x/ibc/light-clients/09-localhost/types/client_state_test.go @@ -8,8 +8,8 @@ import ( commitmenttypes "github.com/line/lbm-sdk/x/ibc/core/23-commitment/types" host "github.com/line/lbm-sdk/x/ibc/core/24-host" "github.com/line/lbm-sdk/x/ibc/core/exported" - ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" "github.com/line/lbm-sdk/x/ibc/light-clients/09-localhost/types" + ibctmtypes "github.com/line/lbm-sdk/x/ibc/light-clients/99-ostracon/types" ) const ( diff --git a/x/ibc/light-clients/99-ostracon/types/misbehaviour_handle_test.go b/x/ibc/light-clients/99-ostracon/types/misbehaviour_handle_test.go index 1e381e5efb..9051a7b80f 100644 --- a/x/ibc/light-clients/99-ostracon/types/misbehaviour_handle_test.go +++ b/x/ibc/light-clients/99-ostracon/types/misbehaviour_handle_test.go @@ -309,7 +309,7 @@ func (suite *TendermintTestSuite) TestCheckMisbehaviourAndUpdateState() { types.NewConsensusState(suite.now, commitmenttypes.NewMerkleRoot(tmhash.Sum([]byte("app_hash"))), bothValsHash), height, &types.Misbehaviour{ - Header1: suite.chainA.CreateOCClientHeader(chainID, int64(height.RevisionHeight), height, suite.now, bothValSet, bothValSet,bothVoterSet, bothVoterSet, bothSigners), + Header1: suite.chainA.CreateOCClientHeader(chainID, int64(height.RevisionHeight), height, suite.now, bothValSet, bothValSet, bothVoterSet, bothVoterSet, bothSigners), Header2: suite.chainA.CreateOCClientHeader(chainID, int64(height.RevisionHeight), height, suite.now.Add(time.Minute), altValSet, bothValSet, octypes.WrapValidatorsToVoterSet(altValSet.Validators), bothVoterSet, altSigners), ClientId: chainID, }, diff --git a/x/wasm/client/cli/genesis_msg.go b/x/wasm/client/cli/genesis_msg.go index f111998540..fe16eea701 100644 --- a/x/wasm/client/cli/genesis_msg.go +++ b/x/wasm/client/cli/genesis_msg.go @@ -8,8 +8,13 @@ import ( "encoding/json" "errors" "fmt" + "github.com/line/lbm-sdk/x/wasm/keeper" + "github.com/line/ostracon/crypto" + octypes "github.com/line/ostracon/types" + "github.com/spf13/cobra" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/crypto/keyring" @@ -20,9 +25,6 @@ import ( "github.com/line/lbm-sdk/x/genutil" genutiltypes "github.com/line/lbm-sdk/x/genutil/types" "github.com/line/lbm-sdk/x/wasm/types" - "github.com/line/ostracon/crypto" - octypes "github.com/line/ostracon/types" - "github.com/spf13/cobra" ) // GenesisReader reads genesis data. Extension point for custom genesis state readers. diff --git a/x/wasm/client/cli/genesis_msg_test.go b/x/wasm/client/cli/genesis_msg_test.go index 158a70f736..24e4d80a13 100644 --- a/x/wasm/client/cli/genesis_msg_test.go +++ b/x/wasm/client/cli/genesis_msg_test.go @@ -8,6 +8,13 @@ import ( "path" "testing" + "github.com/line/ostracon/libs/log" + octypes "github.com/line/ostracon/types" + "github.com/spf13/cobra" + "github.com/spf13/viper" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/crypto/hd" @@ -22,12 +29,6 @@ import ( stakingtypes "github.com/line/lbm-sdk/x/staking/types" "github.com/line/lbm-sdk/x/wasm/keeper" "github.com/line/lbm-sdk/x/wasm/types" - "github.com/line/ostracon/libs/log" - octypes "github.com/line/ostracon/types" - "github.com/spf13/cobra" - "github.com/spf13/viper" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) var wasmIdent = []byte("\x00\x61\x73\x6D") diff --git a/x/wasm/client/cli/gov_tx.go b/x/wasm/client/cli/gov_tx.go index 49b7bec983..67c9c4726f 100644 --- a/x/wasm/client/cli/gov_tx.go +++ b/x/wasm/client/cli/gov_tx.go @@ -3,14 +3,15 @@ package cli import ( "fmt" + "github.com/pkg/errors" + "github.com/spf13/cobra" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/tx" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/gov/client/cli" govtypes "github.com/line/lbm-sdk/x/gov/types" "github.com/line/lbm-sdk/x/wasm/types" - "github.com/pkg/errors" - "github.com/spf13/cobra" ) func ProposalStoreCodeCmd() *cobra.Command { diff --git a/x/wasm/client/cli/new_tx.go b/x/wasm/client/cli/new_tx.go index f1169d964a..7f22d61866 100644 --- a/x/wasm/client/cli/new_tx.go +++ b/x/wasm/client/cli/new_tx.go @@ -3,12 +3,13 @@ package cli import ( "strconv" + "github.com/spf13/cobra" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/client/tx" sdkerrors "github.com/line/lbm-sdk/types/errors" "github.com/line/lbm-sdk/x/wasm/types" - "github.com/spf13/cobra" ) // MigrateContractCmd will migrate a contract to a new code version diff --git a/x/wasm/client/cli/query.go b/x/wasm/client/cli/query.go index 9d09385683..6806e974d3 100644 --- a/x/wasm/client/cli/query.go +++ b/x/wasm/client/cli/query.go @@ -10,12 +10,13 @@ import ( "io/ioutil" "strconv" + "github.com/spf13/cobra" + flag "github.com/spf13/pflag" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/wasm/types" - "github.com/spf13/cobra" - flag "github.com/spf13/pflag" ) func GetQueryCmd() *cobra.Command { diff --git a/x/wasm/client/cli/tx.go b/x/wasm/client/cli/tx.go index d2fe5b327e..5af45b3bfd 100644 --- a/x/wasm/client/cli/tx.go +++ b/x/wasm/client/cli/tx.go @@ -6,6 +6,9 @@ import ( "io/ioutil" "strconv" + "github.com/spf13/cobra" + flag "github.com/spf13/pflag" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/client/tx" @@ -13,8 +16,6 @@ import ( sdkerrors "github.com/line/lbm-sdk/types/errors" wasmUtils "github.com/line/lbm-sdk/x/wasm/client/utils" "github.com/line/lbm-sdk/x/wasm/types" - "github.com/spf13/cobra" - flag "github.com/spf13/pflag" ) const ( diff --git a/x/wasm/client/codec/marshaller.go b/x/wasm/client/codec/marshaller.go index b32d5d9643..696bc7e6ef 100644 --- a/x/wasm/client/codec/marshaller.go +++ b/x/wasm/client/codec/marshaller.go @@ -6,6 +6,7 @@ import ( "github.com/gogo/protobuf/jsonpb" "github.com/gogo/protobuf/proto" + "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/codec/types" ) diff --git a/x/wasm/client/proposal_handler_test.go b/x/wasm/client/proposal_handler_test.go index ab03d02590..2b6843b009 100644 --- a/x/wasm/client/proposal_handler_test.go +++ b/x/wasm/client/proposal_handler_test.go @@ -10,11 +10,12 @@ import ( "testing" "github.com/gorilla/mux" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" authtypes "github.com/line/lbm-sdk/x/auth/types" "github.com/line/lbm-sdk/x/wasm/keeper" - "github.com/stretchr/testify/require" ) func TestGovRestHandlers(t *testing.T) { diff --git a/x/wasm/client/rest/new_tx.go b/x/wasm/client/rest/new_tx.go index 398ae7804d..ae11442206 100644 --- a/x/wasm/client/rest/new_tx.go +++ b/x/wasm/client/rest/new_tx.go @@ -4,6 +4,7 @@ import ( "net/http" "github.com/gorilla/mux" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/tx" "github.com/line/lbm-sdk/types/rest" diff --git a/x/wasm/client/rest/query.go b/x/wasm/client/rest/query.go index 0c5522e6f7..cbfb3b316b 100644 --- a/x/wasm/client/rest/query.go +++ b/x/wasm/client/rest/query.go @@ -10,6 +10,7 @@ import ( "strconv" "github.com/gorilla/mux" + "github.com/line/lbm-sdk/client" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/types/rest" diff --git a/x/wasm/client/rest/rest.go b/x/wasm/client/rest/rest.go index 6f839f269b..99b5f13b2a 100644 --- a/x/wasm/client/rest/rest.go +++ b/x/wasm/client/rest/rest.go @@ -2,6 +2,7 @@ package rest import ( "github.com/gorilla/mux" + "github.com/line/lbm-sdk/client" ) diff --git a/x/wasm/client/rest/tx.go b/x/wasm/client/rest/tx.go index 7e12b9c71b..3b652e8226 100644 --- a/x/wasm/client/rest/tx.go +++ b/x/wasm/client/rest/tx.go @@ -5,6 +5,7 @@ import ( "strconv" "github.com/gorilla/mux" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/tx" sdk "github.com/line/lbm-sdk/types" diff --git a/x/wasm/client/utils/utils_test.go b/x/wasm/client/utils/utils_test.go index 87a859911e..5dd212ca4a 100644 --- a/x/wasm/client/utils/utils_test.go +++ b/x/wasm/client/utils/utils_test.go @@ -1,9 +1,10 @@ package utils import ( - "github.com/stretchr/testify/require" "io/ioutil" "testing" + + "github.com/stretchr/testify/require" ) func GetTestData() ([]byte, []byte, []byte, error) { diff --git a/x/wasm/common_test.go b/x/wasm/common_test.go index bceccec410..91f53a65df 100644 --- a/x/wasm/common_test.go +++ b/x/wasm/common_test.go @@ -1,9 +1,11 @@ package wasm import ( - sdk "github.com/line/lbm-sdk/types" - "github.com/stretchr/testify/require" "testing" + + "github.com/stretchr/testify/require" + + sdk "github.com/line/lbm-sdk/types" ) // ensure store code returns the expected response diff --git a/x/wasm/genesis_test.go b/x/wasm/genesis_test.go index 9a581510c7..5ba37c1409 100644 --- a/x/wasm/genesis_test.go +++ b/x/wasm/genesis_test.go @@ -4,8 +4,9 @@ import ( "encoding/json" "testing" - sdk "github.com/line/lbm-sdk/types" "github.com/stretchr/testify/require" + + sdk "github.com/line/lbm-sdk/types" ) func TestInitGenesis(t *testing.T) { diff --git a/x/wasm/handler.go b/x/wasm/handler.go index 381cf1bc82..0fe7f1553e 100644 --- a/x/wasm/handler.go +++ b/x/wasm/handler.go @@ -4,9 +4,10 @@ import ( "fmt" "github.com/gogo/protobuf/proto" + abci "github.com/line/ostracon/abci/types" + "github.com/line/lbm-sdk/x/wasm/keeper" "github.com/line/lbm-sdk/x/wasm/types" - abci "github.com/line/ostracon/abci/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" diff --git a/x/wasm/ibc.go b/x/wasm/ibc.go index 48dce14a94..87b54805f0 100644 --- a/x/wasm/ibc.go +++ b/x/wasm/ibc.go @@ -3,6 +3,8 @@ package wasm import ( "math" + wasmvmtypes "github.com/line/wasmvm/types" + sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" capabilitytypes "github.com/line/lbm-sdk/x/capability/types" @@ -10,7 +12,6 @@ import ( porttypes "github.com/line/lbm-sdk/x/ibc/core/05-port/types" host "github.com/line/lbm-sdk/x/ibc/core/24-host" wasmTypes "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" ) var _ porttypes.IBCModule = IBCHandler{} diff --git a/x/wasm/keeper/api.go b/x/wasm/keeper/api.go index 891c61212a..dbe067f097 100644 --- a/x/wasm/keeper/api.go +++ b/x/wasm/keeper/api.go @@ -3,10 +3,11 @@ package keeper import ( "fmt" - sdk "github.com/line/lbm-sdk/types" - types "github.com/line/lbm-sdk/x/wasm/types" wasmvm "github.com/line/wasmvm" wasmvmtypes "github.com/line/wasmvm/types" + + sdk "github.com/line/lbm-sdk/types" + types "github.com/line/lbm-sdk/x/wasm/types" ) type cosmwasmAPIImpl struct { diff --git a/x/wasm/keeper/bench_test.go b/x/wasm/keeper/bench_test.go index b8505ac362..ddaf41fb84 100644 --- a/x/wasm/keeper/bench_test.go +++ b/x/wasm/keeper/bench_test.go @@ -3,12 +3,13 @@ package keeper import ( "testing" - "github.com/line/lbm-sdk/x/wasm/types" dbm "github.com/line/tm-db/v2" "github.com/line/tm-db/v2/goleveldb" "github.com/line/tm-db/v2/memdb" "github.com/stretchr/testify/require" "github.com/syndtr/goleveldb/leveldb/opt" + + "github.com/line/lbm-sdk/x/wasm/types" ) func BenchmarkExecution(b *testing.B) { diff --git a/x/wasm/keeper/events.go b/x/wasm/keeper/events.go index c7d60663a3..8372144a90 100644 --- a/x/wasm/keeper/events.go +++ b/x/wasm/keeper/events.go @@ -2,11 +2,13 @@ package keeper import ( "fmt" + "strings" + + wasmvmtypes "github.com/line/wasmvm/types" + sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" - "strings" ) // newWasmModuleEvent creates with wasm module event for interacting with the given contract. Adds custom attributes diff --git a/x/wasm/keeper/events_test.go b/x/wasm/keeper/events_test.go index 8dcd4b3351..75f948dc53 100644 --- a/x/wasm/keeper/events_test.go +++ b/x/wasm/keeper/events_test.go @@ -2,11 +2,13 @@ package keeper import ( "context" - sdk "github.com/line/lbm-sdk/types" - "github.com/line/lbm-sdk/x/wasm/types" + "testing" + wasmvmtypes "github.com/line/wasmvm/types" "github.com/stretchr/testify/assert" - "testing" + + sdk "github.com/line/lbm-sdk/types" + "github.com/line/lbm-sdk/x/wasm/types" ) func TestHasWasmModuleEvent(t *testing.T) { diff --git a/x/wasm/keeper/gas_register.go b/x/wasm/keeper/gas_register.go index 116a549fe3..6b58c0ec04 100644 --- a/x/wasm/keeper/gas_register.go +++ b/x/wasm/keeper/gas_register.go @@ -1,8 +1,9 @@ package keeper import ( - sdk "github.com/line/lbm-sdk/types" wasmvmtypes "github.com/line/wasmvm/types" + + sdk "github.com/line/lbm-sdk/types" ) const ( diff --git a/x/wasm/keeper/genesis.go b/x/wasm/keeper/genesis.go index fc09189837..8470e91eab 100644 --- a/x/wasm/keeper/genesis.go +++ b/x/wasm/keeper/genesis.go @@ -1,10 +1,11 @@ package keeper import ( + abci "github.com/line/ostracon/abci/types" + sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" "github.com/line/lbm-sdk/x/wasm/types" - abci "github.com/line/ostracon/abci/types" ) // ValidatorSetSource is a subset of the staking keeper diff --git a/x/wasm/keeper/genesis_test.go b/x/wasm/keeper/genesis_test.go index 0fe506ccc2..c37f7b987f 100644 --- a/x/wasm/keeper/genesis_test.go +++ b/x/wasm/keeper/genesis_test.go @@ -6,14 +6,23 @@ import ( "encoding/base64" "errors" "fmt" - bankpluskeeper "github.com/line/lbm-sdk/x/bankplus/keeper" "io/ioutil" "math/rand" "os" "testing" "time" + bankpluskeeper "github.com/line/lbm-sdk/x/bankplus/keeper" + fuzz "github.com/google/gofuzz" + abci "github.com/line/ostracon/abci/types" + "github.com/line/ostracon/libs/log" + "github.com/line/ostracon/proto/ostracon/crypto" + tmproto "github.com/line/ostracon/proto/ostracon/types" + "github.com/line/tm-db/v2/memdb" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/store" "github.com/line/lbm-sdk/store/prefix" sdk "github.com/line/lbm-sdk/types" @@ -25,13 +34,6 @@ import ( stakingkeeper "github.com/line/lbm-sdk/x/staking/keeper" "github.com/line/lbm-sdk/x/wasm/types" wasmTypes "github.com/line/lbm-sdk/x/wasm/types" - abci "github.com/line/ostracon/abci/types" - "github.com/line/ostracon/libs/log" - "github.com/line/ostracon/proto/ostracon/crypto" - tmproto "github.com/line/ostracon/proto/ostracon/types" - "github.com/line/tm-db/v2/memdb" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) const firstCodeID = 1 diff --git a/x/wasm/keeper/handler_plugin.go b/x/wasm/keeper/handler_plugin.go index 71f015e0a0..eba074ca86 100644 --- a/x/wasm/keeper/handler_plugin.go +++ b/x/wasm/keeper/handler_plugin.go @@ -4,13 +4,14 @@ import ( "errors" "fmt" + wasmvmtypes "github.com/line/wasmvm/types" + codectypes "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" host "github.com/line/lbm-sdk/x/ibc/core/24-host" "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" ) // msgEncoder is an extension point to customize encodings diff --git a/x/wasm/keeper/handler_plugin_encoders.go b/x/wasm/keeper/handler_plugin_encoders.go index 42554ad7e6..02440d4b8e 100644 --- a/x/wasm/keeper/handler_plugin_encoders.go +++ b/x/wasm/keeper/handler_plugin_encoders.go @@ -3,6 +3,9 @@ package keeper import ( "encoding/json" "fmt" + + wasmvmtypes "github.com/line/wasmvm/types" + codectypes "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" @@ -14,7 +17,6 @@ import ( channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" stakingtypes "github.com/line/lbm-sdk/x/staking/types" "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" ) type BankEncoder func(sender sdk.AccAddress, msg *wasmvmtypes.BankMsg) ([]sdk.Msg, error) diff --git a/x/wasm/keeper/handler_plugin_encoders_test.go b/x/wasm/keeper/handler_plugin_encoders_test.go index 90d8ec4d80..1e361027b8 100644 --- a/x/wasm/keeper/handler_plugin_encoders_test.go +++ b/x/wasm/keeper/handler_plugin_encoders_test.go @@ -5,21 +5,23 @@ import ( "testing" "github.com/golang/protobuf/proto" + "github.com/stretchr/testify/assert" + codectypes "github.com/line/lbm-sdk/codec/types" govtypes "github.com/line/lbm-sdk/x/gov/types" ibctransfertypes "github.com/line/lbm-sdk/x/ibc/applications/transfer/types" clienttypes "github.com/line/lbm-sdk/x/ibc/core/02-client/types" channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" - "github.com/stretchr/testify/assert" + + wasmvmtypes "github.com/line/wasmvm/types" + "github.com/stretchr/testify/require" sdk "github.com/line/lbm-sdk/types" banktypes "github.com/line/lbm-sdk/x/bank/types" distributiontypes "github.com/line/lbm-sdk/x/distribution/types" stakingtypes "github.com/line/lbm-sdk/x/staking/types" "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" - "github.com/stretchr/testify/require" ) func TestEncoding(t *testing.T) { diff --git a/x/wasm/keeper/handler_plugin_test.go b/x/wasm/keeper/handler_plugin_test.go index 2de750ac87..ef51bba967 100644 --- a/x/wasm/keeper/handler_plugin_test.go +++ b/x/wasm/keeper/handler_plugin_test.go @@ -4,6 +4,9 @@ import ( "encoding/json" "testing" + wasmvm "github.com/line/wasmvm" + wasmvmtypes "github.com/line/wasmvm/types" + "github.com/line/lbm-sdk/baseapp" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" @@ -14,8 +17,6 @@ import ( ibcexported "github.com/line/lbm-sdk/x/ibc/core/exported" "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" "github.com/line/lbm-sdk/x/wasm/types" - wasmvm "github.com/line/wasmvm" - wasmvmtypes "github.com/line/wasmvm/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/x/wasm/keeper/ibc_test.go b/x/wasm/keeper/ibc_test.go index 074b0f7d52..150b9bc457 100644 --- a/x/wasm/keeper/ibc_test.go +++ b/x/wasm/keeper/ibc_test.go @@ -4,9 +4,10 @@ import ( "fmt" "testing" - sdk "github.com/line/lbm-sdk/types" "github.com/stretchr/testify/assert" + sdk "github.com/line/lbm-sdk/types" + "github.com/stretchr/testify/require" ) diff --git a/x/wasm/keeper/ioutil_test.go b/x/wasm/keeper/ioutil_test.go index 941d949674..0b0f9af160 100644 --- a/x/wasm/keeper/ioutil_test.go +++ b/x/wasm/keeper/ioutil_test.go @@ -9,9 +9,10 @@ import ( "strings" "testing" - "github.com/line/lbm-sdk/x/wasm/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + "github.com/line/lbm-sdk/x/wasm/types" ) func TestUncompress(t *testing.T) { diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 9579c4b8fb..6a93e413e4 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -11,6 +11,11 @@ import ( "strings" "time" + "github.com/line/ostracon/crypto" + "github.com/line/ostracon/libs/log" + wasmvm "github.com/line/wasmvm" + wasmvmtypes "github.com/line/wasmvm/types" + "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/store/prefix" storetypes "github.com/line/lbm-sdk/store/types" @@ -19,10 +24,6 @@ import ( bankpluskeeper "github.com/line/lbm-sdk/x/bankplus/keeper" paramtypes "github.com/line/lbm-sdk/x/params/types" "github.com/line/lbm-sdk/x/wasm/types" - "github.com/line/ostracon/crypto" - "github.com/line/ostracon/libs/log" - wasmvm "github.com/line/wasmvm" - wasmvmtypes "github.com/line/wasmvm/types" ) // contractMemoryLimit is the memory limit of each contract execution (in MiB) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 589a2e375c..3480f4fd0a 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -9,6 +9,12 @@ import ( "testing" "time" + tmproto "github.com/line/ostracon/proto/ostracon/types" + wasmvm "github.com/line/wasmvm" + wasmvmtypes "github.com/line/wasmvm/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + stypes "github.com/line/lbm-sdk/store/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" @@ -16,11 +22,6 @@ import ( banktypes "github.com/line/lbm-sdk/x/bank/types" "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" "github.com/line/lbm-sdk/x/wasm/types" - tmproto "github.com/line/ostracon/proto/ostracon/types" - wasmvm "github.com/line/wasmvm" - wasmvmtypes "github.com/line/wasmvm/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) // When migrated to go 1.16, embed package should be used instead. diff --git a/x/wasm/keeper/legacy_querier.go b/x/wasm/keeper/legacy_querier.go index 9c2cc17929..a12c38b07d 100644 --- a/x/wasm/keeper/legacy_querier.go +++ b/x/wasm/keeper/legacy_querier.go @@ -5,10 +5,11 @@ import ( "reflect" "strconv" + abci "github.com/line/ostracon/abci/types" + sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" "github.com/line/lbm-sdk/x/wasm/types" - abci "github.com/line/ostracon/abci/types" ) const ( diff --git a/x/wasm/keeper/legacy_querier_test.go b/x/wasm/keeper/legacy_querier_test.go index c8893b7ee1..92dd881215 100644 --- a/x/wasm/keeper/legacy_querier_test.go +++ b/x/wasm/keeper/legacy_querier_test.go @@ -7,12 +7,13 @@ import ( "io/ioutil" "testing" - sdk "github.com/line/lbm-sdk/types" - sdkErrors "github.com/line/lbm-sdk/types/errors" - "github.com/line/lbm-sdk/x/wasm/types" abci "github.com/line/ostracon/abci/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + sdk "github.com/line/lbm-sdk/types" + sdkErrors "github.com/line/lbm-sdk/types/errors" + "github.com/line/lbm-sdk/x/wasm/types" ) func TestLegacyQueryContractState(t *testing.T) { diff --git a/x/wasm/keeper/msg_dispatcher.go b/x/wasm/keeper/msg_dispatcher.go index 7179f0d387..16c8834583 100644 --- a/x/wasm/keeper/msg_dispatcher.go +++ b/x/wasm/keeper/msg_dispatcher.go @@ -1,11 +1,12 @@ package keeper import ( + abci "github.com/line/ostracon/abci/types" + wasmvmtypes "github.com/line/wasmvm/types" + sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" "github.com/line/lbm-sdk/x/wasm/types" - abci "github.com/line/ostracon/abci/types" - wasmvmtypes "github.com/line/wasmvm/types" ) // Messenger is an extension point for custom wasmd message handling diff --git a/x/wasm/keeper/msg_dispatcher_test.go b/x/wasm/keeper/msg_dispatcher_test.go index e619f964db..314a085005 100644 --- a/x/wasm/keeper/msg_dispatcher_test.go +++ b/x/wasm/keeper/msg_dispatcher_test.go @@ -5,12 +5,13 @@ import ( "fmt" "testing" - sdk "github.com/line/lbm-sdk/types" - "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" abci "github.com/line/ostracon/abci/types" wasmvmtypes "github.com/line/wasmvm/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + sdk "github.com/line/lbm-sdk/types" + "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" ) func TestDispatchSubmessages(t *testing.T) { diff --git a/x/wasm/keeper/options.go b/x/wasm/keeper/options.go index 165fc17b73..6a2792644c 100644 --- a/x/wasm/keeper/options.go +++ b/x/wasm/keeper/options.go @@ -3,8 +3,9 @@ package keeper import ( "fmt" - "github.com/line/lbm-sdk/x/wasm/types" "github.com/prometheus/client_golang/prometheus" + + "github.com/line/lbm-sdk/x/wasm/types" ) type optsFn func(*Keeper) @@ -106,7 +107,7 @@ func WithVMMetrics(provider MetricsProvider) Option { } // WithGasRegister set a new gas register to implement custom gas costs. -// When the "gas multiplier" for wasmvm gas convertion is modified inside the new register, +// When the "gas multiplier" for wasmvm gas conversion is modified inside the new register, // make sure to also use `WithApiCosts` option for non default values func WithGasRegister(x WasmGasRegister) Option { return optsFn(func(k *Keeper) { diff --git a/x/wasm/keeper/options_test.go b/x/wasm/keeper/options_test.go index 6d0ba2f84d..faff8f505f 100644 --- a/x/wasm/keeper/options_test.go +++ b/x/wasm/keeper/options_test.go @@ -3,6 +3,9 @@ package keeper import ( "testing" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + authkeeper "github.com/line/lbm-sdk/x/auth/keeper" bankpluskeeper "github.com/line/lbm-sdk/x/bankplus/keeper" distributionkeeper "github.com/line/lbm-sdk/x/distribution/keeper" @@ -10,8 +13,6 @@ import ( stakingkeeper "github.com/line/lbm-sdk/x/staking/keeper" "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" "github.com/line/lbm-sdk/x/wasm/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func TestConstructorOptions(t *testing.T) { diff --git a/x/wasm/keeper/proposal_integration_test.go b/x/wasm/keeper/proposal_integration_test.go index 5c736fdd2c..729288616c 100644 --- a/x/wasm/keeper/proposal_integration_test.go +++ b/x/wasm/keeper/proposal_integration_test.go @@ -8,14 +8,15 @@ import ( "io/ioutil" "testing" + wasmvm "github.com/line/wasmvm" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + sdk "github.com/line/lbm-sdk/types" govtypes "github.com/line/lbm-sdk/x/gov/types" "github.com/line/lbm-sdk/x/params/types/proposal" "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" "github.com/line/lbm-sdk/x/wasm/types" - wasmvm "github.com/line/wasmvm" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func TestStoreCodeProposal(t *testing.T) { diff --git a/x/wasm/keeper/querier.go b/x/wasm/keeper/querier.go index a07c8ab14e..5c7f24c6a4 100644 --- a/x/wasm/keeper/querier.go +++ b/x/wasm/keeper/querier.go @@ -5,10 +5,11 @@ import ( "encoding/binary" "runtime/debug" - "github.com/line/lbm-sdk/codec" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "github.com/line/lbm-sdk/codec" + "github.com/line/lbm-sdk/store/prefix" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" diff --git a/x/wasm/keeper/querier_test.go b/x/wasm/keeper/querier_test.go index 74e1dc9bac..9f1ced8da2 100644 --- a/x/wasm/keeper/querier_test.go +++ b/x/wasm/keeper/querier_test.go @@ -4,24 +4,26 @@ import ( "encoding/base64" "encoding/json" "fmt" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" "io/ioutil" "testing" "time" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + govtypes "github.com/line/lbm-sdk/x/gov/types" "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" - sdk "github.com/line/lbm-sdk/types" - sdkErrors "github.com/line/lbm-sdk/types/errors" - "github.com/line/lbm-sdk/types/query" - "github.com/line/lbm-sdk/x/wasm/types" "github.com/line/ostracon/libs/log" cosmwasm "github.com/line/wasmvm" wasmvmtypes "github.com/line/wasmvm/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + sdk "github.com/line/lbm-sdk/types" + sdkErrors "github.com/line/lbm-sdk/types/errors" + "github.com/line/lbm-sdk/types/query" + "github.com/line/lbm-sdk/x/wasm/types" ) func TestQueryAllContractState(t *testing.T) { diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index d2c4d06bbf..02b0d07f82 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -7,12 +7,13 @@ import ( channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" "github.com/line/lbm-sdk/x/wasm/types" + abci "github.com/line/ostracon/abci/types" + wasmvmtypes "github.com/line/wasmvm/types" + sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" distributiontypes "github.com/line/lbm-sdk/x/distribution/types" stakingtypes "github.com/line/lbm-sdk/x/staking/types" - abci "github.com/line/ostracon/abci/types" - wasmvmtypes "github.com/line/wasmvm/types" ) type QueryHandler struct { diff --git a/x/wasm/keeper/query_plugins_test.go b/x/wasm/keeper/query_plugins_test.go index 09b396444d..76b0cb5d08 100644 --- a/x/wasm/keeper/query_plugins_test.go +++ b/x/wasm/keeper/query_plugins_test.go @@ -4,14 +4,15 @@ import ( "encoding/json" "testing" + wasmvmtypes "github.com/line/wasmvm/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" channeltypes "github.com/line/lbm-sdk/x/ibc/core/04-channel/types" "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func TestIBCQuerier(t *testing.T) { diff --git a/x/wasm/keeper/recurse_test.go b/x/wasm/keeper/recurse_test.go index bdcc0f1f9f..0741b38508 100644 --- a/x/wasm/keeper/recurse_test.go +++ b/x/wasm/keeper/recurse_test.go @@ -10,8 +10,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - sdk "github.com/line/lbm-sdk/types" abci "github.com/line/ostracon/abci/types" + + sdk "github.com/line/lbm-sdk/types" ) type Recurse struct { diff --git a/x/wasm/keeper/reflect_test.go b/x/wasm/keeper/reflect_test.go index 325a9e41cd..41c4a4b66f 100644 --- a/x/wasm/keeper/reflect_test.go +++ b/x/wasm/keeper/reflect_test.go @@ -8,6 +8,10 @@ import ( "github.com/golang/protobuf/proto" + wasmvmtypes "github.com/line/wasmvm/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/codec" codectypes "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" @@ -16,9 +20,6 @@ import ( bankkeeper "github.com/line/lbm-sdk/x/bank/keeper" banktypes "github.com/line/lbm-sdk/x/bank/types" "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) // ReflectInitMsg is {} diff --git a/x/wasm/keeper/relay.go b/x/wasm/keeper/relay.go index 6525f1eeef..c512ef09b7 100644 --- a/x/wasm/keeper/relay.go +++ b/x/wasm/keeper/relay.go @@ -3,11 +3,12 @@ package keeper import ( "time" + wasmvmtypes "github.com/line/wasmvm/types" + "github.com/line/lbm-sdk/telemetry" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" "github.com/line/lbm-sdk/x/wasm/types" - wasmvmtypes "github.com/line/wasmvm/types" ) var _ types.IBCContractKeeper = (*Keeper)(nil) diff --git a/x/wasm/keeper/relay_test.go b/x/wasm/keeper/relay_test.go index 2cbaa4443d..12dcd232b5 100644 --- a/x/wasm/keeper/relay_test.go +++ b/x/wasm/keeper/relay_test.go @@ -6,13 +6,14 @@ import ( "math" "testing" - sdk "github.com/line/lbm-sdk/types" - "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" - "github.com/line/lbm-sdk/x/wasm/types" wasmvm "github.com/line/wasmvm" wasmvmtypes "github.com/line/wasmvm/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + sdk "github.com/line/lbm-sdk/types" + "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" + "github.com/line/lbm-sdk/x/wasm/types" ) func TestOnOpenChannel(t *testing.T) { diff --git a/x/wasm/keeper/staking_test.go b/x/wasm/keeper/staking_test.go index d3e1ab81c7..da5bbc4031 100644 --- a/x/wasm/keeper/staking_test.go +++ b/x/wasm/keeper/staking_test.go @@ -7,6 +7,10 @@ import ( wasmtypes "github.com/line/lbm-sdk/x/wasm/types" + wasmvmtypes "github.com/line/wasmvm/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + codectypes "github.com/line/lbm-sdk/codec/types" "github.com/line/lbm-sdk/crypto/keys/secp256k1" sdk "github.com/line/lbm-sdk/types" @@ -18,9 +22,6 @@ import ( stakingkeeper "github.com/line/lbm-sdk/x/staking/keeper" "github.com/line/lbm-sdk/x/staking/types" stakingtypes "github.com/line/lbm-sdk/x/staking/types" - wasmvmtypes "github.com/line/wasmvm/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) type StakingInitMsg struct { @@ -88,7 +89,7 @@ type InvestmentResponse struct { Validator sdk.ValAddress `json:"validator"` ExitTax sdk.Dec `json:"exit_tax"` // MinWithdrawl is uint128 encoded as a string (use sdk.Int?) - MinWithdrawl string `json:"min_withdrawl"` + MinWithdrawl string `json:"min_withdrawal"` } func TestInitializeStaking(t *testing.T) { diff --git a/x/wasm/keeper/submsg_test.go b/x/wasm/keeper/submsg_test.go index d36182da4d..f35b5e5cc4 100644 --- a/x/wasm/keeper/submsg_test.go +++ b/x/wasm/keeper/submsg_test.go @@ -9,9 +9,10 @@ import ( "github.com/stretchr/testify/assert" - sdk "github.com/line/lbm-sdk/types" wasmvmtypes "github.com/line/wasmvm/types" "github.com/stretchr/testify/require" + + sdk "github.com/line/lbm-sdk/types" ) // test handing of submessages, very closely related to the reflect_test diff --git a/x/wasm/keeper/test_common.go b/x/wasm/keeper/test_common.go index 5de171e3eb..fb5d64737b 100644 --- a/x/wasm/keeper/test_common.go +++ b/x/wasm/keeper/test_common.go @@ -7,6 +7,15 @@ import ( "io/ioutil" "time" + "github.com/line/ostracon/crypto" + "github.com/line/ostracon/crypto/ed25519" + "github.com/line/ostracon/libs/log" + "github.com/line/ostracon/libs/rand" + tmproto "github.com/line/ostracon/proto/ostracon/types" + dbm "github.com/line/tm-db/v2" + "github.com/line/tm-db/v2/memdb" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/baseapp" "github.com/line/lbm-sdk/codec" codectypes "github.com/line/lbm-sdk/codec/types" @@ -59,14 +68,6 @@ import ( upgradeclient "github.com/line/lbm-sdk/x/upgrade/client" "github.com/line/lbm-sdk/x/wasm/keeper/wasmtesting" "github.com/line/lbm-sdk/x/wasm/types" - "github.com/line/ostracon/crypto" - "github.com/line/ostracon/crypto/ed25519" - "github.com/line/ostracon/libs/log" - "github.com/line/ostracon/libs/rand" - tmproto "github.com/line/ostracon/proto/ostracon/types" - dbm "github.com/line/tm-db/v2" - "github.com/line/tm-db/v2/memdb" - "github.com/stretchr/testify/require" ) type TestingT interface { diff --git a/x/wasm/keeper/test_fuzz.go b/x/wasm/keeper/test_fuzz.go index 0cda21f59a..4003ac7e42 100644 --- a/x/wasm/keeper/test_fuzz.go +++ b/x/wasm/keeper/test_fuzz.go @@ -4,9 +4,10 @@ import ( "encoding/json" fuzz "github.com/google/gofuzz" + tmBytes "github.com/line/ostracon/libs/bytes" + sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/wasm/types" - tmBytes "github.com/line/ostracon/libs/bytes" ) var ModelFuzzers = []interface{}{FuzzAddr, FuzzAddrString, FuzzAbsoluteTxPosition, FuzzContractInfo, FuzzStateModel, FuzzAccessType, FuzzAccessConfig, FuzzContractCodeHistory} diff --git a/x/wasm/keeper/wasmtesting/messenger.go b/x/wasm/keeper/wasmtesting/messenger.go index c54793abfa..1deec3cc39 100644 --- a/x/wasm/keeper/wasmtesting/messenger.go +++ b/x/wasm/keeper/wasmtesting/messenger.go @@ -3,8 +3,9 @@ package wasmtesting import ( "errors" - sdk "github.com/line/lbm-sdk/types" wasmvmtypes "github.com/line/wasmvm/types" + + sdk "github.com/line/lbm-sdk/types" ) type MockMessageHandler struct { diff --git a/x/wasm/keeper/wasmtesting/mock_engine.go b/x/wasm/keeper/wasmtesting/mock_engine.go index 09fdbe8601..2f4a256d19 100644 --- a/x/wasm/keeper/wasmtesting/mock_engine.go +++ b/x/wasm/keeper/wasmtesting/mock_engine.go @@ -4,11 +4,12 @@ import ( "bytes" "crypto/sha256" - sdkerrors "github.com/line/lbm-sdk/types/errors" - "github.com/line/lbm-sdk/x/wasm/types" "github.com/line/ostracon/libs/rand" wasmvm "github.com/line/wasmvm" wasmvmtypes "github.com/line/wasmvm/types" + + sdkerrors "github.com/line/lbm-sdk/types/errors" + "github.com/line/lbm-sdk/x/wasm/types" ) var _ types.WasmerEngine = &MockWasmer{} diff --git a/x/wasm/keeper/wasmtesting/msg_dispatcher.go b/x/wasm/keeper/wasmtesting/msg_dispatcher.go index f880b55a7b..e865b6581d 100644 --- a/x/wasm/keeper/wasmtesting/msg_dispatcher.go +++ b/x/wasm/keeper/wasmtesting/msg_dispatcher.go @@ -1,8 +1,9 @@ package wasmtesting import ( - sdk "github.com/line/lbm-sdk/types" wasmvmtypes "github.com/line/wasmvm/types" + + sdk "github.com/line/lbm-sdk/types" ) type MockMsgDispatcher struct { diff --git a/x/wasm/keeper/wasmtesting/query_handler.go b/x/wasm/keeper/wasmtesting/query_handler.go index d05214f644..651574f1db 100644 --- a/x/wasm/keeper/wasmtesting/query_handler.go +++ b/x/wasm/keeper/wasmtesting/query_handler.go @@ -1,8 +1,9 @@ package wasmtesting import ( - sdk "github.com/line/lbm-sdk/types" wasmvmtypes "github.com/line/wasmvm/types" + + sdk "github.com/line/lbm-sdk/types" ) type MockQueryHandler struct { diff --git a/x/wasm/module.go b/x/wasm/module.go index 83ac03a478..e82f91a756 100644 --- a/x/wasm/module.go +++ b/x/wasm/module.go @@ -7,6 +7,10 @@ import ( "github.com/gorilla/mux" "github.com/grpc-ecosystem/grpc-gateway/runtime" + abci "github.com/line/ostracon/abci/types" + "github.com/spf13/cast" + "github.com/spf13/cobra" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/codec" cdctypes "github.com/line/lbm-sdk/codec/types" @@ -20,9 +24,6 @@ import ( "github.com/line/lbm-sdk/x/wasm/keeper" "github.com/line/lbm-sdk/x/wasm/simulation" "github.com/line/lbm-sdk/x/wasm/types" - abci "github.com/line/ostracon/abci/types" - "github.com/spf13/cast" - "github.com/spf13/cobra" ) var ( diff --git a/x/wasm/module_test.go b/x/wasm/module_test.go index cc5edecfbb..199959fa12 100644 --- a/x/wasm/module_test.go +++ b/x/wasm/module_test.go @@ -7,6 +7,12 @@ import ( "testing" "github.com/dvsekhvalnov/jose2go/base64url" + abci "github.com/line/ostracon/abci/types" + "github.com/line/ostracon/crypto" + "github.com/line/ostracon/crypto/ed25519" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/types/module" authkeeper "github.com/line/lbm-sdk/x/auth/keeper" @@ -14,11 +20,6 @@ import ( stakingkeeper "github.com/line/lbm-sdk/x/staking/keeper" "github.com/line/lbm-sdk/x/wasm/keeper" "github.com/line/lbm-sdk/x/wasm/types" - abci "github.com/line/ostracon/abci/types" - "github.com/line/ostracon/crypto" - "github.com/line/ostracon/crypto/ed25519" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) type testData struct { diff --git a/x/wasm/types/exported_keepers.go b/x/wasm/types/exported_keepers.go index a285bb52e9..99913b8be0 100644 --- a/x/wasm/types/exported_keepers.go +++ b/x/wasm/types/exported_keepers.go @@ -1,9 +1,10 @@ package types import ( + wasmvmtypes "github.com/line/wasmvm/types" + sdk "github.com/line/lbm-sdk/types" capabilitytypes "github.com/line/lbm-sdk/x/capability/types" - wasmvmtypes "github.com/line/wasmvm/types" ) // ViewKeeper provides read only operations diff --git a/x/wasm/types/iavl_range_test.go b/x/wasm/types/iavl_range_test.go index abfad8f9e3..db80962588 100644 --- a/x/wasm/types/iavl_range_test.go +++ b/x/wasm/types/iavl_range_test.go @@ -1,12 +1,14 @@ package types import ( + "testing" + iavl2 "github.com/line/iavl/v2" - "github.com/line/lbm-sdk/store" - "github.com/line/lbm-sdk/store/iavl" "github.com/line/tm-db/v2/memdb" "github.com/stretchr/testify/require" - "testing" + + "github.com/line/lbm-sdk/store" + "github.com/line/lbm-sdk/store/iavl" ) // This is modeled close to diff --git a/x/wasm/types/keys_test.go b/x/wasm/types/keys_test.go index c9c7a36b5d..7a05c03f89 100644 --- a/x/wasm/types/keys_test.go +++ b/x/wasm/types/keys_test.go @@ -4,8 +4,9 @@ import ( "bytes" "testing" - sdk "github.com/line/lbm-sdk/types" "github.com/stretchr/testify/assert" + + sdk "github.com/line/lbm-sdk/types" ) func TestGetContractByCodeIDSecondaryIndexPrefix(t *testing.T) { diff --git a/x/wasm/types/params.go b/x/wasm/types/params.go index 4a38a08d06..76b7c510bb 100644 --- a/x/wasm/types/params.go +++ b/x/wasm/types/params.go @@ -5,11 +5,12 @@ import ( "fmt" "github.com/gogo/protobuf/jsonpb" + "github.com/pkg/errors" + "gopkg.in/yaml.v2" + sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" paramtypes "github.com/line/lbm-sdk/x/params/types" - "github.com/pkg/errors" - "gopkg.in/yaml.v2" ) const ( diff --git a/x/wasm/types/params_test.go b/x/wasm/types/params_test.go index 2337b2f697..65d3cfcc8c 100644 --- a/x/wasm/types/params_test.go +++ b/x/wasm/types/params_test.go @@ -4,11 +4,12 @@ import ( "encoding/json" "testing" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/codec" codectypes "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func TestValidateParams(t *testing.T) { diff --git a/x/wasm/types/proposal_test.go b/x/wasm/types/proposal_test.go index b42d19614c..0a7f3ce2eb 100644 --- a/x/wasm/types/proposal_test.go +++ b/x/wasm/types/proposal_test.go @@ -6,11 +6,12 @@ import ( "strings" "testing" - sdk "github.com/line/lbm-sdk/types" - govtypes "github.com/line/lbm-sdk/x/gov/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "gopkg.in/yaml.v2" + + sdk "github.com/line/lbm-sdk/types" + govtypes "github.com/line/lbm-sdk/x/gov/types" ) func TestValidateProposalCommons(t *testing.T) { diff --git a/x/wasm/types/querier_router_test.go b/x/wasm/types/querier_router_test.go index 0e451b722a..b57fe6377c 100644 --- a/x/wasm/types/querier_router_test.go +++ b/x/wasm/types/querier_router_test.go @@ -4,8 +4,9 @@ import ( "encoding/json" "testing" - sdk "github.com/line/lbm-sdk/types" "github.com/stretchr/testify/require" + + sdk "github.com/line/lbm-sdk/types" ) func testQuerierHandler(ctx sdk.Context, jsonQuerier json.RawMessage) ([]byte, error) { diff --git a/x/wasm/types/router_test.go b/x/wasm/types/router_test.go index 343a52aa63..39d3d71bde 100644 --- a/x/wasm/types/router_test.go +++ b/x/wasm/types/router_test.go @@ -4,8 +4,9 @@ import ( "encoding/json" "testing" - sdk "github.com/line/lbm-sdk/types" "github.com/stretchr/testify/require" + + sdk "github.com/line/lbm-sdk/types" ) func testHandler(jsonMsg json.RawMessage) ([]sdk.Msg, error) { return []sdk.Msg{}, nil } diff --git a/x/wasm/types/store.go b/x/wasm/types/store.go index 64b0eab4b8..9a38849714 100644 --- a/x/wasm/types/store.go +++ b/x/wasm/types/store.go @@ -1,8 +1,9 @@ package types import ( - storetypes "github.com/line/lbm-sdk/store/types" wasmvm "github.com/line/wasmvm" + + storetypes "github.com/line/lbm-sdk/store/types" ) var _ wasmvm.KVStore = (*WasmStore)(nil) diff --git a/x/wasm/types/tx_test.go b/x/wasm/types/tx_test.go index e5f6aa9ea3..8c4e8abab5 100644 --- a/x/wasm/types/tx_test.go +++ b/x/wasm/types/tx_test.go @@ -5,9 +5,10 @@ import ( "strings" "testing" - sdk "github.com/line/lbm-sdk/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + + sdk "github.com/line/lbm-sdk/types" ) const firstCodeID = 1 diff --git a/x/wasm/types/types.go b/x/wasm/types/types.go index 653660647b..7de23aa06c 100644 --- a/x/wasm/types/types.go +++ b/x/wasm/types/types.go @@ -7,10 +7,11 @@ import ( "github.com/gogo/protobuf/jsonpb" "github.com/gogo/protobuf/proto" + wasmvmtypes "github.com/line/wasmvm/types" + codectypes "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" - wasmvmtypes "github.com/line/wasmvm/types" ) const ( diff --git a/x/wasm/types/types_test.go b/x/wasm/types/types_test.go index 3fa6a60234..738134efeb 100644 --- a/x/wasm/types/types_test.go +++ b/x/wasm/types/types_test.go @@ -5,15 +5,16 @@ import ( "testing" "time" + "github.com/line/ostracon/libs/rand" + wasmvmtypes "github.com/line/wasmvm/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/codec" "github.com/line/lbm-sdk/codec/types" codectypes "github.com/line/lbm-sdk/codec/types" sdk "github.com/line/lbm-sdk/types" govtypes "github.com/line/lbm-sdk/x/gov/types" - "github.com/line/ostracon/libs/rand" - wasmvmtypes "github.com/line/wasmvm/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" ) func TestContractInfoValidateBasic(t *testing.T) { From 62a6fc6f017c212a6c3a9e27c2b4e2ade44ab671 Mon Sep 17 00:00:00 2001 From: loloicci Date: Thu, 24 Feb 2022 19:17:10 +0900 Subject: [PATCH 84/90] fix: make lint-fix and fix errors --- x/wasm/client/cli/genesis_msg.go | 10 ---------- x/wasm/keeper/api.go | 2 +- x/wasm/keeper/keeper.go | 22 +++++++--------------- x/wasm/keeper/keeper_test.go | 9 +++++++++ x/wasm/keeper/msg_dispatcher.go | 4 ++-- x/wasm/keeper/relay.go | 12 ++++++------ 6 files changed, 25 insertions(+), 34 deletions(-) diff --git a/x/wasm/client/cli/genesis_msg.go b/x/wasm/client/cli/genesis_msg.go index fe16eea701..c20dfe287f 100644 --- a/x/wasm/client/cli/genesis_msg.go +++ b/x/wasm/client/cli/genesis_msg.go @@ -4,14 +4,12 @@ import ( "bufio" "bytes" "crypto/sha256" - "encoding/binary" "encoding/json" "errors" "fmt" "github.com/line/lbm-sdk/x/wasm/keeper" - "github.com/line/ostracon/crypto" octypes "github.com/line/ostracon/types" "github.com/spf13/cobra" @@ -509,11 +507,3 @@ func getActorAddress(cmd *cobra.Command) (sdk.AccAddress, error) { } return info.GetAddress(), nil } - -// addrFromUint64 is a helper for address generation, copied from keeper -func addrFromUint64(id uint64) sdk.AccAddress { - addr := make([]byte, 20) - addr[0] = 'C' - binary.PutUvarint(addr[1:], id) - return sdk.BytesToAccAddress(crypto.AddressHash(addr)) -} diff --git a/x/wasm/keeper/api.go b/x/wasm/keeper/api.go index dbe067f097..6b75f172ff 100644 --- a/x/wasm/keeper/api.go +++ b/x/wasm/keeper/api.go @@ -20,7 +20,7 @@ const ( ) var ( - costJsonDeserialization = wasmvmtypes.UFraction{ + costJSONDeserialization = wasmvmtypes.UFraction{ Numerator: DefaultDeserializationCostPerByte * types.DefaultGasMultiplier, Denominator: 1, } diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 6a93e413e4..5cb316f0a0 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -11,7 +11,6 @@ import ( "strings" "time" - "github.com/line/ostracon/crypto" "github.com/line/ostracon/libs/log" wasmvm "github.com/line/wasmvm" wasmvmtypes "github.com/line/wasmvm/types" @@ -196,7 +195,7 @@ func (k Keeper) replyCosts(g WasmGasRegister, ctx sdk.Context, pinned bool, repl var attrs []wasmvmtypes.EventAttribute for _, e := range reply.Result.Ok.Events { eventGas += sdk.Gas(len(e.Type)) * g.c.EventAttributeDataCost - attrs = append(e.Attributes) + attrs = append(attrs, e.Attributes...) } // apply free tier on the whole set not per event eventGas += g.EventCosts(attrs, nil) @@ -355,7 +354,7 @@ func (k Keeper) instantiate(ctx sdk.Context, codeID uint64, creator, admin sdk.A // instantiate wasm contract gas := k.runtimeGasForContract(ctx) - res, gasUsed, err := k.wasmVM.Instantiate(codeInfo.CodeHash, env, info, initMsg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJsonDeserialization) + res, gasUsed, err := k.wasmVM.Instantiate(codeInfo.CodeHash, env, info, initMsg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if err != nil { @@ -428,7 +427,7 @@ func (k Keeper) execute(ctx sdk.Context, contractAddress sdk.AccAddress, caller querier := k.newQueryHandler(ctx, contractAddress) gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.Execute(codeInfo.CodeHash, env, info, msg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.Execute(codeInfo.CodeHash, env, info, msg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -494,7 +493,7 @@ func (k Keeper) migrate(ctx sdk.Context, contractAddress sdk.AccAddress, caller prefixStore := prefix.NewStore(ctx.KVStore(k.storeKey), prefixStoreKey) gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, err := k.wasmVM.Migrate(newCodeInfo.CodeHash, env, msg, &wasmStore, k.cosmwasmAPI(ctx), &querier, k.gasMeter(ctx), gas, costJsonDeserialization) + res, gasUsed, err := k.wasmVM.Migrate(newCodeInfo.CodeHash, env, msg, &wasmStore, k.cosmwasmAPI(ctx), &querier, k.gasMeter(ctx), gas, costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if err != nil { @@ -542,7 +541,7 @@ func (k Keeper) Sudo(ctx sdk.Context, contractAddress sdk.AccAddress, msg []byte querier := k.newQueryHandler(ctx, contractAddress) wasmStore := types.NewWasmStore(prefixStore) gas := k.runtimeGasForContract(ctx) - res, gasUsed, execErr := k.wasmVM.Sudo(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.Sudo(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { return nil, sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) @@ -577,7 +576,7 @@ func (k Keeper) reply(ctx sdk.Context, contractAddress sdk.AccAddress, reply was querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddress, k.getGasMultiplier(ctx)) gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.Reply(codeInfo.CodeHash, env, reply, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.Reply(codeInfo.CodeHash, env, reply, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), gas, costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -716,7 +715,7 @@ func (k Keeper) QuerySmart(ctx sdk.Context, contractAddr sdk.AccAddress, req []b env := types.NewEnv(ctx, contractAddr) wasmStore := types.NewWasmStore(prefixStore) - queryResult, gasUsed, qErr := k.wasmVM.Query(codeInfo.CodeHash, env, req, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), k.runtimeGasForContract(ctx), costJsonDeserialization) + queryResult, gasUsed, qErr := k.wasmVM.Query(codeInfo.CodeHash, env, req, wasmStore, k.cosmwasmAPI(ctx), querier, k.gasMeter(ctx), k.runtimeGasForContract(ctx), costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if qErr != nil { @@ -1094,13 +1093,6 @@ func (k Keeper) newQueryHandler(ctx sdk.Context, contractAddress sdk.AccAddress) return NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddress, k.getGasMultiplier(ctx)) } -func addrFromUint64(id uint64) sdk.AccAddress { - addr := make([]byte, 20) - addr[0] = 'C' - binary.PutUvarint(addr[1:], id) - return sdk.BytesToAccAddress(crypto.AddressHash(addr)) -} - type GasMultiplier struct { multiplier uint64 } diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 3480f4fd0a..bb6a2d4dc8 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -2,6 +2,7 @@ package keeper import ( "bytes" + "encoding/binary" "encoding/json" "errors" "io/ioutil" @@ -9,6 +10,7 @@ import ( "testing" "time" + "github.com/line/ostracon/crypto" tmproto "github.com/line/ostracon/proto/ostracon/types" wasmvm "github.com/line/wasmvm" wasmvmtypes "github.com/line/wasmvm/types" @@ -24,6 +26,13 @@ import ( "github.com/line/lbm-sdk/x/wasm/types" ) +func addrFromUint64(id uint64) sdk.AccAddress { + addr := make([]byte, 20) + addr[0] = 'C' + binary.PutUvarint(addr[1:], id) + return sdk.BytesToAccAddress(crypto.AddressHash(addr)) +} + // When migrated to go 1.16, embed package should be used instead. func init() { b, err := ioutil.ReadFile("./testdata/hackatom.wasm") diff --git a/x/wasm/keeper/msg_dispatcher.go b/x/wasm/keeper/msg_dispatcher.go index 16c8834583..1e7cbcd82e 100644 --- a/x/wasm/keeper/msg_dispatcher.go +++ b/x/wasm/keeper/msg_dispatcher.go @@ -126,7 +126,7 @@ func (d MessageDispatcher) DispatchSubmessages(ctx sdk.Context, contractAddr sdk } result = wasmvmtypes.SubcallResult{ Ok: &wasmvmtypes.SubcallResponse{ - Events: sdkEventsToWasmVmEvents(filteredEvents), + Events: sdkEventsToWasmVMEvents(filteredEvents), Data: responseData, }, } @@ -166,7 +166,7 @@ func filterEvents(events []sdk.Event) []sdk.Event { return res } -func sdkEventsToWasmVmEvents(events []sdk.Event) []wasmvmtypes.Event { +func sdkEventsToWasmVMEvents(events []sdk.Event) []wasmvmtypes.Event { res := make([]wasmvmtypes.Event, len(events)) for i, ev := range events { res[i] = wasmvmtypes.Event{ diff --git a/x/wasm/keeper/relay.go b/x/wasm/keeper/relay.go index c512ef09b7..a761499f83 100644 --- a/x/wasm/keeper/relay.go +++ b/x/wasm/keeper/relay.go @@ -35,7 +35,7 @@ func (k Keeper) OnOpenChannel( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - gasUsed, execErr := k.wasmVM.IBCChannelOpen(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + gasUsed, execErr := k.wasmVM.IBCChannelOpen(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -68,7 +68,7 @@ func (k Keeper) OnConnectChannel( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCChannelConnect(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.IBCChannelConnect(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -101,7 +101,7 @@ func (k Keeper) OnCloseChannel( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCChannelClose(codeInfo.CodeHash, params, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.IBCChannelClose(codeInfo.CodeHash, params, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -133,7 +133,7 @@ func (k Keeper) OnRecvPacket( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCPacketReceive(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.IBCPacketReceive(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -166,7 +166,7 @@ func (k Keeper) OnAckPacket( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCPacketAck(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.IBCPacketAck(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -195,7 +195,7 @@ func (k Keeper) OnTimeoutPacket( gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCPacketTimeout(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.IBCPacketTimeout(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJSONDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { From d41204114b20aecaa61c8e0e41b835b1afd92aa9 Mon Sep 17 00:00:00 2001 From: loloicci Date: Thu, 24 Feb 2022 19:26:16 +0900 Subject: [PATCH 85/90] chore: make format && make lint-fix --- client/keys/add_test.go | 1 + simapp/simd/cmd/genaccounts_test.go | 3 +- x/auth/client/cli/cli_test.go | 2 - x/token/client/testutil/query.go | 3 +- x/token/genesis_test.go | 48 +-- x/token/keeper/handler_test.go | 46 +-- x/token/keeper/keeper_test.go | 19 +- x/token/keeper/msg_server_test.go | 150 ++++---- x/token/keeper/query_server_test.go | 142 ++++---- x/token/keeper/supply.go | 1 + x/token/keeper/supply_test.go | 6 +- x/token/keeper/transfer.go | 1 + x/token/keeper/transfer_test.go | 4 +- x/token/msgs_test.go | 511 ++++++++++++++-------------- 14 files changed, 471 insertions(+), 466 deletions(-) diff --git a/client/keys/add_test.go b/client/keys/add_test.go index 117c15c82a..82db461c13 100644 --- a/client/keys/add_test.go +++ b/client/keys/add_test.go @@ -10,6 +10,7 @@ import ( "github.com/line/ostracon/libs/cli" bip39 "github.com/cosmos/go-bip39" + "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/crypto/hd" diff --git a/simapp/simd/cmd/genaccounts_test.go b/simapp/simd/cmd/genaccounts_test.go index 51a1527881..d0edeacc62 100644 --- a/simapp/simd/cmd/genaccounts_test.go +++ b/simapp/simd/cmd/genaccounts_test.go @@ -3,10 +3,11 @@ package cmd_test import ( "context" "fmt" + "testing" + "github.com/line/lbm-sdk/crypto/hd" "github.com/line/lbm-sdk/crypto/keyring" sdk "github.com/line/lbm-sdk/types" - "testing" "github.com/line/ostracon/libs/log" "github.com/spf13/viper" diff --git a/x/auth/client/cli/cli_test.go b/x/auth/client/cli/cli_test.go index b184715790..bc8799c1d9 100644 --- a/x/auth/client/cli/cli_test.go +++ b/x/auth/client/cli/cli_test.go @@ -17,8 +17,6 @@ import ( "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" - sdkerrors "github.com/line/lbm-sdk/types/errors" - "github.com/line/lbm-sdk/client" "github.com/line/lbm-sdk/client/flags" "github.com/line/lbm-sdk/crypto/hd" diff --git a/x/token/client/testutil/query.go b/x/token/client/testutil/query.go index 7b500fa903..da39e5d685 100644 --- a/x/token/client/testutil/query.go +++ b/x/token/client/testutil/query.go @@ -4,12 +4,13 @@ import ( "fmt" "github.com/gogo/protobuf/proto" + ostcli "github.com/line/ostracon/libs/cli" + "github.com/line/lbm-sdk/client/flags" clitestutil "github.com/line/lbm-sdk/testutil/cli" "github.com/line/lbm-sdk/types/query" "github.com/line/lbm-sdk/x/token" "github.com/line/lbm-sdk/x/token/client/cli" - ostcli "github.com/line/ostracon/libs/cli" ) func (s *IntegrationTestSuite) TestNewQueryCmdTokenBalance() { diff --git a/x/token/genesis_test.go b/x/token/genesis_test.go index 3db6882488..c080e2ae72 100644 --- a/x/token/genesis_test.go +++ b/x/token/genesis_test.go @@ -1,8 +1,8 @@ package token_test import ( - "testing" "math" + "testing" "github.com/stretchr/testify/require" @@ -13,8 +13,8 @@ import ( func TestValidateGenesis(t *testing.T) { addr := sdk.BytesToAccAddress(secp256k1.GenPrivKey().PubKey().Address()) - testCases := map[string]struct{ - gs *token.GenesisState + testCases := map[string]struct { + gs *token.GenesisState valid bool }{ "default genesis": { @@ -37,7 +37,7 @@ func TestValidateGenesis(t *testing.T) { Tokens: []token.FT{ { ClassId: "deadbeef", - Amount: sdk.OneInt(), + Amount: sdk.OneInt(), }, }, }, @@ -53,7 +53,7 @@ func TestValidateGenesis(t *testing.T) { Tokens: []token.FT{ { ClassId: "deadbeef", - Amount: sdk.ZeroInt(), + Amount: sdk.ZeroInt(), }, }, }, @@ -74,8 +74,8 @@ func TestValidateGenesis(t *testing.T) { "invalid id of class": { &token.GenesisState{ Classes: []token.Token{{ - Id: "invalid", - Name: "test", + Id: "invalid", + Name: "test", Symbol: "TT", }}, }, @@ -84,8 +84,8 @@ func TestValidateGenesis(t *testing.T) { "invalid name of class": { &token.GenesisState{ Classes: []token.Token{{ - Id: "deadbeef", - Name: string(make([]rune, 21)), + Id: "deadbeef", + Name: string(make([]rune, 21)), Symbol: "TT", }}, }, @@ -94,8 +94,8 @@ func TestValidateGenesis(t *testing.T) { "invalid symbol of class": { &token.GenesisState{ Classes: []token.Token{{ - Id: "deadbeef", - Name: "test", + Id: "deadbeef", + Name: "test", Symbol: "tt", }}, }, @@ -104,9 +104,9 @@ func TestValidateGenesis(t *testing.T) { "invalid image uri of class": { &token.GenesisState{ Classes: []token.Token{{ - Id: "deadbeef", - Name: "test", - Symbol: "TT", + Id: "deadbeef", + Name: "test", + Symbol: "TT", ImageUri: string(make([]rune, 1001)), }}, }, @@ -115,10 +115,10 @@ func TestValidateGenesis(t *testing.T) { "invalid meta of class": { &token.GenesisState{ Classes: []token.Token{{ - Id: "deadbeef", - Name: "test", + Id: "deadbeef", + Name: "test", Symbol: "TT", - Meta: string(make([]rune, 1001)), + Meta: string(make([]rune, 1001)), }}, }, false, @@ -126,9 +126,9 @@ func TestValidateGenesis(t *testing.T) { "invalid decimals of class": { &token.GenesisState{ Classes: []token.Token{{ - Id: "deadbeef", - Name: "test", - Symbol: "TT", + Id: "deadbeef", + Name: "test", + Symbol: "TT", Decimals: -1, }}, }, @@ -138,7 +138,7 @@ func TestValidateGenesis(t *testing.T) { &token.GenesisState{ Grants: []token.Grant{{ Grantee: "invalid", - Action: token.ActionMint, + Action: token.ActionMint, }}, }, false, @@ -147,7 +147,7 @@ func TestValidateGenesis(t *testing.T) { &token.GenesisState{ Grants: []token.Grant{{ Grantee: addr.String(), - Action: "invalid", + Action: "invalid", }}, }, false, @@ -156,7 +156,7 @@ func TestValidateGenesis(t *testing.T) { &token.GenesisState{ Approves: []token.Approve{{ Approver: "invalid", - Proxy: addr.String(), + Proxy: addr.String(), }}, }, false, @@ -165,7 +165,7 @@ func TestValidateGenesis(t *testing.T) { &token.GenesisState{ Approves: []token.Approve{{ Approver: addr.String(), - Proxy: "invalid", + Proxy: "invalid", }}, }, false, diff --git a/x/token/keeper/handler_test.go b/x/token/keeper/handler_test.go index 0be7e18b8e..1b557a9a9d 100644 --- a/x/token/keeper/handler_test.go +++ b/x/token/keeper/handler_test.go @@ -2,48 +2,48 @@ package keeper_test import ( sdk "github.com/line/lbm-sdk/types" + banktypes "github.com/line/lbm-sdk/x/bank/types" "github.com/line/lbm-sdk/x/token" "github.com/line/lbm-sdk/x/token/keeper" - banktypes "github.com/line/lbm-sdk/x/bank/types" ) func (s *KeeperTestSuite) TestNewHandler() { - testCases := map[string]struct{ - msg sdk.Msg + testCases := map[string]struct { + msg sdk.Msg valid bool }{ "MsgTransfer": { &token.MsgTransfer{ ClassId: s.classID, - From: s.vendor.String(), - To: s.customer.String(), - Amount: sdk.OneInt(), + From: s.vendor.String(), + To: s.customer.String(), + Amount: sdk.OneInt(), }, true, }, "MsgTransferFrom": { &token.MsgTransferFrom{ ClassId: s.classID, - Proxy: s.operator.String(), - From: s.customer.String(), - To: s.vendor.String(), - Amount: sdk.OneInt(), + Proxy: s.operator.String(), + From: s.customer.String(), + To: s.vendor.String(), + Amount: sdk.OneInt(), }, true, }, "MsgApprove": { &token.MsgApprove{ - ClassId: s.classID, + ClassId: s.classID, Approver: s.customer.String(), - Proxy: s.vendor.String(), + Proxy: s.vendor.String(), }, true, }, "MsgIssue": { &token.MsgIssue{ - Owner: s.vendor.String(), - To: s.vendor.String(), - Name: "for test", + Owner: s.vendor.String(), + To: s.vendor.String(), + Name: "for test", Symbol: "TT", Amount: sdk.OneInt(), }, @@ -54,7 +54,7 @@ func (s *KeeperTestSuite) TestNewHandler() { ClassId: s.classID, Granter: s.vendor.String(), Grantee: s.operator.String(), - Action: token.ActionModify, + Action: token.ActionModify, }, true, }, @@ -62,7 +62,7 @@ func (s *KeeperTestSuite) TestNewHandler() { &token.MsgRevoke{ ClassId: s.classID, Grantee: s.operator.String(), - Action: token.ActionMint, + Action: token.ActionMint, }, true, }, @@ -70,16 +70,16 @@ func (s *KeeperTestSuite) TestNewHandler() { &token.MsgMint{ ClassId: s.classID, Grantee: s.vendor.String(), - To: s.customer.String(), - Amount: sdk.OneInt(), + To: s.customer.String(), + Amount: sdk.OneInt(), }, true, }, "MsgBurn": { &token.MsgBurn{ ClassId: s.classID, - From: s.operator.String(), - Amount: sdk.OneInt(), + From: s.operator.String(), + Amount: sdk.OneInt(), }, true, }, @@ -87,8 +87,8 @@ func (s *KeeperTestSuite) TestNewHandler() { &token.MsgBurnFrom{ ClassId: s.classID, Grantee: s.operator.String(), - From: s.customer.String(), - Amount: sdk.OneInt(), + From: s.customer.String(), + Amount: sdk.OneInt(), }, true, }, diff --git a/x/token/keeper/keeper_test.go b/x/token/keeper/keeper_test.go index b5605f563c..5dd388d18f 100644 --- a/x/token/keeper/keeper_test.go +++ b/x/token/keeper/keeper_test.go @@ -6,23 +6,24 @@ import ( ocproto "github.com/line/ostracon/proto/ostracon/types" + "github.com/stretchr/testify/suite" + "github.com/line/lbm-sdk/crypto/keys/secp256k1" "github.com/line/lbm-sdk/simapp" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/token" "github.com/line/lbm-sdk/x/token/keeper" - "github.com/stretchr/testify/suite" ) type KeeperTestSuite struct { suite.Suite - ctx sdk.Context - goCtx context.Context - keeper keeper.Keeper + ctx sdk.Context + goCtx context.Context + keeper keeper.Keeper queryServer token.QueryServer - msgServer token.MsgServer + msgServer token.MsgServer - vendor sdk.AccAddress + vendor sdk.AccAddress operator sdk.AccAddress customer sdk.AccAddress @@ -50,9 +51,9 @@ func (s *KeeperTestSuite) SetupTest() { // create a mintable class s.classID = "f00dbabe" class := token.Token{ - Id: s.classID, - Name: "Mintable", - Symbol: "OK", + Id: s.classID, + Name: "Mintable", + Symbol: "OK", Mintable: true, } err := s.keeper.Issue(s.ctx, class, s.vendor, s.vendor, s.balance) diff --git a/x/token/keeper/msg_server_test.go b/x/token/keeper/msg_server_test.go index 95fad6202e..1312cb9185 100644 --- a/x/token/keeper/msg_server_test.go +++ b/x/token/keeper/msg_server_test.go @@ -6,20 +6,20 @@ import ( ) func (s *KeeperTestSuite) TestMsgTransfer() { - testCases := map[string]struct{ + testCases := map[string]struct { classId string - amount sdk.Int - valid bool + amount sdk.Int + valid bool }{ "valid request": { classId: s.classID, - amount: sdk.OneInt(), - valid: true, + amount: sdk.OneInt(), + valid: true, }, "insufficient funds (no such a class)": { classId: "00000000", - amount: sdk.OneInt(), - valid: false, + amount: sdk.OneInt(), + valid: false, }, } @@ -27,9 +27,9 @@ func (s *KeeperTestSuite) TestMsgTransfer() { s.Run(name, func() { req := &token.MsgTransfer{ ClassId: tc.classId, - From: s.vendor.String(), - To: s.customer.String(), - Amount: tc.amount, + From: s.vendor.String(), + To: s.customer.String(), + Amount: tc.amount, } res, err := s.msgServer.Transfer(s.goCtx, req) if !tc.valid { @@ -43,19 +43,19 @@ func (s *KeeperTestSuite) TestMsgTransfer() { } func (s *KeeperTestSuite) TestMsgTransferFrom() { - testCases := map[string]struct{ + testCases := map[string]struct { proxy sdk.AccAddress - from sdk.AccAddress + from sdk.AccAddress valid bool }{ "valid request": { proxy: s.operator, - from: s.customer, + from: s.customer, valid: true, }, "not approved": { proxy: s.vendor, - from: s.customer, + from: s.customer, valid: false, }, } @@ -64,10 +64,10 @@ func (s *KeeperTestSuite) TestMsgTransferFrom() { s.Run(name, func() { req := &token.MsgTransferFrom{ ClassId: s.classID, - Proxy: tc.proxy.String(), - From: tc.from.String(), - To: s.vendor.String(), - Amount: sdk.OneInt(), + Proxy: tc.proxy.String(), + From: tc.from.String(), + To: s.vendor.String(), + Amount: sdk.OneInt(), } res, err := s.msgServer.TransferFrom(s.goCtx, req) if !tc.valid { @@ -81,29 +81,29 @@ func (s *KeeperTestSuite) TestMsgTransferFrom() { } func (s *KeeperTestSuite) TestMsgApprove() { - testCases := map[string]struct{ + testCases := map[string]struct { approver sdk.AccAddress - proxy sdk.AccAddress - valid bool + proxy sdk.AccAddress + valid bool }{ "valid request": { approver: s.customer, - proxy: s.vendor, - valid: true, + proxy: s.vendor, + valid: true, }, "already approved": { approver: s.customer, - proxy: s.operator, - valid: false, + proxy: s.operator, + valid: false, }, } for name, tc := range testCases { s.Run(name, func() { req := &token.MsgApprove{ - ClassId: s.classID, + ClassId: s.classID, Approver: tc.approver.String(), - Proxy: tc.proxy.String(), + Proxy: tc.proxy.String(), } res, err := s.msgServer.Approve(s.goCtx, req) if !tc.valid { @@ -117,26 +117,26 @@ func (s *KeeperTestSuite) TestMsgApprove() { } func (s *KeeperTestSuite) TestMsgIssue() { - testCases := map[string]struct{ + testCases := map[string]struct { amount sdk.Int - valid bool + valid bool }{ "valid request": { amount: sdk.OneInt(), - valid: true, + valid: true, }, "invalid amount (not possible to reach here but for cov)": { amount: sdk.NewInt(-1), - valid: false, + valid: false, }, } for name, tc := range testCases { s.Run(name, func() { req := &token.MsgIssue{ - Owner: s.vendor.String(), - To: s.vendor.String(), - Name: "test", + Owner: s.vendor.String(), + To: s.vendor.String(), + Name: "test", Symbol: "TT", Amount: tc.amount, } @@ -152,23 +152,23 @@ func (s *KeeperTestSuite) TestMsgIssue() { } func (s *KeeperTestSuite) TestMsgGrant() { - testCases := map[string]struct{ + testCases := map[string]struct { granter sdk.AccAddress grantee sdk.AccAddress - action string - valid bool + action string + valid bool }{ "valid request": { granter: s.vendor, grantee: s.operator, - action: token.ActionModify, - valid: true, + action: token.ActionModify, + valid: true, }, "already granted": { granter: s.vendor, grantee: s.operator, - action: token.ActionMint, - valid: false, + action: token.ActionMint, + valid: false, }, } @@ -178,7 +178,7 @@ func (s *KeeperTestSuite) TestMsgGrant() { ClassId: s.classID, Granter: tc.granter.String(), Grantee: tc.grantee.String(), - Action: tc.action, + Action: tc.action, } res, err := s.msgServer.Grant(s.goCtx, req) if !tc.valid { @@ -192,20 +192,20 @@ func (s *KeeperTestSuite) TestMsgGrant() { } func (s *KeeperTestSuite) TestMsgRevoke() { - testCases := map[string]struct{ + testCases := map[string]struct { grantee sdk.AccAddress - action string - valid bool + action string + valid bool }{ "valid request": { grantee: s.operator, - action: token.ActionMint, - valid: true, + action: token.ActionMint, + valid: true, }, "not granted yet": { grantee: s.operator, - action: token.ActionModify, - valid: false, + action: token.ActionModify, + valid: false, }, } @@ -214,7 +214,7 @@ func (s *KeeperTestSuite) TestMsgRevoke() { req := &token.MsgRevoke{ ClassId: s.classID, Grantee: tc.grantee.String(), - Action: tc.action, + Action: tc.action, } res, err := s.msgServer.Revoke(s.goCtx, req) if !tc.valid { @@ -228,17 +228,17 @@ func (s *KeeperTestSuite) TestMsgRevoke() { } func (s *KeeperTestSuite) TestMsgMint() { - testCases := map[string]struct{ + testCases := map[string]struct { grantee sdk.AccAddress - valid bool + valid bool }{ "valid request": { grantee: s.operator, - valid: true, + valid: true, }, "not granted": { grantee: s.customer, - valid: false, + valid: false, }, } @@ -247,8 +247,8 @@ func (s *KeeperTestSuite) TestMsgMint() { req := &token.MsgMint{ ClassId: s.classID, Grantee: tc.grantee.String(), - To: s.customer.String(), - Amount: sdk.OneInt(), + To: s.customer.String(), + Amount: sdk.OneInt(), } res, err := s.msgServer.Mint(s.goCtx, req) if !tc.valid { @@ -262,16 +262,16 @@ func (s *KeeperTestSuite) TestMsgMint() { } func (s *KeeperTestSuite) TestMsgBurn() { - testCases := map[string]struct{ - from sdk.AccAddress + testCases := map[string]struct { + from sdk.AccAddress valid bool }{ "valid request": { - from: s.vendor, + from: s.vendor, valid: true, }, "not granted": { - from: s.customer, + from: s.customer, valid: false, }, } @@ -280,8 +280,8 @@ func (s *KeeperTestSuite) TestMsgBurn() { s.Run(name, func() { req := &token.MsgBurn{ ClassId: s.classID, - From: tc.from.String(), - Amount: sdk.OneInt(), + From: tc.from.String(), + Amount: sdk.OneInt(), } res, err := s.msgServer.Burn(s.goCtx, req) if !tc.valid { @@ -295,20 +295,20 @@ func (s *KeeperTestSuite) TestMsgBurn() { } func (s *KeeperTestSuite) TestMsgBurnFrom() { - testCases := map[string]struct{ + testCases := map[string]struct { grantee sdk.AccAddress - from sdk.AccAddress - valid bool + from sdk.AccAddress + valid bool }{ "valid request": { grantee: s.operator, - from: s.customer, - valid: true, + from: s.customer, + valid: true, }, "not approved": { grantee: s.vendor, - from: s.customer, - valid: false, + from: s.customer, + valid: false, }, } @@ -317,8 +317,8 @@ func (s *KeeperTestSuite) TestMsgBurnFrom() { req := &token.MsgBurnFrom{ ClassId: s.classID, Grantee: tc.grantee.String(), - From: tc.from.String(), - Amount: sdk.OneInt(), + From: tc.from.String(), + Amount: sdk.OneInt(), } res, err := s.msgServer.BurnFrom(s.goCtx, req) if !tc.valid { @@ -332,17 +332,17 @@ func (s *KeeperTestSuite) TestMsgBurnFrom() { } func (s *KeeperTestSuite) TestMsgModify() { - testCases := map[string]struct{ + testCases := map[string]struct { grantee sdk.AccAddress - valid bool + valid bool }{ "valid request": { grantee: s.vendor, - valid: true, + valid: true, }, "not granted": { grantee: s.operator, - valid: false, + valid: false, }, } diff --git a/x/token/keeper/query_server_test.go b/x/token/keeper/query_server_test.go index d2b6ab67ed..773901beae 100644 --- a/x/token/keeper/query_server_test.go +++ b/x/token/keeper/query_server_test.go @@ -11,16 +11,16 @@ func (s *KeeperTestSuite) TestQueryTokenBalance() { _, err := s.queryServer.TokenBalance(s.goCtx, nil) s.Require().Error(err) - testCases := map[string]struct{ - classId string - address sdk.AccAddress - valid bool + testCases := map[string]struct { + classId string + address sdk.AccAddress + valid bool postTest func(res *token.QueryTokenBalanceResponse) }{ "valid request": { classId: s.classID, address: s.vendor, - valid: true, + valid: true, postTest: func(res *token.QueryTokenBalanceResponse) { s.Require().Equal(s.balance, res.Amount) }, @@ -28,12 +28,12 @@ func (s *KeeperTestSuite) TestQueryTokenBalance() { "invalid class id": { classId: "invalid", address: s.vendor, - valid: false, + valid: false, }, "invalid address": { classId: s.classID, address: "invalid", - valid: false, + valid: false, }, } @@ -60,16 +60,16 @@ func (s *KeeperTestSuite) TestQuerySupply() { _, err := s.queryServer.Supply(s.goCtx, nil) s.Require().Error(err) - testCases := map[string]struct{ - classId string - reqType string - valid bool + testCases := map[string]struct { + classId string + reqType string + valid bool postTest func(res *token.QuerySupplyResponse) }{ "valid supply request": { classId: s.classID, reqType: "supply", - valid: true, + valid: true, postTest: func(res *token.QuerySupplyResponse) { s.Require().Equal(s.balance.Mul(sdk.NewInt(3)), res.Amount) }, @@ -77,7 +77,7 @@ func (s *KeeperTestSuite) TestQuerySupply() { "valid mint request": { classId: s.classID, reqType: "mint", - valid: true, + valid: true, postTest: func(res *token.QuerySupplyResponse) { s.Require().Equal(s.balance.Mul(sdk.NewInt(4)), res.Amount) }, @@ -85,7 +85,7 @@ func (s *KeeperTestSuite) TestQuerySupply() { "valid burn request": { classId: s.classID, reqType: "burn", - valid: true, + valid: true, postTest: func(res *token.QuerySupplyResponse) { s.Require().Equal(s.balance, res.Amount) }, @@ -93,12 +93,12 @@ func (s *KeeperTestSuite) TestQuerySupply() { "invalid class id": { classId: "invalid", reqType: "burn", - valid: false, + valid: false, }, "invalid request": { classId: s.classID, reqType: "invalid", - valid: false, + valid: false, }, } @@ -106,7 +106,7 @@ func (s *KeeperTestSuite) TestQuerySupply() { s.Run(name, func() { req := &token.QuerySupplyRequest{ ClassId: tc.classId, - Type: tc.reqType, + Type: tc.reqType, } res, err := s.queryServer.Supply(s.goCtx, req) if !tc.valid { @@ -125,25 +125,25 @@ func (s *KeeperTestSuite) TestQueryToken() { _, err := s.queryServer.Token(s.goCtx, nil) s.Require().Error(err) - testCases := map[string]struct{ - classId string - valid bool + testCases := map[string]struct { + classId string + valid bool postTest func(res *token.QueryTokenResponse) }{ "valid request": { classId: s.classID, - valid: true, + valid: true, postTest: func(res *token.QueryTokenResponse) { s.Require().Equal(s.classID, res.Token.Id) }, }, "invalid class id": { classId: "invalid", - valid: false, + valid: false, }, "no such an id": { classId: "00000000", - valid: false, + valid: false, }, } @@ -169,23 +169,23 @@ func (s *KeeperTestSuite) TestQueryTokens() { _, err := s.queryServer.Tokens(s.goCtx, nil) s.Require().Error(err) - testCases := map[string]struct{ - classId string - valid bool - count uint64 + testCases := map[string]struct { + classId string + valid bool + count uint64 postTest func(res *token.QueryTokensResponse) }{ "valid request": { classId: s.classID, - valid: true, + valid: true, postTest: func(res *token.QueryTokensResponse) { s.Require().Equal(2, len(res.Tokens)) }, }, "valid request with limit": { classId: s.classID, - valid: true, - count: 1, + valid: true, + count: 1, postTest: func(res *token.QueryTokensResponse) { s.Require().Equal(1, len(res.Tokens)) }, @@ -218,16 +218,16 @@ func (s *KeeperTestSuite) TestQueryGrants() { _, err := s.queryServer.Grants(s.goCtx, nil) s.Require().Error(err) - testCases := map[string]struct{ - classId string - grantee sdk.AccAddress - valid bool + testCases := map[string]struct { + classId string + grantee sdk.AccAddress + valid bool postTest func(res *token.QueryGrantsResponse) }{ "valid request": { classId: s.classID, grantee: s.vendor, - valid: true, + valid: true, postTest: func(res *token.QueryGrantsResponse) { s.Require().Equal(3, len(res.Grants)) }, @@ -235,12 +235,12 @@ func (s *KeeperTestSuite) TestQueryGrants() { "invalid class id": { classId: "invalid", grantee: s.vendor, - valid: false, + valid: false, }, "invalid grantee": { classId: s.classID, grantee: "invalid", - valid: false, + valid: false, }, } @@ -267,47 +267,47 @@ func (s *KeeperTestSuite) TestQueryApprove() { _, err := s.queryServer.Approve(s.goCtx, nil) s.Require().Error(err) - testCases := map[string]struct{ - classId string - proxy sdk.AccAddress + testCases := map[string]struct { + classId string + proxy sdk.AccAddress approver sdk.AccAddress - valid bool + valid bool postTest func(res *token.QueryApproveResponse) }{ "valid request": { - classId: s.classID, - proxy: s.operator, + classId: s.classID, + proxy: s.operator, approver: s.customer, - valid: true, + valid: true, postTest: func(res *token.QueryApproveResponse) { s.Require().NotNil(res.Approve) }, }, "invalid class id": { - classId: "invalid", - proxy: s.operator, + classId: "invalid", + proxy: s.operator, approver: s.customer, - valid: false, + valid: false, }, "invalid proxy": { - classId: s.classID, - proxy: "invalid", + classId: s.classID, + proxy: "invalid", approver: s.customer, - valid: false, + valid: false, }, "invalid approver": { - classId: s.classID, - proxy: s.operator, + classId: s.classID, + proxy: s.operator, approver: "invalid", - valid: false, + valid: false, }, } for name, tc := range testCases { s.Run(name, func() { req := &token.QueryApproveRequest{ - ClassId: tc.classId, - Proxy: tc.proxy.String(), + ClassId: tc.classId, + Proxy: tc.proxy.String(), Approver: tc.approver.String(), } res, err := s.queryServer.Approve(s.goCtx, req) @@ -327,39 +327,39 @@ func (s *KeeperTestSuite) TestQueryApproves() { _, err := s.queryServer.Approves(s.goCtx, nil) s.Require().Error(err) - testCases := map[string]struct{ - classId string - proxy sdk.AccAddress - valid bool - count uint64 + testCases := map[string]struct { + classId string + proxy sdk.AccAddress + valid bool + count uint64 postTest func(res *token.QueryApprovesResponse) }{ "valid request": { classId: s.classID, - proxy: s.operator, - valid: true, + proxy: s.operator, + valid: true, postTest: func(res *token.QueryApprovesResponse) { s.Require().Equal(2, len(res.Approves)) }, }, "valid request with limit": { classId: s.classID, - proxy: s.operator, - valid: true, - count: 1, + proxy: s.operator, + valid: true, + count: 1, postTest: func(res *token.QueryApprovesResponse) { s.Require().Equal(1, len(res.Approves)) }, }, "invalid class id": { classId: "invalid", - proxy: s.operator, - valid: false, + proxy: s.operator, + valid: false, }, "invalid proxy": { classId: s.classID, - proxy: "invalid", - valid: false, + proxy: "invalid", + valid: false, }, } @@ -370,8 +370,8 @@ func (s *KeeperTestSuite) TestQueryApproves() { pageReq.Limit = tc.count } req := &token.QueryApprovesRequest{ - ClassId: tc.classId, - Proxy: tc.proxy.String(), + ClassId: tc.classId, + Proxy: tc.proxy.String(), Pagination: pageReq, } res, err := s.queryServer.Approves(s.goCtx, req) diff --git a/x/token/keeper/supply.go b/x/token/keeper/supply.go index 56f82f8cbd..92e33e8b67 100644 --- a/x/token/keeper/supply.go +++ b/x/token/keeper/supply.go @@ -2,6 +2,7 @@ package keeper import ( "github.com/gogo/protobuf/proto" + sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" "github.com/line/lbm-sdk/x/token" diff --git a/x/token/keeper/supply_test.go b/x/token/keeper/supply_test.go index 7664d228d1..b822972332 100644 --- a/x/token/keeper/supply_test.go +++ b/x/token/keeper/supply_test.go @@ -10,9 +10,9 @@ import ( func (s *KeeperTestSuite) TestIssue() { // create a not mintable class class := token.Token{ - Id: "fee1dead", - Name: "NOT Mintable", - Symbol: "NO", + Id: "fee1dead", + Name: "NOT Mintable", + Symbol: "NO", Mintable: false, } err := s.keeper.Issue(s.ctx, class, s.vendor, s.vendor, sdk.OneInt()) diff --git a/x/token/keeper/transfer.go b/x/token/keeper/transfer.go index 003a1f7d7d..aacaf00b78 100644 --- a/x/token/keeper/transfer.go +++ b/x/token/keeper/transfer.go @@ -2,6 +2,7 @@ package keeper import ( "github.com/gogo/protobuf/proto" + sdk "github.com/line/lbm-sdk/types" sdkerrors "github.com/line/lbm-sdk/types/errors" "github.com/line/lbm-sdk/x/token" diff --git a/x/token/keeper/transfer_test.go b/x/token/keeper/transfer_test.go index a21405bc97..8264648fba 100644 --- a/x/token/keeper/transfer_test.go +++ b/x/token/keeper/transfer_test.go @@ -8,9 +8,9 @@ import ( ) func (s *KeeperTestSuite) TestTransfer() { - testCases := map[string]struct{ + testCases := map[string]struct { amount token.FT - valid bool + valid bool }{ "valid transfer": { token.FT{ClassId: s.classID, Amount: sdk.OneInt()}, diff --git a/x/token/msgs_test.go b/x/token/msgs_test.go index d4212065a8..c381ad4ff3 100644 --- a/x/token/msgs_test.go +++ b/x/token/msgs_test.go @@ -3,10 +3,11 @@ package token_test import ( "testing" + "github.com/stretchr/testify/require" + "github.com/line/lbm-sdk/crypto/keys/secp256k1" sdk "github.com/line/lbm-sdk/types" "github.com/line/lbm-sdk/x/token" - "github.com/stretchr/testify/require" ) func TestMsgTransfer(t *testing.T) { @@ -17,54 +18,54 @@ func TestMsgTransfer(t *testing.T) { testCases := map[string]struct { classId string - from sdk.AccAddress - to sdk.AccAddress - amount sdk.Int - valid bool + from sdk.AccAddress + to sdk.AccAddress + amount sdk.Int + valid bool }{ "valid msg": { classId: "deadbeef", - from: addrs[0], - to: addrs[1], - amount: sdk.OneInt(), - valid: true, + from: addrs[0], + to: addrs[1], + amount: sdk.OneInt(), + valid: true, }, "empty from": { classId: "deadbeef", - from: "", - to: addrs[1], - amount: sdk.OneInt(), - valid: false, + from: "", + to: addrs[1], + amount: sdk.OneInt(), + valid: false, }, "invalid class id": { classId: "invalid", - from: addrs[0], - to: addrs[1], - amount: sdk.OneInt(), - valid: false, + from: addrs[0], + to: addrs[1], + amount: sdk.OneInt(), + valid: false, }, "invalid to": { classId: "deadbeef", - from: addrs[0], - to: "invalid", - amount: sdk.OneInt(), - valid: false, + from: addrs[0], + to: "invalid", + amount: sdk.OneInt(), + valid: false, }, "zero amount": { classId: "deadbeef", - from: addrs[0], - to: addrs[1], - amount: sdk.ZeroInt(), - valid: false, + from: addrs[0], + to: addrs[1], + amount: sdk.ZeroInt(), + valid: false, }, } for name, tc := range testCases { msg := token.MsgTransfer{ ClassId: tc.classId, - From: tc.from.String(), - To: tc.to.String(), - Amount: tc.amount, + From: tc.from.String(), + To: tc.to.String(), + Amount: tc.amount, } require.Equal(t, []sdk.AccAddress{tc.from}, msg.GetSigners()) @@ -86,69 +87,69 @@ func TestMsgTransferFrom(t *testing.T) { testCases := map[string]struct { classId string - proxy sdk.AccAddress - from sdk.AccAddress - to sdk.AccAddress - amount sdk.Int - valid bool + proxy sdk.AccAddress + from sdk.AccAddress + to sdk.AccAddress + amount sdk.Int + valid bool }{ "valid msg": { classId: "deadbeef", - proxy: addrs[0], - from: addrs[1], - to: addrs[2], - amount: sdk.OneInt(), - valid: true, + proxy: addrs[0], + from: addrs[1], + to: addrs[2], + amount: sdk.OneInt(), + valid: true, }, "invalid proxy": { classId: "deadbeef", - proxy: "invalid", - from: addrs[1], - to: addrs[2], - amount: sdk.OneInt(), - valid: false, + proxy: "invalid", + from: addrs[1], + to: addrs[2], + amount: sdk.OneInt(), + valid: false, }, "invalid class id": { classId: "invalid", - proxy: addrs[0], - from: addrs[1], - to: addrs[2], - amount: sdk.OneInt(), - valid: false, + proxy: addrs[0], + from: addrs[1], + to: addrs[2], + amount: sdk.OneInt(), + valid: false, }, "empty from": { classId: "deadbeef", - proxy: addrs[0], - from: "", - to: addrs[1], - amount: sdk.OneInt(), - valid: false, + proxy: addrs[0], + from: "", + to: addrs[1], + amount: sdk.OneInt(), + valid: false, }, "invalid to": { classId: "deadbeef", - proxy: addrs[0], - from: addrs[1], - to: "invalid", - amount: sdk.OneInt(), - valid: false, + proxy: addrs[0], + from: addrs[1], + to: "invalid", + amount: sdk.OneInt(), + valid: false, }, "zero amount": { classId: "deadbeef", - proxy: addrs[0], - from: addrs[1], - to: addrs[2], - amount: sdk.ZeroInt(), - valid: false, + proxy: addrs[0], + from: addrs[1], + to: addrs[2], + amount: sdk.ZeroInt(), + valid: false, }, } for name, tc := range testCases { msg := token.MsgTransferFrom{ ClassId: tc.classId, - Proxy: tc.proxy.String(), - From: tc.from.String(), - To: tc.to.String(), - Amount: tc.amount, + Proxy: tc.proxy.String(), + From: tc.from.String(), + To: tc.to.String(), + Amount: tc.amount, } require.Equal(t, []sdk.AccAddress{tc.proxy}, msg.GetSigners()) @@ -169,42 +170,42 @@ func TestMsgApprove(t *testing.T) { } testCases := map[string]struct { - classId string + classId string approver sdk.AccAddress - proxy sdk.AccAddress - valid bool + proxy sdk.AccAddress + valid bool }{ "valid msg": { - classId: "deadbeef", + classId: "deadbeef", approver: addrs[0], - proxy: addrs[1], - valid: true, + proxy: addrs[1], + valid: true, }, "invalid class id": { - classId: "invalid", + classId: "invalid", approver: addrs[0], - proxy: addrs[1], - valid: false, + proxy: addrs[1], + valid: false, }, "invalid approver": { - classId: "deadbeef", + classId: "deadbeef", approver: "invalid", - proxy: addrs[1], - valid: false, + proxy: addrs[1], + valid: false, }, "empty proxy": { - classId: "deadbeef", + classId: "deadbeef", approver: addrs[0], - proxy: "", - valid: false, + proxy: "", + valid: false, }, } for name, tc := range testCases { msg := token.MsgApprove{ - ClassId: tc.classId, + ClassId: tc.classId, Approver: tc.approver.String(), - Proxy: tc.proxy.String(), + Proxy: tc.proxy.String(), } require.Equal(t, []sdk.AccAddress{tc.approver}, msg.GetSigners()) @@ -225,138 +226,138 @@ func TestMsgIssue(t *testing.T) { } testCases := map[string]struct { - owner sdk.AccAddress - to sdk.AccAddress - name string - symbol string + owner sdk.AccAddress + to sdk.AccAddress + name string + symbol string imageUri string - meta string + meta string decimals int32 - amount sdk.Int - valid bool + amount sdk.Int + valid bool }{ "valid msg": { - owner: addrs[0], - to: addrs[1], - name: "test", - symbol: "TT", + owner: addrs[0], + to: addrs[1], + name: "test", + symbol: "TT", imageUri: "some URI", - meta: "some meta", + meta: "some meta", decimals: 8, - amount: sdk.OneInt(), - valid: true, + amount: sdk.OneInt(), + valid: true, }, "invalid owner": { - owner: "invalid", - to: addrs[1], - name: "test", - symbol: "TT", + owner: "invalid", + to: addrs[1], + name: "test", + symbol: "TT", imageUri: "some URI", - meta: "some meta", + meta: "some meta", decimals: 8, - amount: sdk.OneInt(), - valid: false, + amount: sdk.OneInt(), + valid: false, }, "empty to": { - owner: addrs[0], - to: "", - name: "test", - symbol: "TT", + owner: addrs[0], + to: "", + name: "test", + symbol: "TT", imageUri: "some URI", - meta: "some meta", + meta: "some meta", decimals: 8, - amount: sdk.OneInt(), - valid: false, + amount: sdk.OneInt(), + valid: false, }, "empty name": { - owner: addrs[0], - to: addrs[1], - name: "", - symbol: "TT", + owner: addrs[0], + to: addrs[1], + name: "", + symbol: "TT", imageUri: "some URI", - meta: "some meta", + meta: "some meta", decimals: 8, - amount: sdk.OneInt(), - valid: false, + amount: sdk.OneInt(), + valid: false, }, "long name": { - owner: addrs[0], - to: addrs[1], - name: "TOO Looooooooooooooog", - symbol: "TT", + owner: addrs[0], + to: addrs[1], + name: "TOO Looooooooooooooog", + symbol: "TT", imageUri: "some URI", - meta: "some meta", + meta: "some meta", decimals: 8, - amount: sdk.OneInt(), - valid: false, + amount: sdk.OneInt(), + valid: false, }, "invalid symbol": { - owner: addrs[0], - to: addrs[1], - name: "test", - symbol: "tt", + owner: addrs[0], + to: addrs[1], + name: "test", + symbol: "tt", imageUri: "some URI", - meta: "some meta", + meta: "some meta", decimals: 8, - amount: sdk.OneInt(), - valid: false, + amount: sdk.OneInt(), + valid: false, }, "invalid image uri": { - owner: addrs[0], - to: addrs[1], - name: "test", - symbol: "TT", + owner: addrs[0], + to: addrs[1], + name: "test", + symbol: "TT", imageUri: string(make([]rune, 1001)), - meta: "some meta", + meta: "some meta", decimals: 8, - amount: sdk.OneInt(), - valid: false, + amount: sdk.OneInt(), + valid: false, }, "invalid meta": { - owner: addrs[0], - to: addrs[1], - name: "test", - symbol: "TT", + owner: addrs[0], + to: addrs[1], + name: "test", + symbol: "TT", imageUri: "some URI", - meta: string(make([]rune, 1001)), + meta: string(make([]rune, 1001)), decimals: 8, - amount: sdk.OneInt(), - valid: false, + amount: sdk.OneInt(), + valid: false, }, "invalid decimals": { - owner: addrs[0], - to: addrs[1], - name: "test", - symbol: "TT", + owner: addrs[0], + to: addrs[1], + name: "test", + symbol: "TT", imageUri: "some URI", - meta: "some meta", + meta: "some meta", decimals: 19, - amount: sdk.OneInt(), - valid: false, + amount: sdk.OneInt(), + valid: false, }, "valid supply": { - owner: addrs[0], - to: addrs[1], - name: "test", - symbol: "TT", + owner: addrs[0], + to: addrs[1], + name: "test", + symbol: "TT", imageUri: "some URI", - meta: "some meta", + meta: "some meta", decimals: 8, - amount: sdk.ZeroInt(), - valid: false, + amount: sdk.ZeroInt(), + valid: false, }, } for name, tc := range testCases { msg := token.MsgIssue{ - Owner: tc.owner.String(), - To: tc.to.String(), - Name: tc.name, - Symbol: tc.symbol, + Owner: tc.owner.String(), + To: tc.to.String(), + Name: tc.name, + Symbol: tc.symbol, ImageUri: tc.imageUri, - Meta: tc.meta, + Meta: tc.meta, Decimals: tc.decimals, - Amount: tc.amount, + Amount: tc.amount, } require.Equal(t, []sdk.AccAddress{tc.owner}, msg.GetSigners()) @@ -379,44 +380,44 @@ func TestMsgMint(t *testing.T) { testCases := map[string]struct { classId string grantee sdk.AccAddress - to sdk.AccAddress - amount sdk.Int - valid bool + to sdk.AccAddress + amount sdk.Int + valid bool }{ "valid msg": { classId: "deadbeef", grantee: addrs[0], - to: addrs[1], - amount: sdk.OneInt(), - valid: true, + to: addrs[1], + amount: sdk.OneInt(), + valid: true, }, "invalid class id": { classId: "invalid", grantee: addrs[0], - to: addrs[1], - amount: sdk.OneInt(), - valid: false, + to: addrs[1], + amount: sdk.OneInt(), + valid: false, }, "invalid grantee": { classId: "deadbeef", grantee: "invalid", - to: addrs[1], - amount: sdk.OneInt(), - valid: false, + to: addrs[1], + amount: sdk.OneInt(), + valid: false, }, "empty to": { classId: "deadbeef", grantee: addrs[0], - to: "", - amount: sdk.OneInt(), - valid: false, + to: "", + amount: sdk.OneInt(), + valid: false, }, "zero amount": { classId: "deadbeef", grantee: addrs[0], - to: addrs[1], - amount: sdk.ZeroInt(), - valid: false, + to: addrs[1], + amount: sdk.ZeroInt(), + valid: false, }, } @@ -424,8 +425,8 @@ func TestMsgMint(t *testing.T) { msg := token.MsgMint{ ClassId: tc.classId, Grantee: tc.grantee.String(), - To: tc.to.String(), - Amount: tc.amount, + To: tc.to.String(), + Amount: tc.amount, } require.Equal(t, []sdk.AccAddress{tc.grantee}, msg.GetSigners()) @@ -447,41 +448,41 @@ func TestMsgBurn(t *testing.T) { testCases := map[string]struct { classId string - from sdk.AccAddress - amount sdk.Int - valid bool + from sdk.AccAddress + amount sdk.Int + valid bool }{ "valid msg": { classId: "deadbeef", - from: addrs[0], - amount: sdk.OneInt(), - valid: true, + from: addrs[0], + amount: sdk.OneInt(), + valid: true, }, "invalid class id": { classId: "invalid", - from: addrs[0], - amount: sdk.OneInt(), - valid: false, + from: addrs[0], + amount: sdk.OneInt(), + valid: false, }, "invalid from": { classId: "deadbeef", - from: "invalid", - amount: sdk.OneInt(), - valid: false, + from: "invalid", + amount: sdk.OneInt(), + valid: false, }, "zero amount": { classId: "deadbeef", - from: addrs[0], - amount: sdk.ZeroInt(), - valid: false, + from: addrs[0], + amount: sdk.ZeroInt(), + valid: false, }, } for name, tc := range testCases { msg := token.MsgBurn{ ClassId: tc.classId, - From: tc.from.String(), - Amount: tc.amount, + From: tc.from.String(), + Amount: tc.amount, } require.Equal(t, []sdk.AccAddress{tc.from}, msg.GetSigners()) @@ -504,44 +505,44 @@ func TestMsgBurnFrom(t *testing.T) { testCases := map[string]struct { classId string grantee sdk.AccAddress - from sdk.AccAddress - amount sdk.Int - valid bool + from sdk.AccAddress + amount sdk.Int + valid bool }{ "valid msg": { classId: "deadbeef", grantee: addrs[0], - from: addrs[1], - amount: sdk.OneInt(), - valid: true, + from: addrs[1], + amount: sdk.OneInt(), + valid: true, }, "invalid class id": { classId: "invalid", grantee: addrs[0], - from: addrs[1], - amount: sdk.OneInt(), - valid: false, + from: addrs[1], + amount: sdk.OneInt(), + valid: false, }, "invalid grantee": { classId: "deadbeef", grantee: "invalid", - from: addrs[1], - amount: sdk.OneInt(), - valid: false, + from: addrs[1], + amount: sdk.OneInt(), + valid: false, }, "empty from": { classId: "deadbeef", grantee: addrs[0], - from: "", - amount: sdk.OneInt(), - valid: false, + from: "", + amount: sdk.OneInt(), + valid: false, }, "zero amount": { classId: "deadbeef", grantee: addrs[0], - from: addrs[1], - amount: sdk.ZeroInt(), - valid: false, + from: addrs[1], + amount: sdk.ZeroInt(), + valid: false, }, } @@ -549,8 +550,8 @@ func TestMsgBurnFrom(t *testing.T) { msg := token.MsgBurnFrom{ ClassId: tc.classId, Grantee: tc.grantee.String(), - From: tc.from.String(), - Amount: tc.amount, + From: tc.from.String(), + Amount: tc.amount, } require.Equal(t, []sdk.AccAddress{tc.grantee}, msg.GetSigners()) @@ -575,43 +576,43 @@ func TestMsgModify(t *testing.T) { classId string grantee sdk.AccAddress changes []token.Pair - valid bool + valid bool }{ "valid msg": { classId: "deadbeef", grantee: addrs[0], changes: []token.Pair{validChange}, - valid: true, + valid: true, }, "invalid class id": { classId: "invalid", grantee: addrs[0], changes: []token.Pair{validChange}, - valid: false, + valid: false, }, "invalid grantee": { classId: "deadbeef", grantee: "invalid", changes: []token.Pair{validChange}, - valid: false, + valid: false, }, "invalid key of change": { classId: "deadbeef", grantee: addrs[0], changes: []token.Pair{{Key: "invalid", Value: "tt"}}, - valid: false, + valid: false, }, "invalid value of change": { classId: "deadbeef", grantee: addrs[0], changes: []token.Pair{{Key: "symbol", Value: "tt"}}, - valid: false, + valid: false, }, "empty changes": { classId: "deadbeef", grantee: addrs[0], changes: []token.Pair{}, - valid: false, + valid: false, }, "duplicated changes": { classId: "deadbeef", @@ -652,43 +653,43 @@ func TestMsgGrant(t *testing.T) { classId string granter sdk.AccAddress grantee sdk.AccAddress - action string - valid bool + action string + valid bool }{ "valid msg": { classId: "deadbeef", granter: addrs[0], grantee: addrs[1], - action: token.ActionMint, - valid: true, + action: token.ActionMint, + valid: true, }, "invalid class id": { classId: "invalid", granter: addrs[0], grantee: addrs[1], - action: token.ActionMint, - valid: false, + action: token.ActionMint, + valid: false, }, "empty granter": { classId: "deadbeef", granter: "", grantee: addrs[1], - action: token.ActionMint, - valid: false, + action: token.ActionMint, + valid: false, }, "invalid grantee": { classId: "deadbeef", granter: addrs[0], grantee: "invalid", - action: token.ActionMint, - valid: false, + action: token.ActionMint, + valid: false, }, "invalid action": { classId: "deadbeef", granter: addrs[0], grantee: addrs[1], - action: "invalid", - valid: false, + action: "invalid", + valid: false, }, } @@ -697,7 +698,7 @@ func TestMsgGrant(t *testing.T) { ClassId: tc.classId, Granter: tc.granter.String(), Grantee: tc.grantee.String(), - Action: tc.action, + Action: tc.action, } require.Equal(t, []sdk.AccAddress{tc.granter}, msg.GetSigners()) @@ -720,32 +721,32 @@ func TestMsgRevoke(t *testing.T) { testCases := map[string]struct { classId string grantee sdk.AccAddress - action string - valid bool + action string + valid bool }{ "valid msg": { classId: "deadbeef", grantee: addrs[0], - action: token.ActionMint, - valid: true, + action: token.ActionMint, + valid: true, }, "invalid class id": { classId: "invalid", grantee: addrs[0], - action: token.ActionMint, - valid: false, + action: token.ActionMint, + valid: false, }, "invalid grantee": { classId: "deadbeef", grantee: "invalid", - action: token.ActionMint, - valid: false, + action: token.ActionMint, + valid: false, }, "invalid action": { classId: "deadbeef", grantee: addrs[0], - action: "invalid", - valid: false, + action: "invalid", + valid: false, }, } @@ -753,7 +754,7 @@ func TestMsgRevoke(t *testing.T) { msg := token.MsgRevoke{ ClassId: tc.classId, Grantee: tc.grantee.String(), - Action: tc.action, + Action: tc.action, } require.Equal(t, []sdk.AccAddress{tc.grantee}, msg.GetSigners()) From 5a0f90c52d12b4a9ca76b694b0d29242aac73605 Mon Sep 17 00:00:00 2001 From: loloicci Date: Wed, 2 Mar 2022 19:05:32 +0900 Subject: [PATCH 86/90] fix: fix proto's comment and update swagger.yaml about proto --- client/docs/swagger-ui/swagger.yaml | 232 +++--- docs/proto/proto-docs.md | 1116 --------------------------- proto/lbm/wasm/v1/proposal.proto | 1 - 3 files changed, 106 insertions(+), 1243 deletions(-) delete mode 100644 docs/proto/proto-docs.md diff --git a/client/docs/swagger-ui/swagger.yaml b/client/docs/swagger-ui/swagger.yaml index 5a1630ad9a..691819df39 100644 --- a/client/docs/swagger-ui/swagger.yaml +++ b/client/docs/swagger-ui/swagger.yaml @@ -31049,7 +31049,7 @@ paths: format: byte tags: - Query - /wasm/v1/code: + /line/wasm/v1/code: get: summary: Codes gets the metadata for all stored wasm codes operationId: Codes @@ -31072,10 +31072,6 @@ paths: data_hash: type: string format: byte - source: - type: string - builder: - type: string instantiate_permission: type: object properties: @@ -31358,7 +31354,7 @@ paths: format: boolean tags: - Query - '/wasm/v1/code/{code_id}': + '/line/wasm/v1/code/{code_id}': get: summary: Code gets the binary code and metadata for a singe wasm code operationId: Code @@ -31379,10 +31375,6 @@ paths: data_hash: type: string format: byte - source: - type: string - builder: - type: string instantiate_permission: type: object properties: @@ -31608,7 +31600,7 @@ paths: format: uint64 tags: - Query - '/wasm/v1/code/{code_id}/contracts': + '/line/wasm/v1/code/{code_id}/contracts': get: summary: ContractsByCode lists all smart contracts for a code id operationId: ContractsByCode @@ -31888,7 +31880,7 @@ paths: format: boolean tags: - Query - '/wasm/v1/contract/{address}': + '/line/wasm/v1/contract/{address}': get: summary: ContractInfo gets the contract meta data operationId: ContractInfo @@ -32336,7 +32328,7 @@ paths: type: string tags: - Query - '/wasm/v1/contract/{address}/history': + '/line/wasm/v1/contract/{address}/history': get: summary: ContractHistory gets the contract code history operationId: ContractHistory @@ -32658,23 +32650,51 @@ paths: format: boolean tags: - Query - '/wasm/v1/contract/{address}/raw/{query_data}': + '/line/wasm/v1/contract/{address}/state': get: - summary: RawContractState gets single key from the raw store data of a contract - operationId: RawContractState + summary: AllContractState gets all raw store data for a single contract + operationId: AllContractState responses: '200': description: A successful response. schema: type: object properties: - data: - type: string - format: byte - title: Data contains the raw store data + models: + type: array + items: + type: object + properties: + key: + type: string + format: byte + title: hex-encode key to read it better (this is often ascii) + value: + type: string + format: byte + title: base64-encode raw value + title: Model is a struct that holds a KV pair + pagination: + description: pagination defines the pagination in the response. + type: object + properties: + next_key: + type: string + format: byte + title: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise title: |- - QueryRawContractStateResponse is the response type for the - Query/RawContractState RPC method + QueryAllContractStateResponse is the response type for the + Query/AllContractState RPC method default: description: An unexpected error response schema: @@ -32870,17 +32890,59 @@ paths: in: path required: true type: string - - name: query_data - in: path - required: true + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false type: string format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + format: boolean tags: - Query - '/wasm/v1/contract/{address}/smart/{query_data}': + '/wasm/v1/contract/{address}/raw/{query_data}': get: - summary: SmartContractState get smart query result from the contract - operationId: SmartContractState + summary: RawContractState gets single key from the raw store data of a contract + operationId: RawContractState responses: '200': description: A successful response. @@ -32890,10 +32952,10 @@ paths: data: type: string format: byte - title: Data contains the json data returned from the smart contract + title: Data contains the raw store data title: |- - QuerySmartContractStateResponse is the response type for the - Query/SmartContractState RPC method + QueryRawContractStateResponse is the response type for the + Query/RawContractState RPC method default: description: An unexpected error response schema: @@ -33090,58 +33152,29 @@ paths: required: true type: string - name: query_data - description: QueryData contains the query data passed to the contract in: path required: true type: string format: byte tags: - Query - '/wasm/v1/contract/{address}/state': + '/wasm/v1/contract/{address}/smart/{query_data}': get: - summary: AllContractState gets all raw store data for a single contract - operationId: AllContractState + summary: SmartContractState get smart query result from the contract + operationId: SmartContractState responses: '200': description: A successful response. schema: type: object properties: - models: - type: array - items: - type: object - properties: - key: - type: string - format: byte - title: hex-encode key to read it better (this is often ascii) - value: - type: string - format: byte - title: base64-encode raw value - title: Model is a struct that holds a KV pair - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - title: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise + data: + type: string + format: byte + title: Data contains the json data returned from the smart contract title: |- - QueryAllContractStateResponse is the response type for the - Query/AllContractState RPC method + QuerySmartContractStateResponse is the response type for the + Query/SmartContractState RPC method default: description: An unexpected error response schema: @@ -33337,53 +33370,12 @@ paths: in: path required: true type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false + - name: query_data + description: QueryData contains the query data passed to the contract + in: path + required: true type: string format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - format: boolean tags: - Query /lbm/consortium/v1/params: @@ -54860,10 +54852,6 @@ definitions: data_hash: type: string format: byte - source: - type: string - builder: - type: string instantiate_permission: type: object properties: @@ -55237,10 +55225,6 @@ definitions: data_hash: type: string format: byte - source: - type: string - builder: - type: string instantiate_permission: type: object properties: @@ -55283,10 +55267,6 @@ definitions: data_hash: type: string format: byte - source: - type: string - builder: - type: string instantiate_permission: type: object properties: diff --git a/docs/proto/proto-docs.md b/docs/proto/proto-docs.md deleted file mode 100644 index af033e0c97..0000000000 --- a/docs/proto/proto-docs.md +++ /dev/null @@ -1,1116 +0,0 @@ - -# Protobuf Documentation - - -## Table of Contents - -- [cosmwasm/wasm/v1/types.proto](#cosmwasm/wasm/v1/types.proto) - - [AbsoluteTxPosition](#cosmwasm.wasm.v1.AbsoluteTxPosition) - - [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) - - [AccessTypeParam](#cosmwasm.wasm.v1.AccessTypeParam) - - [CodeInfo](#cosmwasm.wasm.v1.CodeInfo) - - [ContractCodeHistoryEntry](#cosmwasm.wasm.v1.ContractCodeHistoryEntry) - - [ContractInfo](#cosmwasm.wasm.v1.ContractInfo) - - [Model](#cosmwasm.wasm.v1.Model) - - [Params](#cosmwasm.wasm.v1.Params) - - - [AccessType](#cosmwasm.wasm.v1.AccessType) - - [ContractCodeHistoryOperationType](#cosmwasm.wasm.v1.ContractCodeHistoryOperationType) - -- [cosmwasm/wasm/v1/tx.proto](#cosmwasm/wasm/v1/tx.proto) - - [MsgClearAdmin](#cosmwasm.wasm.v1.MsgClearAdmin) - - [MsgClearAdminResponse](#cosmwasm.wasm.v1.MsgClearAdminResponse) - - [MsgExecuteContract](#cosmwasm.wasm.v1.MsgExecuteContract) - - [MsgExecuteContractResponse](#cosmwasm.wasm.v1.MsgExecuteContractResponse) - - [MsgInstantiateContract](#cosmwasm.wasm.v1.MsgInstantiateContract) - - [MsgInstantiateContractResponse](#cosmwasm.wasm.v1.MsgInstantiateContractResponse) - - [MsgMigrateContract](#cosmwasm.wasm.v1.MsgMigrateContract) - - [MsgMigrateContractResponse](#cosmwasm.wasm.v1.MsgMigrateContractResponse) - - [MsgStoreCode](#cosmwasm.wasm.v1.MsgStoreCode) - - [MsgStoreCodeResponse](#cosmwasm.wasm.v1.MsgStoreCodeResponse) - - [MsgUpdateAdmin](#cosmwasm.wasm.v1.MsgUpdateAdmin) - - [MsgUpdateAdminResponse](#cosmwasm.wasm.v1.MsgUpdateAdminResponse) - - - [Msg](#cosmwasm.wasm.v1.Msg) - -- [cosmwasm/wasm/v1/genesis.proto](#cosmwasm/wasm/v1/genesis.proto) - - [Code](#cosmwasm.wasm.v1.Code) - - [Contract](#cosmwasm.wasm.v1.Contract) - - [GenesisState](#cosmwasm.wasm.v1.GenesisState) - - [GenesisState.GenMsgs](#cosmwasm.wasm.v1.GenesisState.GenMsgs) - - [Sequence](#cosmwasm.wasm.v1.Sequence) - -- [cosmwasm/wasm/v1/ibc.proto](#cosmwasm/wasm/v1/ibc.proto) - - [MsgIBCCloseChannel](#cosmwasm.wasm.v1.MsgIBCCloseChannel) - - [MsgIBCSend](#cosmwasm.wasm.v1.MsgIBCSend) - -- [cosmwasm/wasm/v1/proposal.proto](#cosmwasm/wasm/v1/proposal.proto) - - [ClearAdminProposal](#cosmwasm.wasm.v1.ClearAdminProposal) - - [InstantiateContractProposal](#cosmwasm.wasm.v1.InstantiateContractProposal) - - [MigrateContractProposal](#cosmwasm.wasm.v1.MigrateContractProposal) - - [PinCodesProposal](#cosmwasm.wasm.v1.PinCodesProposal) - - [StoreCodeProposal](#cosmwasm.wasm.v1.StoreCodeProposal) - - [UnpinCodesProposal](#cosmwasm.wasm.v1.UnpinCodesProposal) - - [UpdateAdminProposal](#cosmwasm.wasm.v1.UpdateAdminProposal) - -- [cosmwasm/wasm/v1/query.proto](#cosmwasm/wasm/v1/query.proto) - - [CodeInfoResponse](#cosmwasm.wasm.v1.CodeInfoResponse) - - [QueryAllContractStateRequest](#cosmwasm.wasm.v1.QueryAllContractStateRequest) - - [QueryAllContractStateResponse](#cosmwasm.wasm.v1.QueryAllContractStateResponse) - - [QueryCodeRequest](#cosmwasm.wasm.v1.QueryCodeRequest) - - [QueryCodeResponse](#cosmwasm.wasm.v1.QueryCodeResponse) - - [QueryCodesRequest](#cosmwasm.wasm.v1.QueryCodesRequest) - - [QueryCodesResponse](#cosmwasm.wasm.v1.QueryCodesResponse) - - [QueryContractHistoryRequest](#cosmwasm.wasm.v1.QueryContractHistoryRequest) - - [QueryContractHistoryResponse](#cosmwasm.wasm.v1.QueryContractHistoryResponse) - - [QueryContractInfoRequest](#cosmwasm.wasm.v1.QueryContractInfoRequest) - - [QueryContractInfoResponse](#cosmwasm.wasm.v1.QueryContractInfoResponse) - - [QueryContractsByCodeRequest](#cosmwasm.wasm.v1.QueryContractsByCodeRequest) - - [QueryContractsByCodeResponse](#cosmwasm.wasm.v1.QueryContractsByCodeResponse) - - [QueryRawContractStateRequest](#cosmwasm.wasm.v1.QueryRawContractStateRequest) - - [QueryRawContractStateResponse](#cosmwasm.wasm.v1.QueryRawContractStateResponse) - - [QuerySmartContractStateRequest](#cosmwasm.wasm.v1.QuerySmartContractStateRequest) - - [QuerySmartContractStateResponse](#cosmwasm.wasm.v1.QuerySmartContractStateResponse) - - - [Query](#cosmwasm.wasm.v1.Query) - -- [Scalar Value Types](#scalar-value-types) - - - - -

Top

- -## cosmwasm/wasm/v1/types.proto - - - - - -### AbsoluteTxPosition -AbsoluteTxPosition is a unique transaction position that allows for global -ordering of transactions. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `block_height` | [uint64](#uint64) | | BlockHeight is the block the contract was created at | -| `tx_index` | [uint64](#uint64) | | TxIndex is a monotonic counter within the block (actual transaction index, or gas consumed) | - - - - - - - - -### AccessConfig -AccessConfig access control type. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `permission` | [AccessType](#cosmwasm.wasm.v1.AccessType) | | | -| `address` | [string](#string) | | | - - - - - - - - -### AccessTypeParam -AccessTypeParam - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `value` | [AccessType](#cosmwasm.wasm.v1.AccessType) | | | - - - - - - - - -### CodeInfo -CodeInfo is data for the uploaded contract WASM code - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `code_hash` | [bytes](#bytes) | | CodeHash is the unique identifier created by wasmvm | -| `creator` | [string](#string) | | Creator address who initially stored the code | -| `instantiate_config` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiateConfig access control to apply on contract creation, optional | - - - - - - - - -### ContractCodeHistoryEntry -ContractCodeHistoryEntry metadata to a contract. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `operation` | [ContractCodeHistoryOperationType](#cosmwasm.wasm.v1.ContractCodeHistoryOperationType) | | | -| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | -| `updated` | [AbsoluteTxPosition](#cosmwasm.wasm.v1.AbsoluteTxPosition) | | Updated Tx position when the operation was executed. | -| `msg` | [bytes](#bytes) | | | - - - - - - - - -### ContractInfo -ContractInfo stores a WASM contract instance - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored Wasm code | -| `creator` | [string](#string) | | Creator address who initially instantiated the contract | -| `admin` | [string](#string) | | Admin is an optional address that can execute migrations | -| `label` | [string](#string) | | Label is optional metadata to be stored with a contract instance. | -| `created` | [AbsoluteTxPosition](#cosmwasm.wasm.v1.AbsoluteTxPosition) | | Created Tx position when the contract was instantiated. This data should kept internal and not be exposed via query results. Just use for sorting | -| `ibc_port_id` | [string](#string) | | | -| `extension` | [google.protobuf.Any](#google.protobuf.Any) | | Extension is an extension point to store custom metadata within the persistence model. | - - - - - - - - -### Model -Model is a struct that holds a KV pair - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `key` | [bytes](#bytes) | | hex-encode key to read it better (this is often ascii) | -| `value` | [bytes](#bytes) | | base64-encode raw value | - - - - - - - - -### Params -Params defines the set of wasm parameters. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `code_upload_access` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | | -| `instantiate_default_permission` | [AccessType](#cosmwasm.wasm.v1.AccessType) | | | -| `max_wasm_code_size` | [uint64](#uint64) | | | - - - - - - - - - - -### AccessType -AccessType permission types - -| Name | Number | Description | -| ---- | ------ | ----------- | -| ACCESS_TYPE_UNSPECIFIED | 0 | AccessTypeUnspecified placeholder for empty value | -| ACCESS_TYPE_NOBODY | 1 | AccessTypeNobody forbidden | -| ACCESS_TYPE_ONLY_ADDRESS | 2 | AccessTypeOnlyAddress restricted to an address | -| ACCESS_TYPE_EVERYBODY | 3 | AccessTypeEverybody unrestricted | - - - - - -### ContractCodeHistoryOperationType -ContractCodeHistoryOperationType actions that caused a code change - -| Name | Number | Description | -| ---- | ------ | ----------- | -| CONTRACT_CODE_HISTORY_OPERATION_TYPE_UNSPECIFIED | 0 | ContractCodeHistoryOperationTypeUnspecified placeholder for empty value | -| CONTRACT_CODE_HISTORY_OPERATION_TYPE_INIT | 1 | ContractCodeHistoryOperationTypeInit on chain contract instantiation | -| CONTRACT_CODE_HISTORY_OPERATION_TYPE_MIGRATE | 2 | ContractCodeHistoryOperationTypeMigrate code migration | -| CONTRACT_CODE_HISTORY_OPERATION_TYPE_GENESIS | 3 | ContractCodeHistoryOperationTypeGenesis based on genesis data | - - - - - - - - - - - -

Top

- -## cosmwasm/wasm/v1/tx.proto - - - - - -### MsgClearAdmin -MsgClearAdmin removes any admin stored for a smart contract - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `sender` | [string](#string) | | Sender is the that actor that signed the messages | -| `contract` | [string](#string) | | Contract is the address of the smart contract | - - - - - - - - -### MsgClearAdminResponse -MsgClearAdminResponse returns empty data - - - - - - - - -### MsgExecuteContract -MsgExecuteContract submits the given message data to a smart contract - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `sender` | [string](#string) | | Sender is the that actor that signed the messages | -| `contract` | [string](#string) | | Contract is the address of the smart contract | -| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract | -| `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on execution | - - - - - - - - -### MsgExecuteContractResponse -MsgExecuteContractResponse returns execution result data. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `data` | [bytes](#bytes) | | Data contains base64-encoded bytes to returned from the contract | - - - - - - - - -### MsgInstantiateContract -MsgInstantiateContract create a new smart contract instance for the given -code id. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `sender` | [string](#string) | | Sender is the that actor that signed the messages | -| `admin` | [string](#string) | | Admin is an optional address that can execute migrations | -| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | -| `label` | [string](#string) | | Label is optional metadata to be stored with a contract instance. | -| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on instantiation | -| `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation | - - - - - - - - -### MsgInstantiateContractResponse -MsgInstantiateContractResponse return instantiation result data - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `address` | [string](#string) | | Address is the bech32 address of the new contract instance. | -| `data` | [bytes](#bytes) | | Data contains base64-encoded bytes to returned from the contract | - - - - - - - - -### MsgMigrateContract -MsgMigrateContract runs a code upgrade/ downgrade for a smart contract - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `sender` | [string](#string) | | Sender is the that actor that signed the messages | -| `contract` | [string](#string) | | Contract is the address of the smart contract | -| `code_id` | [uint64](#uint64) | | CodeID references the new WASM code | -| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on migration | - - - - - - - - -### MsgMigrateContractResponse -MsgMigrateContractResponse returns contract migration result data. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `data` | [bytes](#bytes) | | Data contains same raw bytes returned as data from the wasm contract. (May be empty) | - - - - - - - - -### MsgStoreCode -MsgStoreCode submit Wasm code to the system - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `sender` | [string](#string) | | Sender is the that actor that signed the messages | -| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed | -| `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission access control to apply on contract creation, optional | - - - - - - - - -### MsgStoreCodeResponse -MsgStoreCodeResponse returns store result data. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | - - - - - - - - -### MsgUpdateAdmin -MsgUpdateAdmin sets a new admin for a smart contract - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `sender` | [string](#string) | | Sender is the that actor that signed the messages | -| `new_admin` | [string](#string) | | NewAdmin address to be set | -| `contract` | [string](#string) | | Contract is the address of the smart contract | - - - - - - - - -### MsgUpdateAdminResponse -MsgUpdateAdminResponse returns empty data - - - - - - - - - - - - - - -### Msg -Msg defines the wasm Msg service. - -| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | -| ----------- | ------------ | ------------- | ------------| ------- | -------- | -| `StoreCode` | [MsgStoreCode](#cosmwasm.wasm.v1.MsgStoreCode) | [MsgStoreCodeResponse](#cosmwasm.wasm.v1.MsgStoreCodeResponse) | StoreCode to submit Wasm code to the system | | -| `InstantiateContract` | [MsgInstantiateContract](#cosmwasm.wasm.v1.MsgInstantiateContract) | [MsgInstantiateContractResponse](#cosmwasm.wasm.v1.MsgInstantiateContractResponse) | Instantiate creates a new smart contract instance for the given code id. | | -| `ExecuteContract` | [MsgExecuteContract](#cosmwasm.wasm.v1.MsgExecuteContract) | [MsgExecuteContractResponse](#cosmwasm.wasm.v1.MsgExecuteContractResponse) | Execute submits the given message data to a smart contract | | -| `MigrateContract` | [MsgMigrateContract](#cosmwasm.wasm.v1.MsgMigrateContract) | [MsgMigrateContractResponse](#cosmwasm.wasm.v1.MsgMigrateContractResponse) | Migrate runs a code upgrade/ downgrade for a smart contract | | -| `UpdateAdmin` | [MsgUpdateAdmin](#cosmwasm.wasm.v1.MsgUpdateAdmin) | [MsgUpdateAdminResponse](#cosmwasm.wasm.v1.MsgUpdateAdminResponse) | UpdateAdmin sets a new admin for a smart contract | | -| `ClearAdmin` | [MsgClearAdmin](#cosmwasm.wasm.v1.MsgClearAdmin) | [MsgClearAdminResponse](#cosmwasm.wasm.v1.MsgClearAdminResponse) | ClearAdmin removes any admin stored for a smart contract | | - - - - - - -

Top

- -## cosmwasm/wasm/v1/genesis.proto - - - - - -### Code -Code struct encompasses CodeInfo and CodeBytes - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `code_id` | [uint64](#uint64) | | | -| `code_info` | [CodeInfo](#cosmwasm.wasm.v1.CodeInfo) | | | -| `code_bytes` | [bytes](#bytes) | | | -| `pinned` | [bool](#bool) | | Pinned to wasmvm cache | - - - - - - - - -### Contract -Contract struct encompasses ContractAddress, ContractInfo, and ContractState - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `contract_address` | [string](#string) | | | -| `contract_info` | [ContractInfo](#cosmwasm.wasm.v1.ContractInfo) | | | -| `contract_state` | [Model](#cosmwasm.wasm.v1.Model) | repeated | | - - - - - - - - -### GenesisState -GenesisState - genesis state of x/wasm - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `params` | [Params](#cosmwasm.wasm.v1.Params) | | | -| `codes` | [Code](#cosmwasm.wasm.v1.Code) | repeated | | -| `contracts` | [Contract](#cosmwasm.wasm.v1.Contract) | repeated | | -| `sequences` | [Sequence](#cosmwasm.wasm.v1.Sequence) | repeated | | -| `gen_msgs` | [GenesisState.GenMsgs](#cosmwasm.wasm.v1.GenesisState.GenMsgs) | repeated | | - - - - - - - - -### GenesisState.GenMsgs -GenMsgs define the messages that can be executed during genesis phase in -order. The intention is to have more human readable data that is auditable. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `store_code` | [MsgStoreCode](#cosmwasm.wasm.v1.MsgStoreCode) | | | -| `instantiate_contract` | [MsgInstantiateContract](#cosmwasm.wasm.v1.MsgInstantiateContract) | | | -| `execute_contract` | [MsgExecuteContract](#cosmwasm.wasm.v1.MsgExecuteContract) | | | - - - - - - - - -### Sequence -Sequence key and value of an id generation counter - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `id_key` | [bytes](#bytes) | | | -| `value` | [uint64](#uint64) | | | - - - - - - - - - - - - - - - - -

Top

- -## cosmwasm/wasm/v1/ibc.proto - - - - - -### MsgIBCCloseChannel -MsgIBCCloseChannel port and channel need to be owned by the contract - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `channel` | [string](#string) | | | - - - - - - - - -### MsgIBCSend -MsgIBCSend - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `channel` | [string](#string) | | the channel by which the packet will be sent | -| `timeout_height` | [uint64](#uint64) | | Timeout height relative to the current block height. The timeout is disabled when set to 0. | -| `timeout_timestamp` | [uint64](#uint64) | | Timeout timestamp (in nanoseconds) relative to the current block timestamp. The timeout is disabled when set to 0. | -| `data` | [bytes](#bytes) | | data is the payload to transfer | - - - - - - - - - - - - - - - - -

Top

- -## cosmwasm/wasm/v1/proposal.proto - - - - - -### ClearAdminProposal -ClearAdminProposal gov proposal content type to clear the admin of a -contract. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `title` | [string](#string) | | Title is a short summary | -| `description` | [string](#string) | | Description is a human readable text | -| `contract` | [string](#string) | | Contract is the address of the smart contract | - - - - - - - - -### InstantiateContractProposal -InstantiateContractProposal gov proposal content type to instantiate a -contract. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `title` | [string](#string) | | Title is a short summary | -| `description` | [string](#string) | | Description is a human readable text | -| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | -| `admin` | [string](#string) | | Admin is an optional address that can execute migrations | -| `code_id` | [uint64](#uint64) | | CodeID is the reference to the stored WASM code | -| `label` | [string](#string) | | Label is optional metadata to be stored with a constract instance. | -| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on instantiation | -| `funds` | [cosmos.base.v1beta1.Coin](#cosmos.base.v1beta1.Coin) | repeated | Funds coins that are transferred to the contract on instantiation | - - - - - - - - -### MigrateContractProposal -MigrateContractProposal gov proposal content type to migrate a contract. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `title` | [string](#string) | | Title is a short summary | -| `description` | [string](#string) | | Description is a human readable text | -| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | -| `contract` | [string](#string) | | Contract is the address of the smart contract | -| `code_id` | [uint64](#uint64) | | CodeID references the new WASM code | -| `msg` | [bytes](#bytes) | | Msg json encoded message to be passed to the contract on migration | - - - - - - - - -### PinCodesProposal -PinCodesProposal gov proposal content type to pin a set of code ids in the -wasmvm cache. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `title` | [string](#string) | | Title is a short summary | -| `description` | [string](#string) | | Description is a human readable text | -| `code_ids` | [uint64](#uint64) | repeated | CodeIDs references the new WASM codes | - - - - - - - - -### StoreCodeProposal -StoreCodeProposal gov proposal content type to submit WASM code to the system - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `title` | [string](#string) | | Title is a short summary | -| `description` | [string](#string) | | Description is a human readable text | -| `run_as` | [string](#string) | | RunAs is the address that is passed to the contract's environment as sender | -| `wasm_byte_code` | [bytes](#bytes) | | WASMByteCode can be raw or gzip compressed | -| `instantiate_permission` | [AccessConfig](#cosmwasm.wasm.v1.AccessConfig) | | InstantiatePermission to apply on contract creation, optional | - - - - - - - - -### UnpinCodesProposal -UnpinCodesProposal gov proposal content type to unpin a set of code ids in -the wasmvm cache. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `title` | [string](#string) | | Title is a short summary | -| `description` | [string](#string) | | Description is a human readable text | -| `code_ids` | [uint64](#uint64) | repeated | CodeIDs references the WASM codes | - - - - - - - - -### UpdateAdminProposal -UpdateAdminProposal gov proposal content type to set an admin for a contract. - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `title` | [string](#string) | | Title is a short summary | -| `description` | [string](#string) | | Description is a human readable text | -| `new_admin` | [string](#string) | | NewAdmin address to be set | -| `contract` | [string](#string) | | Contract is the address of the smart contract | - - - - - - - - - - - - - - - - -

Top

- -## cosmwasm/wasm/v1/query.proto - - - - - -### CodeInfoResponse -CodeInfoResponse contains code meta data from CodeInfo - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `code_id` | [uint64](#uint64) | | id for legacy support | -| `creator` | [string](#string) | | | -| `data_hash` | [bytes](#bytes) | | | - - - - - - - - -### QueryAllContractStateRequest -QueryAllContractStateRequest is the request type for the -Query/AllContractState RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `address` | [string](#string) | | address is the address of the contract | -| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an optional pagination for the request. | - - - - - - - - -### QueryAllContractStateResponse -QueryAllContractStateResponse is the response type for the -Query/AllContractState RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `models` | [Model](#cosmwasm.wasm.v1.Model) | repeated | | -| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines the pagination in the response. | - - - - - - - - -### QueryCodeRequest -QueryCodeRequest is the request type for the Query/Code RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `code_id` | [uint64](#uint64) | | grpc-gateway_out does not support Go style CodID | - - - - - - - - -### QueryCodeResponse -QueryCodeResponse is the response type for the Query/Code RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `code_info` | [CodeInfoResponse](#cosmwasm.wasm.v1.CodeInfoResponse) | | | -| `data` | [bytes](#bytes) | | | - - - - - - - - -### QueryCodesRequest -QueryCodesRequest is the request type for the Query/Codes RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an optional pagination for the request. | - - - - - - - - -### QueryCodesResponse -QueryCodesResponse is the response type for the Query/Codes RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `code_infos` | [CodeInfoResponse](#cosmwasm.wasm.v1.CodeInfoResponse) | repeated | | -| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines the pagination in the response. | - - - - - - - - -### QueryContractHistoryRequest -QueryContractHistoryRequest is the request type for the Query/ContractHistory -RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `address` | [string](#string) | | address is the address of the contract to query | -| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an optional pagination for the request. | - - - - - - - - -### QueryContractHistoryResponse -QueryContractHistoryResponse is the response type for the -Query/ContractHistory RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `entries` | [ContractCodeHistoryEntry](#cosmwasm.wasm.v1.ContractCodeHistoryEntry) | repeated | | -| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines the pagination in the response. | - - - - - - - - -### QueryContractInfoRequest -QueryContractInfoRequest is the request type for the Query/ContractInfo RPC -method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `address` | [string](#string) | | address is the address of the contract to query | - - - - - - - - -### QueryContractInfoResponse -QueryContractInfoResponse is the response type for the Query/ContractInfo RPC -method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `address` | [string](#string) | | address is the address of the contract | -| `contract_info` | [ContractInfo](#cosmwasm.wasm.v1.ContractInfo) | | | - - - - - - - - -### QueryContractsByCodeRequest -QueryContractsByCodeRequest is the request type for the Query/ContractsByCode -RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `code_id` | [uint64](#uint64) | | grpc-gateway_out does not support Go style CodID | -| `pagination` | [cosmos.base.query.v1beta1.PageRequest](#cosmos.base.query.v1beta1.PageRequest) | | pagination defines an optional pagination for the request. | - - - - - - - - -### QueryContractsByCodeResponse -QueryContractsByCodeResponse is the response type for the -Query/ContractsByCode RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `contracts` | [string](#string) | repeated | contracts are a set of contract addresses | -| `pagination` | [cosmos.base.query.v1beta1.PageResponse](#cosmos.base.query.v1beta1.PageResponse) | | pagination defines the pagination in the response. | - - - - - - - - -### QueryRawContractStateRequest -QueryRawContractStateRequest is the request type for the -Query/RawContractState RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `address` | [string](#string) | | address is the address of the contract | -| `query_data` | [bytes](#bytes) | | | - - - - - - - - -### QueryRawContractStateResponse -QueryRawContractStateResponse is the response type for the -Query/RawContractState RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `data` | [bytes](#bytes) | | Data contains the raw store data | - - - - - - - - -### QuerySmartContractStateRequest -QuerySmartContractStateRequest is the request type for the -Query/SmartContractState RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `address` | [string](#string) | | address is the address of the contract | -| `query_data` | [bytes](#bytes) | | QueryData contains the query data passed to the contract | - - - - - - - - -### QuerySmartContractStateResponse -QuerySmartContractStateResponse is the response type for the -Query/SmartContractState RPC method - - -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| `data` | [bytes](#bytes) | | Data contains the json data returned from the smart contract | - - - - - - - - - - - - - - -### Query -Query provides defines the gRPC querier service - -| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint | -| ----------- | ------------ | ------------- | ------------| ------- | -------- | -| `ContractInfo` | [QueryContractInfoRequest](#cosmwasm.wasm.v1.QueryContractInfoRequest) | [QueryContractInfoResponse](#cosmwasm.wasm.v1.QueryContractInfoResponse) | ContractInfo gets the contract meta data | GET|/cosmwasm/wasm/v1/contract/{address}| -| `ContractHistory` | [QueryContractHistoryRequest](#cosmwasm.wasm.v1.QueryContractHistoryRequest) | [QueryContractHistoryResponse](#cosmwasm.wasm.v1.QueryContractHistoryResponse) | ContractHistory gets the contract code history | GET|/cosmwasm/wasm/v1/contract/{address}/history| -| `ContractsByCode` | [QueryContractsByCodeRequest](#cosmwasm.wasm.v1.QueryContractsByCodeRequest) | [QueryContractsByCodeResponse](#cosmwasm.wasm.v1.QueryContractsByCodeResponse) | ContractsByCode lists all smart contracts for a code id | GET|/cosmwasm/wasm/v1/code/{code_id}/contracts| -| `AllContractState` | [QueryAllContractStateRequest](#cosmwasm.wasm.v1.QueryAllContractStateRequest) | [QueryAllContractStateResponse](#cosmwasm.wasm.v1.QueryAllContractStateResponse) | AllContractState gets all raw store data for a single contract | GET|/cosmwasm/wasm/v1/contract/{address}/state| -| `RawContractState` | [QueryRawContractStateRequest](#cosmwasm.wasm.v1.QueryRawContractStateRequest) | [QueryRawContractStateResponse](#cosmwasm.wasm.v1.QueryRawContractStateResponse) | RawContractState gets single key from the raw store data of a contract | GET|/wasm/v1/contract/{address}/raw/{query_data}| -| `SmartContractState` | [QuerySmartContractStateRequest](#cosmwasm.wasm.v1.QuerySmartContractStateRequest) | [QuerySmartContractStateResponse](#cosmwasm.wasm.v1.QuerySmartContractStateResponse) | SmartContractState get smart query result from the contract | GET|/wasm/v1/contract/{address}/smart/{query_data}| -| `Code` | [QueryCodeRequest](#cosmwasm.wasm.v1.QueryCodeRequest) | [QueryCodeResponse](#cosmwasm.wasm.v1.QueryCodeResponse) | Code gets the binary code and metadata for a singe wasm code | GET|/cosmwasm/wasm/v1/code/{code_id}| -| `Codes` | [QueryCodesRequest](#cosmwasm.wasm.v1.QueryCodesRequest) | [QueryCodesResponse](#cosmwasm.wasm.v1.QueryCodesResponse) | Codes gets the metadata for all stored wasm codes | GET|/cosmwasm/wasm/v1/code| - - - - - -## Scalar Value Types - -| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | -| ----------- | ----- | --- | ---- | ------ | -- | -- | --- | ---- | -| double | | double | double | float | float64 | double | float | Float | -| float | | float | float | float | float32 | float | float | Float | -| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | -| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | -| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | -| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | -| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | -| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | -| bool | | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | -| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | -| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) | - diff --git a/proto/lbm/wasm/v1/proposal.proto b/proto/lbm/wasm/v1/proposal.proto index e1001158d1..fd0271559e 100644 --- a/proto/lbm/wasm/v1/proposal.proto +++ b/proto/lbm/wasm/v1/proposal.proto @@ -20,7 +20,6 @@ message StoreCodeProposal { string run_as = 3; // WASMByteCode can be raw or gzip compressed bytes wasm_byte_code = 4 [(gogoproto.customname) = "WASMByteCode"]; - // Source is a valid absolute HTTPS URI to the contract's source code, optional // Used in v1beta1 reserved 5, 6; // InstantiatePermission to apply on contract creation, optional From 230860655603e8633fb4532bf43bc0f290eb3180 Mon Sep 17 00:00:00 2001 From: loloicci Date: Thu, 3 Mar 2022 15:14:21 +0900 Subject: [PATCH 87/90] build: change depended wasmvm version to 0.16.3-0.9.0 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 25d3788d35..e0cc5126ab 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( github.com/line/iavl/v2 v2.0.0-init.1.0.20220215225951-cb11c91d8857 github.com/line/ostracon v1.0.3 github.com/line/tm-db/v2 v2.0.0-init.1.0.20220121012851-61d2bc1d9486 - github.com/line/wasmvm v0.16.3-testing + github.com/line/wasmvm v0.16.3-0.9.0 github.com/magiconair/properties v1.8.5 github.com/mailru/easyjson v0.7.7 github.com/mattn/go-isatty v0.0.14 diff --git a/go.sum b/go.sum index 839a6fee8a..708737863a 100644 --- a/go.sum +++ b/go.sum @@ -478,8 +478,8 @@ github.com/line/tm-db/v2 v2.0.0-init.1.0.20210413083915-5bb60e117524/go.mod h1:w github.com/line/tm-db/v2 v2.0.0-init.1.0.20210824011847-fcfa67dd3c70/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= github.com/line/tm-db/v2 v2.0.0-init.1.0.20220121012851-61d2bc1d9486 h1:uvXQdcWaUyNsgkXBz375FpQ285WEJaLXhQ5HtoNK/GU= github.com/line/tm-db/v2 v2.0.0-init.1.0.20220121012851-61d2bc1d9486/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= -github.com/line/wasmvm v0.16.3-testing h1:/PZKErQ9Ov9LhlQeJk9cKBocXiWRSF1Sd8lx/e2K0Fw= -github.com/line/wasmvm v0.16.3-testing/go.mod h1:cgsILoCDigfQ2XplFI4rOo2ImOLEZH/OM8sulxGoKUA= +github.com/line/wasmvm v0.16.3-0.9.0 h1:snRk3T3mJV+7HTjCIhHKmeYUEN9uRbyRVhmuhele/jM= +github.com/line/wasmvm v0.16.3-0.9.0/go.mod h1:cgsILoCDigfQ2XplFI4rOo2ImOLEZH/OM8sulxGoKUA= github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= From 994e7b0ec6b2a7076430da65fe15e667a6061a7c Mon Sep 17 00:00:00 2001 From: loloicci Date: Thu, 3 Mar 2022 16:12:52 +0900 Subject: [PATCH 88/90] fix: remove source and builder option from wasm tx store-and-instantiate command's help --- x/wasm/client/cli/tx.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x/wasm/client/cli/tx.go b/x/wasm/client/cli/tx.go index 5af45b3bfd..d3534d920e 100644 --- a/x/wasm/client/cli/tx.go +++ b/x/wasm/client/cli/tx.go @@ -205,7 +205,7 @@ func parseInstantiateArgs(rawCodeID, initMsg string, sender sdk.AccAddress, flag // StoreCodeAndInstantiatecontractcmd will upload code and instantiate a contract using it func StoreCodeAndInstantiateContractCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "store-instantiate [wasm file] [json_encoded_init_args] --source [source] --builder [builder] --label [text] --admin [address,optional] --amount [coins,optional]", + Use: "store-instantiate [wasm file] [json_encoded_init_args] --label [text] --admin [address,optional] --amount [coins,optional]", Short: "Upload a wasm binary and instantiate a wasm contract from the code", Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { From 9d3c659a861854a5d73a70f4014c163f22d5420b Mon Sep 17 00:00:00 2001 From: loloicci Date: Thu, 3 Mar 2022 18:02:04 +0900 Subject: [PATCH 89/90] docs: update changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f54f9aaca..43124736e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased](https://github.com/line/lbm-sdk/compare/v0.44.0-rc0...HEAD) ### Features +* (x/wasm) [\#444](https://github.com/line/lbm-sdk/pull/444) Merge wasmd 0.19.0 * (cosmos-sdk) [\#437](https://github.com/line/lbm-sdk/pull/437) dump up to cosmos-sdk v0.42.11 * [changelog of cosmos-sdk v0.42.11](https://github.com/cosmos/cosmos-sdk/blob/v0.42.11/CHANGELOG.md) * (feat) [\#434](https://github.com/line/lbm-sdk/pull/434) Revert signature mechanism using `sig_block_height` @@ -53,4 +54,4 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Build, CI * (makefile, ci) [\#438](https://github.com/line/lbm-sdk/pull/438) fix `make proto-format` and `make proto-check-breaking` error -### Document Updates \ No newline at end of file +### Document Updates From 1ff37cf74c71b9dd21c98e2910290982838999d3 Mon Sep 17 00:00:00 2001 From: loloicci Date: Thu, 3 Mar 2022 18:11:47 +0900 Subject: [PATCH 90/90] docs: add removed custom encoder's info to changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43124736e2..67901b7101 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Features * (x/wasm) [\#444](https://github.com/line/lbm-sdk/pull/444) Merge wasmd 0.19.0 + * remove custom encoder from x/wasm/keeper.NewKeeper's arg. After the Token/collection module is added, it will be ported again. * (cosmos-sdk) [\#437](https://github.com/line/lbm-sdk/pull/437) dump up to cosmos-sdk v0.42.11 * [changelog of cosmos-sdk v0.42.11](https://github.com/cosmos/cosmos-sdk/blob/v0.42.11/CHANGELOG.md) * (feat) [\#434](https://github.com/line/lbm-sdk/pull/434) Revert signature mechanism using `sig_block_height`

T$6$sDc0NKSqX~ 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%0Ar<*fY@BxY@2#@ z%lJ{s7l4s7%+zJ-6-t34>=GT2{#Xh!a>&9i_oOQwY7fF&Z zb94Nxdp8sVyb{Hy`63axs^?dPMG4Rd@u&cNP77z&%3IJiB47m)&l$)x$DV)=NFWjg z0Y=^{c!fhjy2)}CZ7{l@!BhmEOBe!)J`Eu0R&pwd-as*l)e?-8NOf3S+~u%gep_6= z4o$3a+-Os{#&IJwUV{Hid|JhEV~!j**mO=log0Mb7qzJq6g)Sa&Nk1aRXU9TSh!iI zSKB%+2n#4=u-%;EC*&44Zc~BDELDM$2~57yt_0l%sIuG#CY#s_oHvZ0D(@d;M2JsC$3SbMqh={)2 zIk2-5;qNFEk_ZH{!kN6g9Jm4aL$MZ|ZCK5i$h>egvM@{OFc=&qy0IqO-04Vb#ML@u zNK$x(p|^@OMrGxVPm{B9wieuTn?1oi_q<_i;S|WJnpe%S$jXN0Ko7c4Z81ZF)(qI>dBL%&}dPhAI(jqG1 zR78YT4ZnKELG7WoX>%HGxQZ}^i~7jGQ~VEt(iw@B(29RVfyr9@p`vZWR+}|Z1^LD2 z%$13kw}r3}j=oRB?^0MP-WnDJaCOWtzBepPsRX_fuz>PdP~j!+{3ki3(M3DTg9K_A zK|9eyJpy>qrcWV{U6 zRQ6#BLfVH#=Qz(m_C0!uu|#gf)=T!&LwI$Z(3l1^S%^layZhuSk(A4m?L{Jzt(k2R z8>wZ!WL8p*J|Y37)o8Hzt^+~vjx+d*w}`OXF#Vd`_YO$T4`@`4``!%o&ySx;IHDIn z$%kfGou_I3$d3>m!;t~RGCZ4Lb3KdI%#E9*)W`wxL zfgget+#b9(sm$e38M=HcU}QN8f#Ni-!b4fZZQT(WLbHzPWRG#)km9ejtHM+fy^N`9 zhbHQRfm1vea3YI`=DUs2kt*U({|Jc5m)@Omq9)j#gJ0u&yo9uH!-IO?FVOxQ3AZtM z0_KZQlg?ZsNmbyLppf(m+U9oc2Q5%|*DL(p0R_C5dHwzn$$=4e9fU)QqKXAf9oLK@ z2oj^%RwJ>9Ap->A$MgA*Kll?dVEK>BvHUbL1y%oXfReb7+o=}n#|KT$;_6PSy??WfiFeY{(I&2g*=O_~v|!ph+l1}i-k zzA}K7;ns{#dm2_f3D)A!J>nXqu`zV>8ca{}o-La$|vY!)mR& zy`4^4F4sGkL|-)YT3{N>Fq##9%wwoS;|8myut8MT)+8DFin zWfSNtD=pF(JuQ-OE|VlBc%d;Mi?xGslVpw4LJuJzgZM}`Xt>I0@zmVlW`mT*TW4M- z5YjpaOdu`ZTEKi+i^b9MG6JHFwg+4aDkr48JI`7cwEY=8QM5q`VMc@#iYl^=-zN-h zPk?O)i1^#Ut5I&_3RekATAMa!T6Pa=&>xci9I;7Jm60=jsq-EWM!5`&8{YPGs) zsHqngrXvs9Q$@>AOJ~->sFGMtvl=-OAzq!EY?A46-NpiowL^5&AMw6$4L#M;l^x7S zX|yDV3_ge69OPsx)1J(WOw?6XHla#}IK&!iVP33rD^UWkA}~)K|(K6%CEGbjUj@3akZNeyqIkQkOPdJ-8v%C}-SG|dWrPdEc#OFcU3;Lv$?Dd{{>&0eWr{DE6L4q?Jrqih0XEOIDW zot>N^t~_%q@UoT=$Y>8(XY|{4_8XK-x=6r0%kqOP>pxPN&L$8CUcgLeIgVpeIa7lQ zys;Gv2~riF>N%n43&5HuzM zZb-AOg}>WzQUm`4#89wFhQSAp5E#>uk%h2(QJiaSVn0xWrC-rta~4s9sg~6wjh>9H z6kttMbCo;s6d2!DpbqQTvD=nfYg_`4RmdMJB-T6@Tj7FXQOgYUI$UW2+F5Jzs@hh0-txG$w(~ zC@y)l((O_Yh^PkH5cBjqf6<2}4oc+(7FG z#;i_;9ToK@FY+=MD$~Gss){nZxsd@5Pp?T60#;-=|2B@aOFe_c7bc`ZU@9=Ey>kf>pv*5pBqCEm*gX0{bR%#HH zDNNG_8X4bitVFBd5<2IRGUT9IvpMi4Xu&pQrE*4tX-rD%i2h{YYlRbB$K2Wpe| zMyc%LLVnmL$PV!~2*sZkPMC^jUmL69|#8ZdOAy3sBOi`}FVNf9)~9p`86_o9{m4sL-XXvaL*>gjycME_0aLtUi= zttc{N8CNVD7?{9$=?JhP`P1{z!Y5%nMS_ANI~HD}PBahrv}mSMN+#!Fw=U3|R#{-s z?Jkks5LBltVf+BVC_Zj7Bj1n(+!UgVfJCP&)5)6eO&F?^VlI<1Wl++zLFIjsh$bjw12EaTLDfnK(R( zPTiaDI0{or90lSpj$%1Ev%oEv8%Lq5bQY!&KTA_+gYgX(!fO}@?+N3OB9*k<7{@=8 z2TNB>GkGvuYP$gd7!4s+wP+5|)(Qh(HQ*Y-z)}C-^OGUWw^$~wFRBb8A8ZhPV9I=; zGTXQ`-{Tr`D+|fTL09BJO`je=CBUj@wJq{F5kL)+Uoz~KziuZ-}+<3`vT zB22UKmAK%D%2CGmUtJwz0rTH8zK2=jI)?FO%rclqYeyNh83#s#q80<=YN>8{FJbJO zC+W~GmICUxFp7XpMhw`V27y1*<6k%cjkVMj{-Mt1mFW?!VSGGGJ`B8J2%6yD=RWeC zC#GHRh__tM%mO9aBGjrR7;UY--}L6zIwJn%)=z!sq|tk9`X2VSvxpym6tQvZLeD$L zgR;^rtTxzYB2w?a_R44TpKe_*O5 z&M^+MYP_JzlU$4p?Ho7;XmZ-smpu}`FeF1DH~_<+1difthrK?IQ;3nZHC9{Y*fSPD zOmMY}>fHWuB}0F8Cy$F!!c1IiT&g~K^(E~ZkpJ0HF+$Rds&}c!rjtgfLagC672gD7 zmDGxmpo-Q00qT9BVq)8T26b2CrQ^CXKual}=xovlT`V=!##&FtwvA=iAO0L-I5Xb& z3s|VkUlM&eZ8S33l_wW428APGz*#xsW&50FNo8j)4{m2(A+7{BMSkazBeP#4s@ysM zH<@S0-?q2&bANcthu-nA%&3q@ZR4}o`J+F6?BNf5;B$|>`{qus_&&j#o9-3yzn}Q% zxBmT}Fa6d}3Al(yR`v;%B>nC34 z&DP+#c)fWyQrP!sI7*1WwfLhzq$$emy#i(wV%pgnw~4vm?#F#waV6v%H{c446bRsa z0gg$Of{rHolU2m9jIRhFCb_P*y8fxAuA5z5QRW^y-MK`yXb!iV)F+!mOykrj+yboi zTjMjMKx#a}ebS=~U(fovn{jNk8)u9{*Wn&tdhiSDef(b0Nj7`GB;yN<-9&B@kw zk6=C#AFixt$(*9aO$1)BxXu;$?D4&=hGU(JS-J4v9{L`W$U_?>Gi3e%PveD6=D37DLE@lu@ihv2KZ*}bp z3yXA}Bpr)6uBtTkWGiJ9wbMH4R?4JcQvyD`S}=7`2wCY69B_Cunc?W`WT+M@OxAwA z)w#mzB4Cyl7Obi%j$Xh^^~VaHblHuP}e8mqAPCavDS&TMggXaP?_3@!PA zJl232DH5^9A%VTp0s)iNx3vb8blK1PRx7O(4*O$G(wY{HG)q?D#BQ8=VvTXZa)(I1 z1Q)Ch51%(%IAR1V?o|+MbJLf#`<$L0#uM=}eInOeZCPq5f+l zU234)inhXVEGXcIQQ8!>q14qhwxT`GT$L1nxk@wnMU1}m>oKDacY!Wq z>e6ii=CY|!v?I>$ESy2y$6;995#PzHYJxJ1ZCUf)!cyWA>$hk}+Bdb^>40X=gDI`< z@I-xxYOc|kt>OqR zP5g45I zSaoe()=I&GoR*S{3N7Z0llY!MSmAz%r?5mQp1YQY!=n<%9883^kc+PhDMb}*I_fm4IqVEY#5KfoESB7b_{W%ISl(rON$r1R=JM1T zS%1>YQ^PQWoBt2VDI3_+dfGa@T|onnD(=;O2%c{V)oe`(Q z%h`yyEJCzb2bZ3LuzcjmJ2%{FGo>x*ZTu5T)is7=qoXwX=Za=~P#Y^WjIy1#&i>z- zoC(L`O{f(cSzW_%`HOqy5t^C7=bLY|il^SnyXNTjTlX?T)$|VP@h?>oBPZtod3uGQ zRg9Lx$_db)fxU}Yt@Y1{!&sV+e3F|1I+c$p&nh|K?Jc;1p;-bt1jT@z@@i$_M2BsX z{pzC}bC8MP{A1FA)|hLYp(Hiq43aSzu26l~fYpv9xm2NMex1nI_Aw z$wOP9I8GD_q;w9K{dkrnSDzxO@l&{5@jgqkZYDmMR&gSJRT>D%d(!pXj#V1Rrdvv@ zZ4DUZL2D?S8Z*^ao~WbUaG?{~)=n`r3Tm@I-2Na5Un_jn5rW{fT!$a1DG%{hbfnEey5SyI-|ruNNNIohrG68`DI)r?a{W@WEp@>eL4#1Lo5KWupfV9FHLXp z=?|+7c-*Onbejy;1*?KNsgBU^jPBRPV^4hy0Z0~jsRWL)5b+uN$=y9IO&XYe@i*1p z*!k-TI5Z9Jt%f084ad_*WD&oNAr0eS-u5uwkGP7_38oBV#nq@oRHyD)JO>BQWLzx3O`Dy&q(I9Rz)V_@~{TaO)9?+0Jj z(7KlZD`l<1>dChaZ;hWUtOaa;a4)ZaFn#S1@6Tzf#2<;(p-uE_FV)DU=;k*A-X2Zr@>KoHDwt8A^Xe})M5FF4^ezjAIyzteCkj7&zBn4 z!&}?c(9e9c%+WdDKKoMJ`6G(wYen)otxZd&F}Vr-ydpIj9cA{wszZ5VxmlIYErf6o z3T{37sNC9aHcwc#5q?;9avG>(+1PhbmM1Xj$b*xcsT)o%VHIqy=mzqM?RM^3@+ZSr7_ewh&j}yvK%PaXRV~A*Z_sI6*VZ5qfB*9phZUI znyDQ~nm4Z*GRILIWmrcIS6L3^3S0Y=eaK5!^dOXSqoH1I&!BOteqB?#Y=^Wg0w#)W z(x$C8G8_i4(Ws@tUT~pGP!zYM)R3Iup3zJ*2_X#9(~so(&cpmgbG^{Y6cf=|izhq(9Kd;Sp$W z20D;S{tlwTsD4i60;t>z9=_>S-F5jYOY1q>JZIcCl^0q-s{u|qN*ylJn zTg<>xC6`j+hPeuYZd~GwfzHY3RoW@ybd89U&Ar685E;#cJ`?-{dBpq1(R8?tguwU; zNMy_jfuKIC2VN&+ELkYXcY0S=vNN6tsIUtyRiJX&3Ps)ZP*(6Na1DZuc(PZkak8qW z-%TWBwy=ax<1w`|)XwO4pBASxTC&0J_iOGYbxcpL;+?d!kc&!ZWmc@K39}QP&PQ3- zS@rqGR*qr3dT26u6uHnz@TiOGuZG>gtO#Hhxf%ta{(8;^I%XKr3O3G*qG%1Z7Fu?Z z@k5o<2A~!hT>s9LIKr9=i-o$Y8M6>b!Bk>Ep-qrM77m$LmSB`6RMKhH6UpAKV-8^M z8N1d7&~9R&AjL;p;sX)zriGex9(nj13$KlGEuOL0oK`LW(bL|>fHF`6)e1VqcS^0) z_&ke;^d*ezrHVM@O-cyelA#f?+LEEnW7aw$-{zGaV|j1@Kmv6uM0kyg7~TG&>Cdrx zeOjAGUmW?F(3%&dI4@^w?i9iCH5Emj%@qi=NAMl>TfAVE2(%e<5f?SLK`#h`7VFHe zgHvv3PPySYr`$|u=C)R@8Nbraf<3a%fZs<06{U{)&N~+*aAf*Dzk166+{@6gnXnGo zZf?gC63bdq9VARoss%CVjWiCX>D;SCYj2XiSoVNu=IInyl8P+a~Ffgacdi!CBBQCaTB-lr3cA zzi|%XaH?MuGd2o-6v@Dm80QfFf;ArNWE7)4nkb?QtKtzjY8a2|CETxifR774oT_*glyg`&SKIe7!$uwNmLJev41SnSF#sdyPg&QVONC3-_JYo z4!bhKF5Jdya0`TrU;^fICq+K3wS~_hN=q0Srkn3znEEIBtfQ#=Fbyq`&J`4jvSeKYir$2@K_9LXxn<1ce=0l`kU~b=!|~z##UU>Ju;qomEsYDi2YX5jw|8}K>)Ko@FDwuDEG!RoFYMjey}oqA_Q9dy z@`9nVr+-E7bpAfXZ-#wA03rGcI#T~F6=*KlutX>eqCc&KZj zys0!aJh;BAr)Q{CE_d}0jtmS_-#2M{p66fjEbzRKXA{qLS6;aK%JtV=ZqL;hx?mD$ z^o!n9(lql_T7cA3Di4=SJ4Q+a-6a}$wX1hy-(dGPwV^!R)xVvlZ6E9%817cprJ?Oz zL&Lk*rymE0dP+k(OGD+}!GZ2UI@LYQ8$A--c~lGSRG~wqoxMuBrPRB5%P??RNAYV1 zdWZGAdT6)zAZ=5>4)VY zJ*B?V<}UDe{ZMIF*HF*SuD)Kda&V|z8eU&Xm9&bodc&gi^&+095WZlr+&@^R#La^{ zcXgHfdpCB2NJA7^8s5FVw0>l$k0M7(JvH@{U|a9N=I)X5@L>POu7Pco^Hs{r@cdhz zbvzI96iz(AQ{(UP&qY!tS{=>*+Y+FhNJhG!akjkj>S z88^q<;Re~61Wx5x)prp1-iaxpttDLvwd#t%|LuKUyQALz?R`eEp}T_v(NJj^j41U) zT?3IdI~o~al0n%@J$<_u4uPWG3zseF-ne38+sch?ZQUD7UF|EDE#0(fBfb9y&H$RhITLP>Vy6nU(%!-*z8!+K(6RrN{j!AzKEnSRhV>}`lxKZ zaI&LAU%;!5jw_6d0O)R}m!{Qv7@fs;bU?K(a4ba>P=hg{94jO4HX@$FacoILrSeGM zaJi$Sg7)r9M+daj<^lOgaqie`RAmhqLsriln??gk!K(*$j{SbjRnD1v-ch==+Rdy< z`wVgqm#q1ldXEA&2i1h{y%2DLgBaX|WXIf%iG9!)8=B6pzAl(>85kR58VA8&M-|s? z8I1eaRw|g-m;_!4mRyJ+GBJ%c_A)4UlB&|+mpHOxvr(TR(>NYH4j5^w1m{gOU{H?I z*jJB~hISu4dTo_rlW1&njv4Al$wqz~%#Mx<)W@bwd*aYA>GgzWB-7_r5&$^iXt+cAKHNC{HY(#<`+TGF7Y0smKgKIs47cF;Uj>xipv-r*C7x5E&(?5wy5>vV% ziBQ=Mv=^$<(J?ZxYp84coVgn!h%mHw!|I`-4UtI-s8OyAk^EQi(^LOchyJNd{p;^7 zmm#jvrruH?MQ>xuD1o|bpr;SfszykWU}AYD70?NMr2O9Rt9AA6W%_5=OV_JGQ{&= z<@!4uC4!0S*}(S$#7lih@$!NiA*PbnfVHut3{R0>^DRv;8bP~ECDW@kDSg{c#}VZD zTN9G%fyU`(GSfH(ND9CdxWW5Qk_=e&r8MJ-zC4) zxx08uZMvVQM9)+fN??eLog!VTL-VN*ZbWxXw4rfBh^-PS{b^3ky`8cou8tv&lX0-v z6(RcC*F}-ZWD;nSnIN=&NZileE zxn$yEUuj_T@Rs%40Y&c(r5-0Y9;9#c$tM_{f#`cT(k?p3a0xM5_(MaPFT-1+L6B-w z-{3Brv=!7G=wkkZ2cZDi|>a)^`g^^g(->7=a-J{D&Av$cb?!>nEw|PjBn7E zTK(cEGC_HF8PtK^J5GF+1sz`=C+)i=FIq_$Cq|qnxCx!~>*RLBlD)y=y4{ok?A=?9vdnJEs74L@1-sfF3l#p;8yb zXk(u^Q%|WQ^1RodRAfpVT?V<6c$tds;i-O1CWAacoOphk=7nUC$CLE`&Qmf-Ej%wG zyl|vEv=D`}t8Za9mY2bWL#55Kw(K^NvKh)SvT;H8VE_C@rS9(Ki&w7f*|@UQ-M)Cq zLMO${Z(Fcv$$~aZ-D8#v2d9}QJ2?GsIx?Gj((q&B!rvw=Gg%t{#JKpwQU} zi~rHM_@9o8|HZiYBje(;!PxfZ3D>rdL!HL-XWF><0l^f5^QWM6A8)Lo9OaRXrW#M6 z3~A3pTC$=B5(=MI6V4DmZ(LYJHqGBcyf7mTpGCMfUSSy+)A$AB;uRJFPvhqkmcb+q zFCko8eoRe6uCA%;_o=J4@And}ZR@89tFP-4rW)zWg3}#j$^#vlGibbcorxHc>;axq3}IbsU)CX6jPjC9#U4ZKh4BKrpfG8(pKz zy}wba$uADA@ezedIo-v)r=U!=p1sXZ>zN=0xW$;VTNrRFF?W%+l`@2f;+3^wNdjqj zCGTb^XSHN-7~P?(2gShjoeFHzw3=fYo2xH7=fW#HqHASfc8H>^NXQb6&|3zgtFUAv zTy=Cvjl%S=Z`i9r78E$AYDmo)DVM5ACG?@e$hu1-7DSf~GT4}^QH`UEN*L}5x(ZBR zEjx`t38*PTzfmK0mHPUkLhfK`$Yj{@)9PFZkf%&Bypz%aS*hY%IC5Bz*#RngfusmIwL~5@GH)S0!^&m|goL#iFB8z8y z1_v-#^f4uC(i|pDGo@LYEhGJ117qX!kt-vy7hOF#Xy|HGQz*2hYdcnA22_eS|93G9 zHft6L0j_=3g0xGAsY9eb4f~Kkg%e71aaVcEn!%xd@c5XEu9VfBl!c9lVG{|979(9T z>6qf+NvSgI5u(Vlqc^sueKV3W)ApV-F5HoXk20+N%<-Y!;Kh~5N=ye^^aQIld$GZw zsI=(n5YH1?5}8WUfle$jYdR}gnvM80y--5wuSpC`HrkB!1C%GhFs0l>2wHHK-4RQy zC}_+mCXllx02N1AI-)k4*^9u@N6EjuCV#ni^FSAC7Z|r}Sc(x|=*5{hc_Z6v-~ksc_{Ez_v-i%Bn~J%uCdfL$QzZy<@JcEML- zUK$?h>U-r4q!qipgQwVKnupa9jDyue?;~FQxrp_{q2BIP&+s1MyKo`_cC>wDqlkHm zGTve0CGK5Iu1&IJ3R9EV%xTVe;(*?{`+7iLhLm^1&uho@a`LC}ul>G`?^h+zFEJP{ z?|Q)%TMols)>p0MVm{K>%Lj+o2((b;o}{DK3~y>rUSRHvUTDuNd6*s*yfcC*z);WUQSeXfw$3mY(hmL+9|+ z`f|)u^E8DGWe&1%EF%I?9$UXyghdVXEJ~h>EBItMpCUbYN4Zl-{}Gm)eTa2ztq$P`TZ-X3Y?wur#OEsLpJWYaU1Bhe8@1}Y*&nv*&nqb}jmKl9Xl`&shL zo#FaCg{S7fct}b8OlwIhPew)fhr!$g3P)7P(?edd%Q3i1_%^yXmh&o>$V zlk(hfI$~kT)cawa9f}b|0r5%uW6Wtm8l}mYzGL><2pCtN z%mDgVlYVmZ$>p?TOX-FvzUqRtYsYsOl`v_;dnrqF^=0aJ|6pQlFP>fW-atJv+epPs z!*AwYYHS+b!}~mbolcQv9&a+aaXZ=i0l+&@@_J5ZGRP zNC_V~vnJ()VSMQzo@h_3SS)Dfjq{w9;&*tLm1#s`)$`dXkfEIMrkYo1AaO1&>rZ$W zy48lGn($|N?-&;rI;ZJ>#=EQzY4{hsFB}(^h?mCyl6Q&Wwc(bU@bRb}3&w?oMrryJ zh_4M7#-&%dHol3lSbLhkaa{b=abewXru-G7g7N$3w`s3h;B4AetD9DCyX3DpG)$aq z^lAO61u_jw?NWUy2QnU9-rc_u;sux3v`Kas0CIm)&Ox3^|93pe>a9+BW9fzp%QQP* zSG0Wo#$MThl9nv+o+8iLHFe4Q7ZIMh(1{}B%T7hRiPkU2Hf8lNo1vKy&7%10ME!~> zeHZPMIP)Ms;ciRoD^5H8j5FuVJ?rdw^V=3JUb1xA@)hkXSH+zdT)2A8MHjEV&qzVfQ8uetU$uf6_t8@e{)yt}1$>$blB?K_6XrdyXJypEKXZqsI$a$u0O<>8T? zyKdP18`Wygp0{A(uU5i>h1JqtN=YvzPqoJR>wmTUXD^f&{qz3w{2vH+}hC<_! zBTZAL7N;F|{0S$XK+=w1I!kBiPbMBENuRQO3 zm+^nzUu(HTPrCBTqyuB%Q-uz2aS3Xnlj6BUn*VtaIO6%5oa%jL7;CU&Oz&qjyZ%*i zV{Gr2F8d$Z|7v%W<~NS(b+x}P!T4TJ0O0>1Fr0Vf$cx1P^N;-hga7pY$oVg_|405` z@Bhq2Mep&pqIVa+*Ylgn?{Rqa>zDIe#&0RVCHxliBdx^j)D*Fv_YM4Nzjf)GECa|B zpIYHeF7qN*<#?Bw<9?o!b<(FP!5gaK$BCCoDvf{XLWooC7A?SvzNkG_>72%ZVGi34 z0@Zd_5W2lzP^V;)uhTJ^`MddLk{{Mnuf%T?Kh`76Z_{lj81J_kZ9sb~rGA_0qyD8{ z@af(xt5J(ND3uSkJCo_Zk$5&~)A08R&mz2;pA0=}%NBmU{M5D-{#$vM2?-0m`9dgN zKfl^E1B3_prTy8?`wo6GE7pE56aJNbOg8lor#jh|mCpa>_4GyNHr1tnf=dg(uEZX1 z3y9{H@`Ae&QczYm6i}aZ^IV5BeXj<=q@PSosLee)OWh>KCe+2qvu2jq;Yr^{e&uT= zzf5p*Cl)~Fq-S%Z@|M97d~7l2ocl`YWYHWH-VI&D8zOd9fK<{IZm^G(bvI?pT<~_D zGJ9|5DH!ZX>TJuo)w4A?TFQiMW>H(pA3Hw7P%_A+pmv5q1DJoQa?S$hSM|%6v2eqcJcE}G&^GjxtoA}+#FXG>g zN%@Nj3+L0Ybad4hy{Tbd!@MYZQ}pKO&2t*&%$wWrI+d5s)luHxFlhrACF=eqNZw0O~yMN1bgTeN)9ibd^UbH0Y5UTZ%i5MLTDExEl4VPmEnBvH*@|WD%T_LLTfS)d;^j-0FI~QD`SRr} zmbWioxuR{wq7{o*ELpL1#j+L4SFBjkzG7v2Tl=E+#qCSlm$ol!U*5i=y}fQ_?qO0uowQ$HsO zVu)5M97SV4$~loJwrn(IEiXrNoY&V}Yf;*sw%9G(UdvOm!W(%?rb^46fZNFe%fjvK z&l{GDCkRgZ+sSu2PuXe2AJeeLTXsLs53||2x-eIl&(}|Dm{~Zb@r0)0l%}bfVtCwf z$Jd|apPZc@oD$B+%?wWUXP*>>XNU8G`Gp03Tev7#?B5goQSi~s$MXLb{5<>1%yZ$9 z`j6kR`)zOk!?x>Q^S0af%{=uVrcAx`vY-EA!NT)j|AzISd2;XD-|?>B`J+$$*`I&@ z3t#%1?;QT#5ic|CxVej#uIM=Dm1{3~!`^og`RPCV^Dq3(m%noOd)#X?#bP_oS-ocM zC2#C0?S0q#fB#Eg{z}udxvSS+*He1?yZ(s8pa0T#4}b5OrfI9!_LN5V{_%r<@zB@5 z@yvhR`j)rd{gJz0y{vF@>?v$ys2L@-Jy8g{Ked3dU{@{O|bn>j(Yc9Hc-D|FY z{Tpw(`7@vY+Sea{=0AQiRDS31$nPy&f5w7^_k8lR5B>F5zVY4nt$NR$ZSS0Y;NdSH zxqRLAugm497SCMx^bZCGSG@B4&ei+g_1uxGHjjMqOOJl_v2XtKb4R>red{gX&D?Tf zzByAjZO?sEMnAS}PGR&=cuL;SEX*v;}w7RK{9hp;4Umx{nww^xv#q2HjhcoJK z`DOUp+=+#g>rZGrp>bQr9x%T|o*;|fGo1R}dZGIRPTc(cQp1I{crxZ@S?T+li>^Zq$%Jllt|22QOarEzJ zG-gMSWJkZ-_;gda_wC_|`aQ2dVf2Cg=--~z9yZjq=hx&LxjcPVczx!z^`o~=pV@E{ z2Lz42weDkgH=dkX^uf%YZ=I2A%w|VFJZ(>Z@rF5P)e-yl%;;Z)&EeE0uZ{zM{7e9v z1`V7#J0(-}rv=AlkDqpee`0WQa7xq6?5X+F{H@`(;KAUl!PgqUUjO&OH-c~Zhq6xu zPX$j$&t#qr{xbkk{l+uTIq&jy@BF|A{-7>bzx=W zEjx7FZ~gW=K2SkFVc+HJdP=YVlg~EK%;g&jC!D-|WyigL^w>A+SL}P&y}5>S&fC=c z&fgha|MU;8-}t`wpE>86-{1ei58Zvwy&wOx2M^X28c#g6VL#{N4WCDKlD6 zKkxj{e<2gS;`B4-ENSn!_>#-6xC*-{IJTj?v}s%UhBx2**1JFY$@>pH`iW2Oeq>@ z-!S@-H@2=WG}JX6zcSabd|swFdf?ois~Rt^Z&@+SThnlAc+uJw;gozs z9jW##KV|f@{?x@yx4wVVNMZEgTOZuJ@SR`1<)RP%=`AaBXJvv7XEdy7n3FyJmiu2< zx-_#gH*J-M`aRF)_x}A^^?&%YJ+l{u(=z!zxBqr#Tec~z&lP`n!{|>N%K3ql*NndJ zgvRUYPZ|BKJr{*<>707vTdp{J^y~A(8JS?u_KvLo7H{+$b1%y@WP)3#U3l3mNB{EN zIzMwwws~o=XUe=xPvf->qn~I$wP{|a9+a*dec!E*<(oJze7NzoIi^geo%YYkw_d*I z>c$hpFq^ACC6}uYn{snU|Mv8Ty>&+=#|c?pFSi>}iFMw$TCVU8J@M+cC%Ufs z{*xcP`q8JJxH|F{T=R_o&^6w6wlU2|un73izqrtLV$m<%Ci%d=;PyQccl3X*5?kf&S&yr)B%GkFp;1T#2BY9+)V!TF0sW#eN3Ex$o!w zSNlP(F~89d>I-$31kIG@`zxmS)R!&zr`7wLGJYLR3Qh?!VKKw0ra_(0N>=EFr-r8n zvp56E&*eEqv)-Q{?h0D{ot#)-@7IOjru(!sr}Bb)T|?lvO*=o+MmX!w;gHRU4*Fp` zku)Rh$Opllq2J`^R9zT+p~KI5{$I6t;oJQUkyqCncp0BFmahol>a_ioAnU&;m~mW_ ze@6b4!h*1kz6HUV{slli;2_DoztHEHoRFjF==WJc-hWy^^AUiGMX65ylm5H2UPv!9 zbHa@OVaoS{_ZIH=mrrdE7g5&g@U*O-KaUe`mew<~{Pm##Sm*Ee!~BT`P2WGspOOo+ zf0b7kP8K8?9i{Svf1^EhJez}S^7^t>P$0GxGK^WT-Vc7lSc3!pKI+Q&QNx@%8=bl! zTmX>09ANOTJSoVjwBM+s0^kgGsVblL!=60<{LHKMPCql*d_Ks{%G?opD>94o{uKYD XtUr}frdbJDFf`-k`g7if(P#b-##Fdc delta 98283 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�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 diff --git a/x/wasm/keeper/testdata/reflect.wasm b/x/wasm/keeper/testdata/reflect.wasm index 2455801fa8b6c63cbe4911e88a0018a33dfd63b1..4875b21dffdf588048dead74df58477b01242d42 100644 GIT binary patch delta 24795 zcmbV!33wDm^Y>QI=H4VrNFWIb*@O@_7Z9#+lMVMNC<20j96<NT||&W5LAwcsE8B!nO$Z$Vx}xD!6!fQXRt{MVcKFX=y0O+82~Ad~)%culX z$(Y!w2|{XSNV*rp1`3)Mm!H#`5`05X5|d(Hz2F;3t2g1hKwB1HyvPq z{YNb>cYKAg!9yA~Y|?h0m?D08lgE8P@hnq+@OJ7_(vrFHZ^?GQ`x#+xK* z5iO+oq|@NUDIRU zaq6Lw?~qmha&=FAf^Q_<(HHqXPnLp*zV}HKlYBWtRMJBOas#eW0J=D5%8oY`*g~JC z@Y`eo$kn>AnH|2_c40!>uZKNbaLW87(QkUP_s3pVo0r3`Z@nA#rcZmis(0`iQIHeT zis%;5FIXASo9Ir#1Is)LHX76%r%b@tdPiRtG>FRUZGvm*b%M*QyJkKH7Ir;mVa0-X zgTaK``W@?BD%Pi#%N5s1|Djx@UOA+z{zZ|0@LmeAm~18>h30mXeyx49^&InQEoI|x zK4n{r^zaUKtmhfHsswmef3`z773t$T%(SSY`6%*3UH^_R&_#Vp#~yS+Ki%;PsvPK) zXjIv&s$4F(-zkLXl5Xi-38nVV_BhqRVNm2}J&SHqO&wwdddnDU)9j*6oEgpLbbc{F zRjZ$Erjb?2N!PlTNXB9>IjEI6Lw~MI zxL)z;ajGa$|M2NqxN~%?OHulZ-RhyM&E4h$(yTk*ztBC!!0Dbrn!dSv1%MBBA7g-v z0JeaZ7Cowfmccz{qwr1-4>~NM<9;Wb-ufBtaQ8FA@HeUFbab|@XB||&+;ce~(|Xkg zWJj-5KrZ!qK4OEu*W?HXJ>a)BI+Fs@H4~oZ3*FJIZo$x|zfi?(g3P&9Opc7~I1z6G zBYat!iu5VZCNr0X!_Lo_b?38}Ll42Qab4R`qpqqLkXhZRs9wA*i!(*2-Xn7`P1W~h z=IT{iR-__n`%OGgSLBS}L_=S06>naVU*HLd+FHeU^mJC%xFZrNNA|pfS~+s!9g!RI<1+OCJK*xUL@1hU1ki+r;~ zv{ntHdk4DBk1_g-(S2=|fnGIRON!Bl+qwp!dCj4ajPtj~=*MjhfS6zGWK^0F+Y;>` zi;c$p_1GkXp2Z;A-+ES$i%S5wZQKw8JOkiBQ1D6IPzY~Qm1MH%-KumzmDN>ZaeuH% zOtj7B)zX&me#@MeK+VfKTLd`Fv1G9XpuzJx#aBhWYVob;XMIHcGkEiGyvtIY^5VuX z>kr~{P≤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 delta 25367 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 diff --git a/x/wasm/keeper/testdata/staking.wasm b/x/wasm/keeper/testdata/staking.wasm index b7b9d32cf1b3cd412139ca6e0d41f9f478340164..76ba360dae4fb69c31494e42d59768f46b37ebb0 100644 GIT binary patch delta 62083 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 From add233346c16d6919beea3eeadf081075afc060f Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 21 Jul 2021 21:38:58 +0200 Subject: [PATCH 17/90] IBC Code compiles (non-test) --- go.mod | 4 +- go.sum | 10 ++--- x/wasm/ibc.go | 16 +++---- x/wasm/keeper/query_plugins.go | 7 ++- x/wasm/keeper/relay.go | 56 +++++++++++++++++++++--- x/wasm/keeper/wasmtesting/mock_engine.go | 48 ++++++++++---------- x/wasm/types/events.go | 2 - x/wasm/types/exported_keepers.go | 7 ++- x/wasm/types/wasmer_engine.go | 12 ++--- 9 files changed, 101 insertions(+), 61 deletions(-) diff --git a/go.mod b/go.mod index 64824ff71d..3fc7889c39 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,6 @@ module github.com/line/lbm-sdk require ( github.com/99designs/keyring v1.1.6 - github.com/CosmWasm/wasmvm v0.16.3 // indirect github.com/DataDog/zstd v1.4.5 // indirect github.com/VictoriaMetrics/fastcache v1.7.0 github.com/armon/go-metrics v0.3.10 @@ -31,7 +30,7 @@ require ( github.com/line/iavl/v2 v2.0.0-init.1.0.20211019080724-001e2272a25d github.com/line/ostracon v1.0.2 github.com/line/tm-db/v2 v2.0.0-init.1.0.20211202001648-945e88fd2edf - github.com/line/wasmvm v0.14.0-0.8.0 + github.com/line/wasmvm v0.16.0-rc1-testing github.com/magiconair/properties v1.8.5 github.com/mailru/easyjson v0.7.7 github.com/mattn/go-isatty v0.0.14 @@ -59,6 +58,5 @@ require ( replace ( github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - github.com/line/wasmvm => github.com/CosmWasm/wasmvm v0.16.0-rc1 google.golang.org/grpc => google.golang.org/grpc v1.33.2 ) diff --git a/go.sum b/go.sum index 65931384d3..1d1d77f933 100644 --- a/go.sum +++ b/go.sum @@ -53,10 +53,6 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= -github.com/CosmWasm/wasmvm v0.16.0-rc1 h1:U91ND1hqB25ix2ivHOlL3VM8htg6XhF96lrRdh+byTc= -github.com/CosmWasm/wasmvm v0.16.0-rc1/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= -github.com/CosmWasm/wasmvm v0.16.3 h1:hUf33EHRmyyvKMhwVl7nMaAOY0vYJVB4bhU+HPfHfBM= -github.com/CosmWasm/wasmvm v0.16.3/go.mod h1:Id107qllDJyJjVQQsKMOy2YYF98sqPJ2t+jX1QES40A= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= @@ -508,6 +504,8 @@ github.com/line/tm-db/v2 v2.0.0-init.1.0.20210413083915-5bb60e117524/go.mod h1:w github.com/line/tm-db/v2 v2.0.0-init.1.0.20210824011847-fcfa67dd3c70/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= github.com/line/tm-db/v2 v2.0.0-init.1.0.20211202001648-945e88fd2edf h1:Pg6wSHMii2zYusYbCHkaeozDgFqfJZWnkjjHPNG9BgA= github.com/line/tm-db/v2 v2.0.0-init.1.0.20211202001648-945e88fd2edf/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= +github.com/line/wasmvm v0.16.0-rc1-testing h1:5tj5xNjXCRSfuJ2tNxu6FeuyvlzRHWlBqCK0IAar0lo= +github.com/line/wasmvm v0.16.0-rc1-testing/go.mod h1:cgsILoCDigfQ2XplFI4rOo2ImOLEZH/OM8sulxGoKUA= github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -773,8 +771,8 @@ github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RM github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= -github.com/tendermint/tm-db v0.5.1 h1:H9HDq8UEA7Eeg13kdYckkgwwkQLBnJGgX4PgLJRhieY= -github.com/tendermint/tm-db v0.5.1/go.mod h1:g92zWjHpCYlEvQXvy9M168Su8V1IBEeawpXVVBaK4f4= +github.com/tendermint/tm-db v0.6.0 h1:Us30k7H1UDcdqoSPhmP8ztAW/SWV6c6OfsfeCiboTC4= +github.com/tendermint/tm-db v0.6.0/go.mod h1:xj3AWJ08kBDlCHKijnhJ7mTcDMOikT1r8Poxy2pJn7Q= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= diff --git a/x/wasm/ibc.go b/x/wasm/ibc.go index 929e5328cc..84e5d420fa 100644 --- a/x/wasm/ibc.go +++ b/x/wasm/ibc.go @@ -50,7 +50,7 @@ func (i IBCHandler) OnChanOpenInit( Order: order.String(), Version: version, ConnectionID: connectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported. - }) + }, "") if err != nil { return err } @@ -86,9 +86,8 @@ func (i IBCHandler) OnChanOpenTry( CounterpartyEndpoint: wasmvmtypes.IBCEndpoint{PortID: counterParty.PortId, ChannelID: counterParty.ChannelId}, Order: order.String(), Version: version, - CounterpartyVersion: counterpartyVersion, ConnectionID: connectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported. - }) + }, counterpartyVersion) if err != nil { return err } @@ -119,7 +118,7 @@ func (i IBCHandler) OnChanOpenAck( if !ok { return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID) } - return i.keeper.OnConnectChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo, counterpartyVersion)) + return i.keeper.OnConnectChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), counterpartyVersion) } // OnChanOpenConfirm implements the IBCModule interface @@ -132,7 +131,7 @@ func (i IBCHandler) OnChanOpenConfirm(ctx sdk.Context, portID, channelID string) if !ok { return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID) } - return i.keeper.OnConnectChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo, "")) + return i.keeper.OnConnectChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), "") } // OnChanCloseInit implements the IBCModule interface @@ -146,7 +145,7 @@ func (i IBCHandler) OnChanCloseInit(ctx sdk.Context, portID, channelID string) e return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID) } - err = i.keeper.OnCloseChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo, "")) + err = i.keeper.OnCloseChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), false) if err != nil { return err } @@ -167,7 +166,7 @@ func (i IBCHandler) OnChanCloseConfirm(ctx sdk.Context, portID, channelID string return sdkerrors.Wrapf(channeltypes.ErrChannelNotFound, "port ID (%s) channel ID (%s)", portID, channelID) } - err = i.keeper.OnCloseChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo, "")) + err = i.keeper.OnCloseChannel(ctx, contractAddr, toWasmVMChannel(portID, channelID, channelInfo), true) if err != nil { return err } @@ -176,14 +175,13 @@ func (i IBCHandler) OnChanCloseConfirm(ctx sdk.Context, portID, channelID string return err } -func toWasmVMChannel(portID, channelID string, channelInfo channeltypes.Channel, counterpartyVersion string) wasmvmtypes.IBCChannel { +func toWasmVMChannel(portID, channelID string, channelInfo channeltypes.Channel) wasmvmtypes.IBCChannel { return wasmvmtypes.IBCChannel{ Endpoint: wasmvmtypes.IBCEndpoint{PortID: portID, ChannelID: channelID}, CounterpartyEndpoint: wasmvmtypes.IBCEndpoint{PortID: channelInfo.Counterparty.PortId, ChannelID: channelInfo.Counterparty.ChannelId}, Order: channelInfo.Ordering.String(), Version: channelInfo.Version, ConnectionID: channelInfo.ConnectionHops[0], // At the moment this list must be of length 1. In the future multi-hop channels may be supported. - CounterpartyVersion: counterpartyVersion, } } diff --git a/x/wasm/keeper/query_plugins.go b/x/wasm/keeper/query_plugins.go index 3178fdc7e1..fb951c8767 100644 --- a/x/wasm/keeper/query_plugins.go +++ b/x/wasm/keeper/query_plugins.go @@ -260,10 +260,9 @@ func IBCQuerier(wasm contractMetaDataSource, channelKeeper types.ChannelKeeper) PortID: got.Counterparty.PortId, ChannelID: got.Counterparty.ChannelId, }, - Order: got.Ordering.String(), - Version: got.Version, - CounterpartyVersion: "", - ConnectionID: got.ConnectionHops[0], + Order: got.Ordering.String(), + Version: got.Version, + ConnectionID: got.ConnectionHops[0], } } res := wasmvmtypes.ChannelResponse{ diff --git a/x/wasm/keeper/relay.go b/x/wasm/keeper/relay.go index 46b081962d..79c684fae9 100644 --- a/x/wasm/keeper/relay.go +++ b/x/wasm/keeper/relay.go @@ -19,6 +19,8 @@ func (k Keeper) OnOpenChannel( ctx sdk.Context, contractAddr sdk.AccAddress, channel wasmvmtypes.IBCChannel, + // this is unset on init, set on try + counterpartyVersion string, ) error { defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-open-channel") @@ -30,9 +32,21 @@ func (k Keeper) OnOpenChannel( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) + msg := wasmvmtypes.IBCChannelOpenMsg{} + if counterpartyVersion == "" { + msg.OpenInit = &wasmvmtypes.IBCOpenInit{ + Channel: channel, + } + } else { + msg.OpenTry = &wasmvmtypes.IBCOpenTry{ + Channel: channel, + CounterpartyVersion: counterpartyVersion, + } + } + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - gasUsed, execErr := k.wasmVM.IBCChannelOpen(codeInfo.CodeHash, env, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + gasUsed, execErr := k.wasmVM.IBCChannelOpen(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -53,6 +67,8 @@ func (k Keeper) OnConnectChannel( ctx sdk.Context, contractAddr sdk.AccAddress, channel wasmvmtypes.IBCChannel, + // this is set on ack, unset on confirm + counterpartyVersion string, ) error { defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-connect-channel") contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddr) @@ -63,9 +79,21 @@ func (k Keeper) OnConnectChannel( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) + msg := wasmvmtypes.IBCChannelConnectMsg{} + if counterpartyVersion == "" { + msg.OpenConfirm = &wasmvmtypes.IBCOpenConfirm{ + Channel: channel, + } + } else { + msg.OpenAck = &wasmvmtypes.IBCOpenAck{ + Channel: channel, + CounterpartyVersion: counterpartyVersion, + } + } + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCChannelConnect(codeInfo.CodeHash, env, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.IBCChannelConnect(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -85,6 +113,8 @@ func (k Keeper) OnCloseChannel( ctx sdk.Context, contractAddr sdk.AccAddress, channel wasmvmtypes.IBCChannel, + // false for init, true for confirm + confirm bool, ) error { defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-close-channel") @@ -96,9 +126,20 @@ func (k Keeper) OnCloseChannel( params := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) + msg := wasmvmtypes.IBCChannelCloseMsg{} + if confirm { + msg.CloseConfirm = &wasmvmtypes.IBCCloseConfirm{ + Channel: channel, + } + } else { + msg.CloseInit = &wasmvmtypes.IBCCloseInit{ + Channel: channel, + } + } + gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCChannelClose(codeInfo.CodeHash, params, channel, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.IBCChannelClose(codeInfo.CodeHash, params, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -127,10 +168,11 @@ func (k Keeper) OnRecvPacket( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) + msg := wasmvmtypes.IBCPacketReceiveMsg{Packet: packet} gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCPacketReceive(codeInfo.CodeHash, env, packet, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.IBCPacketReceive(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -160,10 +202,11 @@ func (k Keeper) OnAckPacket( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) + msg := wasmvmtypes.IBCPacketAckMsg{Ack: acknowledgement} gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCPacketAck(codeInfo.CodeHash, env, acknowledgement, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.IBCPacketAck(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { @@ -189,10 +232,11 @@ func (k Keeper) OnTimeoutPacket( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) + msg := wasmvmtypes.IBCPacketTimeoutMsg{Packet: packet} gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) - res, gasUsed, execErr := k.wasmVM.IBCPacketTimeout(codeInfo.CodeHash, env, packet, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) + res, gasUsed, execErr := k.wasmVM.IBCPacketTimeout(codeInfo.CodeHash, env, msg, wasmStore, k.cosmwasmAPI(ctx), querier, ctx.GasMeter(), gas, costJsonDeserialization) k.consumeRuntimeGas(ctx, gasUsed) if execErr != nil { diff --git a/x/wasm/keeper/wasmtesting/mock_engine.go b/x/wasm/keeper/wasmtesting/mock_engine.go index bc69b63f3d..09fdbe8601 100644 --- a/x/wasm/keeper/wasmtesting/mock_engine.go +++ b/x/wasm/keeper/wasmtesting/mock_engine.go @@ -26,57 +26,57 @@ type MockWasmer struct { ReplyFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) GetCodeFn func(codeID wasmvm.Checksum) (wasmvm.WasmCode, error) CleanupFn func() - IBCChannelOpenFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (uint64, error) - IBCChannelConnectFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) - IBCChannelCloseFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) - IBCPacketReceiveFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCReceiveResponse, uint64, error) - IBCPacketAckFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, ack wasmvmtypes.IBCAcknowledgementWithPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) - IBCPacketTimeoutFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) + IBCChannelOpenFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelOpenMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (uint64, error) + IBCChannelConnectFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelConnectMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) + IBCChannelCloseFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelCloseMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) + IBCPacketReceiveFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketReceiveMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCReceiveResponse, uint64, error) + IBCPacketAckFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketAckMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) + IBCPacketTimeoutFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketTimeoutMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) PinFn func(checksum wasmvm.Checksum) error UnpinFn func(checksum wasmvm.Checksum) error GetMetricsFn func() (*wasmvmtypes.Metrics, error) } -func (m *MockWasmer) IBCChannelOpen(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (uint64, error) { +func (m *MockWasmer) IBCChannelOpen(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelOpenMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (uint64, error) { if m.IBCChannelOpenFn == nil { panic("not supposed to be called!") } - return m.IBCChannelOpenFn(codeID, env, channel, store, goapi, querier, gasMeter, gasLimit, deserCost) + return m.IBCChannelOpenFn(codeID, env, msg, store, goapi, querier, gasMeter, gasLimit, deserCost) } -func (m *MockWasmer) IBCChannelConnect(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { +func (m *MockWasmer) IBCChannelConnect(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelConnectMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { if m.IBCChannelConnectFn == nil { panic("not supposed to be called!") } - return m.IBCChannelConnectFn(codeID, env, channel, store, goapi, querier, gasMeter, gasLimit, deserCost) + return m.IBCChannelConnectFn(codeID, env, msg, store, goapi, querier, gasMeter, gasLimit, deserCost) } -func (m *MockWasmer) IBCChannelClose(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { +func (m *MockWasmer) IBCChannelClose(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelCloseMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { if m.IBCChannelCloseFn == nil { panic("not supposed to be called!") } - return m.IBCChannelCloseFn(codeID, env, channel, store, goapi, querier, gasMeter, gasLimit, deserCost) + return m.IBCChannelCloseFn(codeID, env, msg, store, goapi, querier, gasMeter, gasLimit, deserCost) } -func (m *MockWasmer) IBCPacketReceive(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCReceiveResponse, uint64, error) { +func (m *MockWasmer) IBCPacketReceive(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketReceiveMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCReceiveResponse, uint64, error) { if m.IBCPacketReceiveFn == nil { panic("not supposed to be called!") } - return m.IBCPacketReceiveFn(codeID, env, packet, store, goapi, querier, gasMeter, gasLimit, deserCost) + return m.IBCPacketReceiveFn(codeID, env, msg, store, goapi, querier, gasMeter, gasLimit, deserCost) } -func (m *MockWasmer) IBCPacketAck(codeID wasmvm.Checksum, env wasmvmtypes.Env, ack wasmvmtypes.IBCAcknowledgementWithPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { +func (m *MockWasmer) IBCPacketAck(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketAckMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { if m.IBCPacketAckFn == nil { panic("not supposed to be called!") } - return m.IBCPacketAckFn(codeID, env, ack, store, goapi, querier, gasMeter, gasLimit, deserCost) + return m.IBCPacketAckFn(codeID, env, msg, store, goapi, querier, gasMeter, gasLimit, deserCost) } -func (m *MockWasmer) IBCPacketTimeout(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { +func (m *MockWasmer) IBCPacketTimeout(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketTimeoutMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { if m.IBCPacketTimeoutFn == nil { panic("not supposed to be called!") } - return m.IBCPacketTimeoutFn(codeID, env, packet, store, goapi, querier, gasMeter, gasLimit, deserCost) + return m.IBCPacketTimeoutFn(codeID, env, msg, store, goapi, querier, gasMeter, gasLimit, deserCost) } func (m *MockWasmer) Create(codeID wasmvm.WasmCode) (wasmvm.Checksum, error) { @@ -204,7 +204,7 @@ type IBCContractCallbacks interface { IBCChannelOpen( codeID wasmvm.Checksum, env wasmvmtypes.Env, - channel wasmvmtypes.IBCChannel, + channel wasmvmtypes.IBCChannelOpenMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, @@ -216,7 +216,7 @@ type IBCContractCallbacks interface { IBCChannelConnect( codeID wasmvm.Checksum, env wasmvmtypes.Env, - channel wasmvmtypes.IBCChannel, + channel wasmvmtypes.IBCChannelConnectMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, @@ -228,7 +228,7 @@ type IBCContractCallbacks interface { IBCChannelClose( codeID wasmvm.Checksum, env wasmvmtypes.Env, - channel wasmvmtypes.IBCChannel, + channel wasmvmtypes.IBCChannelCloseMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, @@ -240,7 +240,7 @@ type IBCContractCallbacks interface { IBCPacketReceive( codeID wasmvm.Checksum, env wasmvmtypes.Env, - packet wasmvmtypes.IBCPacket, + packet wasmvmtypes.IBCPacketReceiveMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, @@ -252,7 +252,7 @@ type IBCContractCallbacks interface { IBCPacketAck( codeID wasmvm.Checksum, env wasmvmtypes.Env, - ack wasmvmtypes.IBCAcknowledgementWithPacket, + ack wasmvmtypes.IBCPacketAckMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, @@ -264,7 +264,7 @@ type IBCContractCallbacks interface { IBCPacketTimeout( codeID wasmvm.Checksum, env wasmvmtypes.Env, - packet wasmvmtypes.IBCPacket, + packet wasmvmtypes.IBCPacketTimeoutMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, diff --git a/x/wasm/types/events.go b/x/wasm/types/events.go index 57ff6cdc77..1419939a35 100644 --- a/x/wasm/types/events.go +++ b/x/wasm/types/events.go @@ -7,8 +7,6 @@ const ( EventTypeMigrateContract = "migrate_contract" EventTypeUpdateAdmin = "update_admin" EventTypeClearAdmin = "clear_admin" - EventTypePinCode = "pin_code" - EventTypeUnpinCode = "unpin_code" EventTypeUpdateContractStatus = "update_contract_status" // WasmModuleEventType is stored with any contract TX WasmModuleEventType = "wasm" diff --git a/x/wasm/types/exported_keepers.go b/x/wasm/types/exported_keepers.go index 5243f733ad..2ca3d3a986 100644 --- a/x/wasm/types/exported_keepers.go +++ b/x/wasm/types/exported_keepers.go @@ -1,7 +1,6 @@ package types import ( - "github.com/line/lbm-sdk/types" sdk "github.com/line/lbm-sdk/types" capabilitytypes "github.com/line/lbm-sdk/x/capability/types" wasmvmtypes "github.com/line/wasmvm/types" @@ -62,16 +61,22 @@ type IBCContractKeeper interface { ctx sdk.Context, contractAddr sdk.AccAddress, channel wasmvmtypes.IBCChannel, + // this is unset on init, set on try + counterpartyVersion string, ) error OnConnectChannel( ctx sdk.Context, contractAddr sdk.AccAddress, channel wasmvmtypes.IBCChannel, + // this is set on ack, unset on confirm + counterpartyVersion string, ) error OnCloseChannel( ctx sdk.Context, contractAddr sdk.AccAddress, channel wasmvmtypes.IBCChannel, + // false for init, true for confirm + confirm bool, ) error OnRecvPacket( ctx sdk.Context, diff --git a/x/wasm/types/wasmer_engine.go b/x/wasm/types/wasmer_engine.go index ad4c85e512..2d4835d2aa 100644 --- a/x/wasm/types/wasmer_engine.go +++ b/x/wasm/types/wasmer_engine.go @@ -142,7 +142,7 @@ type WasmerEngine interface { IBCChannelOpen( checksum wasmvm.Checksum, env wasmvmtypes.Env, - channel wasmvmtypes.IBCChannel, + channel wasmvmtypes.IBCChannelOpenMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, @@ -156,7 +156,7 @@ type WasmerEngine interface { IBCChannelConnect( checksum wasmvm.Checksum, env wasmvmtypes.Env, - channel wasmvmtypes.IBCChannel, + channel wasmvmtypes.IBCChannelConnectMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, @@ -170,7 +170,7 @@ type WasmerEngine interface { IBCChannelClose( checksum wasmvm.Checksum, env wasmvmtypes.Env, - channel wasmvmtypes.IBCChannel, + channel wasmvmtypes.IBCChannelCloseMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, @@ -184,7 +184,7 @@ type WasmerEngine interface { IBCPacketReceive( checksum wasmvm.Checksum, env wasmvmtypes.Env, - packet wasmvmtypes.IBCPacket, + packet wasmvmtypes.IBCPacketReceiveMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, @@ -199,7 +199,7 @@ type WasmerEngine interface { IBCPacketAck( checksum wasmvm.Checksum, env wasmvmtypes.Env, - ack wasmvmtypes.IBCAcknowledgementWithPacket, + ack wasmvmtypes.IBCPacketAckMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, @@ -214,7 +214,7 @@ type WasmerEngine interface { IBCPacketTimeout( checksum wasmvm.Checksum, env wasmvmtypes.Env, - packet wasmvmtypes.IBCPacket, + packet wasmvmtypes.IBCPacketTimeoutMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, From 3f1d2656160110f2a2cb5da823825bdb00b4cee3 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 21 Jul 2021 21:48:39 +0200 Subject: [PATCH 18/90] Keeper tests pass --- x/wasm/keeper/keeper_test.go | 4 ++-- x/wasm/keeper/recurse_test.go | 14 +++++++------- x/wasm/keeper/relay_test.go | 35 +++++++++++++++++++---------------- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index a2ba0a0a25..53d06a566f 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -288,7 +288,7 @@ func TestInstantiate(t *testing.T) { gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x12361), gasAfter-gasBefore) + require.Equal(t, uint64(0x1121a), gasAfter-gasBefore) } // ensure it is stored properly @@ -522,7 +522,7 @@ func TestExecute(t *testing.T) { // make sure gas is properly deducted from ctx gasAfter := ctx.GasMeter().GasConsumed() if types.EnableGasVerification { - require.Equal(t, uint64(0x12afd), gasAfter-gasBefore) + require.Equal(t, uint64(0x1099b), gasAfter-gasBefore) } // ensure bob now exists and got both payments released bobAcct = accKeeper.GetAccount(ctx, bob) diff --git a/x/wasm/keeper/recurse_test.go b/x/wasm/keeper/recurse_test.go index cfd1066a80..bd0b3e8ee0 100644 --- a/x/wasm/keeper/recurse_test.go +++ b/x/wasm/keeper/recurse_test.go @@ -58,12 +58,12 @@ func initRecurseContract(t *testing.T) (contract sdk.AccAddress, creator sdk.Acc func TestGasCostOnQuery(t *testing.T) { const ( - GasNoWork uint64 = 44_147 + GasNoWork uint64 = 44_223 // Note: about 100 SDK gas (10k wasmer gas) for each round of sha256 - GasWork50 uint64 = 49_839 // this is a little shy of 50k gas - to keep an eye on the limit + GasWork50 uint64 = 49_884 // this is a little shy of 50k gas - to keep an eye on the limit - GasReturnUnhashed uint64 = 222 - GasReturnHashed uint64 = 199 + GasReturnUnhashed uint64 = 198 + GasReturnHashed uint64 = 173 ) cases := map[string]struct { @@ -105,7 +105,7 @@ func TestGasCostOnQuery(t *testing.T) { Work: 50, }, // FIXME: why -9... confused a bit by calculations, seems like rounding issues - expectedGas: 5*GasWork50 + 4*GasReturnHashed - 6, + expectedGas: 5*GasWork50 + 4*GasReturnHashed - 3, }, } @@ -222,7 +222,7 @@ func TestLimitRecursiveQueryGas(t *testing.T) { const ( // Note: about 100 SDK gas (10k wasmer gas) for each round of sha256 - GasWork2k uint64 = 273_644 // = InstanceCost + x // we have 6x gas used in cpu than in the instance + GasWork2k uint64 = 273_153 // = InstanceCost + x // we have 6x gas used in cpu than in the instance // This is overhead for calling into a sub-contract GasReturnHashed uint64 = 177 @@ -252,7 +252,7 @@ func TestLimitRecursiveQueryGas(t *testing.T) { }, expectQueriesFromContract: 5, // FIXME: why -3 ... confused a bit by calculations, seems like rounding issues - expectedGas: GasWork2k + 5*(GasWork2k+GasReturnHashed) + 2, + expectedGas: GasWork2k + 5*(GasWork2k+GasReturnHashed) + 1, }, // this is where we expect an error... // it has enough gas to run 4 times and die on the 5th (4th time dispatching to sub-contract) diff --git a/x/wasm/keeper/relay_test.go b/x/wasm/keeper/relay_test.go index d87c3e99fd..b538e3ce3c 100644 --- a/x/wasm/keeper/relay_test.go +++ b/x/wasm/keeper/relay_test.go @@ -54,8 +54,9 @@ func TestOnOpenChannel(t *testing.T) { for name, spec := range specs { t.Run(name, func(t *testing.T) { myChannel := wasmvmtypes.IBCChannel{Version: "my test channel"} - m.IBCChannelOpenFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (uint64, error) { - assert.Equal(t, myChannel, channel) + myMsg := wasmvmtypes.IBCChannelOpenMsg{OpenTry: &wasmvmtypes.IBCOpenTry{Channel: myChannel, CounterpartyVersion: "foo"}} + m.IBCChannelOpenFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelOpenMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (uint64, error) { + assert.Equal(t, myMsg, msg) return spec.contractGas * types.DefaultGasMultiplier, spec.contractErr } @@ -63,7 +64,7 @@ func TestOnOpenChannel(t *testing.T) { before := ctx.GasMeter().GasConsumed() // when - err := keepers.WasmKeeper.OnOpenChannel(ctx, spec.contractAddr, myChannel) + err := keepers.WasmKeeper.OnOpenChannel(ctx, spec.contractAddr, myChannel, "foo") // then if spec.expErr { @@ -147,8 +148,9 @@ func TestOnConnectChannel(t *testing.T) { for name, spec := range specs { t.Run(name, func(t *testing.T) { myChannel := wasmvmtypes.IBCChannel{Version: "my test channel"} - m.IBCChannelConnectFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { - assert.Equal(t, channel, myChannel) + myMsg := wasmvmtypes.IBCChannelConnectMsg{OpenConfirm: &wasmvmtypes.IBCOpenConfirm{Channel: myChannel}} + m.IBCChannelConnectFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelConnectMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { + assert.Equal(t, msg, myMsg) return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } @@ -163,7 +165,7 @@ func TestOnConnectChannel(t *testing.T) { } // when - err := keepers.WasmKeeper.OnConnectChannel(ctx, spec.contractAddr, myChannel) + err := keepers.WasmKeeper.OnConnectChannel(ctx, spec.contractAddr, myChannel, "") // then events := ctx.EventManager().Events() @@ -265,8 +267,9 @@ func TestOnCloseChannel(t *testing.T) { for name, spec := range specs { t.Run(name, func(t *testing.T) { myChannel := wasmvmtypes.IBCChannel{Version: "my test channel"} - m.IBCChannelCloseFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, channel wasmvmtypes.IBCChannel, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { - assert.Equal(t, channel, myChannel) + myMsg := wasmvmtypes.IBCChannelCloseMsg{CloseInit: &wasmvmtypes.IBCCloseInit{Channel: myChannel}} + m.IBCChannelCloseFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCChannelCloseMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { + assert.Equal(t, msg, myMsg) return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } @@ -280,7 +283,7 @@ func TestOnCloseChannel(t *testing.T) { } // when - err := keepers.WasmKeeper.OnCloseChannel(ctx, spec.contractAddr, myChannel) + err := keepers.WasmKeeper.OnCloseChannel(ctx, spec.contractAddr, myChannel, false) // then events := ctx.EventManager().Events() @@ -389,7 +392,7 @@ func TestOnRecvPacket(t *testing.T) { }, "submessage reply can overwrite ack data": { contractAddr: example.Contract, - expContractGas: myContractGas + 10 + DefaultInstanceCost + 3708, + expContractGas: myContractGas + 10 + types.DefaultInstanceCost + 3690, contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyAlways, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}}, @@ -409,8 +412,8 @@ func TestOnRecvPacket(t *testing.T) { t.Run(name, func(t *testing.T) { myPacket := wasmvmtypes.IBCPacket{Data: []byte("my data")} - m.IBCPacketReceiveFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCReceiveResponse, uint64, error) { - assert.Equal(t, myPacket, packet) + m.IBCPacketReceiveFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketReceiveMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCReceiveResponse, uint64, error) { + assert.Equal(t, myPacket, msg.Packet) return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } if spec.mockReplyFn != nil { @@ -534,8 +537,8 @@ func TestOnAckPacket(t *testing.T) { t.Run(name, func(t *testing.T) { myAck := wasmvmtypes.IBCAcknowledgementWithPacket{Acknowledgement: wasmvmtypes.IBCAcknowledgement{Data: []byte("myAck")}} - m.IBCPacketAckFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, ack wasmvmtypes.IBCAcknowledgementWithPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { - assert.Equal(t, myAck, ack) + m.IBCPacketAckFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketAckMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { + assert.Equal(t, myAck, msg.Ack) return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } @@ -652,8 +655,8 @@ func TestOnTimeoutPacket(t *testing.T) { for name, spec := range specs { t.Run(name, func(t *testing.T) { myPacket := wasmvmtypes.IBCPacket{Data: []byte("my test packet")} - m.IBCPacketTimeoutFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, packet wasmvmtypes.IBCPacket, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { - assert.Equal(t, myPacket, packet) + m.IBCPacketTimeoutFn = func(codeID wasmvm.Checksum, env wasmvmtypes.Env, msg wasmvmtypes.IBCPacketTimeoutMsg, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.IBCBasicResponse, uint64, error) { + assert.Equal(t, myPacket, msg.Packet) return spec.contractResp, myContractGas * types.DefaultGasMultiplier, spec.contractErr } From 0cc2d144ae00b8929a54c27380355ac426709386 Mon Sep 17 00:00:00 2001 From: loloicci Date: Tue, 8 Feb 2022 18:42:51 +0900 Subject: [PATCH 19/90] fix: update tests for wasmvm 0.16.0-rc1 --- x/wasm/module_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x/wasm/module_test.go b/x/wasm/module_test.go index 8293ac87c5..376533c08f 100644 --- a/x/wasm/module_test.go +++ b/x/wasm/module_test.go @@ -450,7 +450,7 @@ func TestHandleExecute(t *testing.T) { assertExecuteResponse(t, res.Data, []byte{0xf0, 0x0b, 0xaa}) // this should be standard message event, plus x/wasm init event, plus 2 bank send event, plus a special event from the contract - require.Equal(t, 5, len(res.Events), prettyEvents(res.Events)) + require.Equal(t, 6, len(res.Events), prettyEvents(res.Events)) require.Equal(t, "transfer", res.Events[0].Type) require.Len(t, res.Events[0].Attributes, 3) @@ -473,8 +473,8 @@ func TestHandleExecute(t *testing.T) { // finally, standard x/wasm tag assert.Equal(t, "message", res.Events[4].Type) assertAttribute(t, "module", "wasm", res.Events[4].Attributes[0]) - assert.Equal(t, "execute_contract", res.Events[4].Type) - assertAttribute(t, "contract_address", contractBech32Addr, res.Events[4].Attributes[0]) + assert.Equal(t, "execute_contract", res.Events[5].Type) + assertAttribute(t, "contract_address", contractBech32Addr, res.Events[5].Attributes[0]) // ensure bob now exists and got both payments released bobAcct = data.acctKeeper.GetAccount(data.ctx, bob) From 7329c2125f3cbd8bc45c00311c8f08a8ba8fa509 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 21 Jul 2021 22:05:45 +0200 Subject: [PATCH 20/90] Update to cosmwasm 0.16.0-rc3 contracts, with some fixes --- x/wasm/keeper/testdata/burner.wasm | Bin 125206 -> 125206 bytes x/wasm/keeper/testdata/hackatom.wasm | Bin 177773 -> 177773 bytes x/wasm/keeper/testdata/hackatom.wasm.gzip | Bin 62351 -> 62309 bytes x/wasm/keeper/testdata/ibc_reflect.wasm | Bin 282290 -> 282305 bytes x/wasm/keeper/testdata/ibc_reflect_send.wasm | Bin 286892 -> 286907 bytes x/wasm/keeper/testdata/reflect.wasm | Bin 272031 -> 272031 bytes x/wasm/keeper/testdata/staking.wasm | Bin 233817 -> 232279 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/x/wasm/keeper/testdata/burner.wasm b/x/wasm/keeper/testdata/burner.wasm index fbb35c50e05d598c776731b09e02b407c1472caf..fecb679837448866b4d34d19eebdd5f2ba5db0dc 100644 GIT binary patch delta 1048 zcmZuwZ){Ul6z{pWe|T%VZWK2Y;(A|canP1bFr~81QDnoRV_U&V+(gB#on3&%%qX$M zC9=*zaq1y^366}dK-*2SZg+$%QJ928F)@v}5Vl~4iQp#^{6M0xIPV)o_rdew+WNLHEM16z^3 z20x@l-mNbMs%y8^?|4yWqwsPU*=sAYJHqcY?tX3O?@;A?<<(scWt(59@R!R+z!8I^ z;FC`f88dVTZ#4}8|3hjcJSX=i@TasHfEd54(`t=I4bv184THS>{I+Ewk9--$JM29Y z>p?dD1Rk=Vz|8nFSZ-hQ7~+TQ(*~gqtc^&JkMc$rKG?7l170`xKbub=S3o6L=9LUg z^6w7ksT8%&!5_UQLEFTw8_l57d=-$--|`)#su-tAb!aT}FB*MN)|?C7{Fm)bTG44! ztqCwtXIpaD8s1(vlY`EtS=`omlP@%d4B+CS=J{n1!^y}1r~AwGq%(?JI^Glx@s5i` zEPLOlI&!NELy>w>O-6btxUssk7Y_58&MTDgC?7cddJg$3%K!fK91-wWpSP&O<;ORu z##R0IN%tpMeo~e9p4>+;cB&Mf=hcIIV9DjS;MJiaoFDki{NKy1GA71$PkV~KVu* zcnK30POKPdfTu+(*P`X-HvBGLY;=0Xyb!-5EC>(c#ZZi^PH$cE40YIdx(Z~poOPpg zW&|UN^`g;eqJ;l2(w&btrj9(>!f2(LilLhX6E!k1evIa|m&)gd9&t8RQ z49?l{-RxREK3Aj@2S5F0ms%P1r)gN$<44&-ZoPc~Ajm(yb08OjXnyGCw)=N=0x>`I zoL8Jx>I<5M5D+kZR$_w|#Kyi@u RUZv+cIAQw2=yeD!{|ApZQ~>}0 delta 1083 zcmZuwZBSHI7~c1s{c!iP!m_e7V*~fz7DaZqFq?H}1>`CpVkjS3If|7Vu(*v-q@n8-=6m6QRrfC?>P#A)K6#XbC`{5sHtg{;yKYD+h`@GNl zyw7>>oO4d!Fr2<&h>t?Hff_WaG!X!Lpn6RrbUZW~qNjl0fkz7zC`%OcOg4V zti^X}mb<8;yt-!l)7!Sl(lBi8BEIZ=(H_{hd*`laet{Ctv(N8%u5fd~rqW`$2kgh- zD0t*PBI5+z&h(}UfKE0kXtgko*M?iz6Z!=(3mQ?AOEe;+H46jmJ$(tFPq&BVEt>&0 zpZXw;96o~c;z82cjpBt2Y?u3R;=)=il-Dd$tX;lo;KsFiZAP%7wBCXD*R8}_x05MP zSqP+aDjy5nMuTWnb_UWCl0dCJ`+;re2?hrn3h47E>O{yc`1kvAC!?UrrUJ4GZIMfTr*wmpfDEYCAo$cIXBEcYg zaQsuk=}%5JBpTCCtxFh}_1`0-K`cCzXzx9=(Oi)6ezb<jJP{kn-2 z$=r>VQ4w;vzawc{{0jRr)?;CJt_}g3$GdEeA}uvjejUdkh1>CqDbln?78x%EthwA{ zYx=)>6Z_-xqrgsmo@(Q}xTfv+)$I)&X{Y-68k#x^5_3)8q)?A!_EkJGmxukcUxObT z=Vb7+?zwUuFJ1phHr9(&iPM0j$Bx-dX8pMZpn-ib-?AJU(7fPe+4t_~IAdOLT~t4e zLzy}p2csGog~$Iv#Uo%zg68Ehn1=lhaxpF l0*yvUzJ85HtF~W+%u9DiK(&*#9<_TCa^U+*!;|1o{~J!ET>t<8 diff --git a/x/wasm/keeper/testdata/hackatom.wasm b/x/wasm/keeper/testdata/hackatom.wasm index 235071d83fb2234a393e6d3e68f2fdd2c2e471b3..1787fc84a6a429a9b1ba4d82b16fd2490a6b6096 100644 GIT binary patch delta 2218 zcmZ8h3sjWH72a?5!DCUDhrGcxN-H2D2xu0>EDu475;W(ur-BGbg*70$JbTh0Q4#Th zX4Ju;6$l<9iHHv7Pg;4jIhdFjO%sl>4H{#b#s?Zrt?{&oy$kqgchAhdckXw;J9FpG ze{0C`){tXo3ta5f^w$~G^aFG>@e>GUYRJnt4cG99nY&rww36xD5qchn5H^dytDZc+ z4R7Ks`+3mIMft_nwPC9*5i{4cv+BUa*GxqYpQ{Oy2b|g=)w&UeLCzd{;3WU#Fv#Q-Ln~zRM5CG?)@I7hA(;+7 z9!8cl0YR$!Gk}H?1rcOW7I_riQT5V@P1U=r!squfeha9(9cn; z$ZBT%px1H?$`LO|P{t9jPTm@u0S&(w`v>{H&qB!7!0$AZ2DkO8rZZJEvo~st>S*R} z)R?t=fACG&F|VJJ@Y48mG$$l{P6<5{gTM~gadVQt{J^Ex=HB439e&cq(+b}Ub+i*B z<-Vx07`*jHmC-qx+4gcrB_I0k9o?~UfMK32oI01u;>#$#XJ65nxD`;vk&O~x&K1>@>JUb<^fNiJqN zYgxk*K$mN)Ovz(;BiJp#`1uRCWr4m@rn4L|?Z9J%iB z0}bU|{SK9T6o3Kgbo?h!kVYP{1$A_JVt}9SB03&?vX4k_o^${i|9bZfVq~u}q9s&M z_Y6Ya?9S!AJzBn`CvsG7?TN%4-q&NMnf1~v6MNsMCYK|9nLwOe_UE~378U12D{eIZp&{o+O2j!Fl%(rvwd;TpTMMc%kz(y@km`LjzS zYF$G;VFPSfUiwWp+<3%Q+mqULH4;eSr@vi@6lwVTuWV;5ycRm?NfDZ1WaegA%ql~S zeEZruH9eGop||MLKOEW*RpB`ypp=+miv}IN6Ekh(mk<5XqiS zlnKG`4Hk$hHG;7~X;UM`1B1#fZ!7}qt`o7oAQD2hDRF+dMY|C*0$?GC2*4Ewcq*0C z(WoQaB@A((N{WnGwh-mmER?EoRGAiuSX)?56ml^rGUmfwxflgAJ$c2)gsW-{9)36v zVE609qc~(xC}Fah2v35i{%P|s7Y&JM75n0miBsZ!JSOW;HT9_sO^iN%Zwik@6pP9P zOcGg1@Uv;*6P^aI)PE&*CBj?uoPbW8?|_5&&Wx^S=zk+NCZT+cp(lYDf)Wtp_Dlv! zV>Vc(sl;Css9yh0f+O3*6x{;2LtI~kJmHfJ#|a-of87qKo~kmxU=bZBh={UziJBDn zAz1uA1!>|y3POeFLKwvjo3?TxT1nWYB80@;Um#j3OvO%MrVSn<0@L88Tc_W_=o%7d4XYQHxdo5a~H_$#g1Fhj&=pedl%Wcw>99dO|0e!U4L6G?u;;X}3{8LGIwfgG(Zy8Iv}Pb5W% zqv#WRI^Zr=cTib=Nt$w`19Zew;+0CWgZJ;P zWcFTpYpg{TIo6_VYw1dpskEvj-)b@?6_*RU3T74aE7@%Cf}Fh7Ii+igOr|31Dsool z=arS_FS4!@-lFq67v-R delta 2145 zcmZ8h2~d^S73RBdVKeg32gvG6PzwkOh=_pbV+Rq0q?1kr0jXiJxbTo=CXLvr2xy4j zkgL>0Fl1aK;MM#|CoI-MW2HtDYn_&;F`3j>P%$Lf21(Bkn9%++_w47p_uO;-JJ4@8 z&~Mk)3`c{;T4SxZ)@U>U^u+in_%UeYO`ONHfWY9{Z?ajNe0F30r+5!R^Y{mvnM>bA z3wqfve1B71u)efpL(saw;G$z}%WR+dA=TJ{ip}Nu3+vd+Ykc!^vsdT*Iy3MnLXP7Y zd;=R;Hw)xOtvB*{nATT5Yd8dHuODUT<#x86FvyFxeN5(Rk3l9(HEH<0XENo@kS;Bp zxjEd(Pc5#5i}Vk-fK^xX<_J$A(-FiSynR{kF5!>?C!Xd#G)ZneH75zOD`F2J$n<5` z7^38ym@tNSl)x8}2D#7YEsay}u5K$IW);e8Oj?sBlo?H0vz8wzs^gdabL2V4Ok22f zllu&!i`_d2Y1sXS3V6jd2-k0FyRFPKOd9hQ6d7EjVZTUYMOqW%4`=-nIvzj!4{}~W zk6OY|&}E|MfphbrNgqe#8*AQh$VtQu&BNfO9Ii@(yLUoblE&zOO2dcsncUX25nizrcALi zsXZ{kunW9>>!DElpA4Jq9VcXp&{D+5%>L)_bCZ>Wa^vrI*y3+|xNaGD-u-+2ecdg- z`}Hq)`|dtoRR0PU`;U5sK_?IHHCwZH8Gj(0L}WHxx&49f`0f3*NEGeaFd|V_HLk*` zxBtytuZ@q#a|mUhz(lo&vX6m$&9qurUn61nP+VH!;1em#r$ zr5+95qTO;Ru zF{;s@t)W;iHI|ot*#S2md}lRnv*%6-5YNwlm4tX{`1)6BjfHmuoPN55CYYGH2}Ncr zL!>-@w?soffmi<#8h{J^2f%*V$=BY`q8DJ#9i#l~{qI4@mmjLg0fQdEbe{YumAnCi zo21>hl{&I-dtA>5!(k+l$Numq`k5R?Qo(N3@a!jqBRigO2DgTE5XPA{JVzMfbAUh^ z+OSy&hA)vIDmCy!g3_WvqBDAx0avU5J5nPe-9aD}*`h>wV1P~|{Jl^_A;Jr{ZQ-m` z_+X!&bjSIK0^OuY4^&f>))?(6+cEHol+?#o7w+7@>$|~3~q|jXk_AqxEhU_#0I0OkeA~S@l-C1fs<&BfrnTa zhahn#4sk*ogSC@@){4)}I3!x)VPqdMQ4oXRN!~)y6^k3Y5|P!a955~)PsAb26RAmy=^~D z-)X@M-Uw12zkp;LF*_Tz;zAZY`S!+S;hcj%i|8zD7p>XwRKCuF8Om2VIN+oLZY@J0 z*w8+uzZ@xgY!!=Ng*Ub;S+8P5kJpr!wqxT|;+HtwNEgHdlM3fjiB1LN#U+gJx5PS%vzcJLmNUBL|E zRvB{=m&%#F7%pQL@t~Y-6b~zywM#*6-n!h<4aMQ%#g_c=@bt}VODb1b^2OWb%vEft zU|yoAoGnlj;zZ*X=Aa_YaQ?rn6@~dFxut8xPzC$Y5mw`$c7of8`YPt4T&rZGI?ttK zG}2O?%V>qsQa?3mmhxZ=tACaSg^8+WHrwVeHda>C$S!g$%tN`@%pw?q6b|#NaivFj&x%}h?f7@E>eeLE-i?Ay z^r77odu(5FU~1>S)oX`mSB+giH8=Cg8->E|{=9o`YA38VH@5H4wX;(C49p9C-WGHa3<4OL(Y#^iC2Q;N$@uhIh5XbR6SpxiA>B(NeR7S2x zs0x>VG=E)~H_}HTL&O4?cYq1dkU&ByKmr2gxbV+$d&JTTPz{v9)Yva6*HwU!KnRZ0 zXGvS49OZg)pPZlf94Wf}3!RqKhYz0=QA_BPcYQB^26xEF-wj$cccT*SfkTsf#Z}SF zo&yIb_8go+HTpy_b;H!oL(sa~BXNn}3U<$2H-CrUemk7lwQKKAY~Cx&lT-HXPi4={ zo`X|!pPbk^h0;GTvv<$fI&q&YkBxzHPK-_MnRH|{Ha0yqu@98wz?7p(PXm9njQ()d z>W|*1J~FVc@mV?aBl&fC@ya!ylYb`fmq+CT^7HZwV7p(E56UmgWAbC$HmqB}_RrS=Y4dQh$Ty!whdt{zc8Qr}i5)PJMu2kM8a{EMHKo>dP!(rtZM=ybLo42Vi!(J_$!zzqYsl`U& zzC$?mPB=W@=ZP>UY$7mG4`)+n8^H0?Fm)J?@KRXTM>wg1&KJ~gFes5a07@_@Wq&{^ z0EO?)td>^*Aef;Q05bhv>O`p`oW6Qi{HEXubwzzz5xhVrO#+&_=1-XXwS;aO80h5) zhz6#?pz2-cfU?x2+LQ(jm1w!e-K0fLR%DdIkU>YRQ*J7BrAceRJnWaeP}&?2(ceg^ zjHH|a0dQoha3#4d7BG?Ms!J^o)_+|f2mW8S49E=;^UIdi6iz_NIvRi{xU8f5o0?W| zaG_p!2wFOUZ!k^5h@_cpgahEaD2^{yzn z9X@~g166xBs>T#1UGJZUJsHX}3h1yT6{GcP0igRD5h{_lGWi~?0Be8_OnmxC%_OfsD?gq7}f(Hs&2v`8R~T_7z`3mD}ctbwwQ)>!QTOwEPXdTN#Qi}##F z<*ZfgDz&l$%A@6eK*1-}Qa=~FkDq|cK8al#ak2XN)SIafljkRYOLTS6=B8z$1?(Hh zNXzZCq|T7ow^0mW3rHDOsegfndauty{L&r?FR8S_bOzNf3)9hOMG&WcxnMWYkv+!OK?U&7?%UT zE5m9lJc40$HBbo(xC4ctPYW1!4K<&^<|Kc-2`0*QY8Sjcf7?l5^)wARgF|kB#w)Pg z(YsF?6;AF~aX`A4lFQqQf3|~jXVutRSEDg0@8$SZ$xEcyE1PM_st15Cq2f3V9Jd~f z5&R?y-f0vBzp|MbB7eGA>b28dnr>_cBaIfxQ}Wycah-(LL9=#>=I-Rf*;Xsya?s{$ z0XmE{)Z@*17>h`gF6dv&{aS2E{*snHEXjlG)4(^q&RE}Jutt66_LCwx2G}3_z_Gvk z93uIv_c3=kVwJAu0j1B-R=LcfK~Tq`rTU1sjv%1m-9G#q0 z9;mCN<<5hQj(;i6s~mk&qQsL(|P5L&%IALKNmpJqZiRpuW7`q$lgshhUc$VD^iH9@b$^!oeMgqtS_EXw*N>Ylo z1e$MfGjTSl1^+-zAXwA`y#mkzg5MOIG0tIUtaJ&0M}HB&!deNxmKft>fEpr&Yab(Y zVoG?vA{nI+0G4^f!pP{K-3&n|Okkg)UzW5X0Ws?rxrx-C;iiuypGI=JM&oK4f(2Hp z5yLS|dQ9?6f&kNy=7u^YVgJ;Jlz0r?HINCMpLW5QknA}^z~w~%pOEhY5LgJ>jKEZ) z`#8pQp?_C2(})9i1JX}!f#d1rugjZh7x(oy(~w)B)l2y+>Lm1y2#Y1M@l|A_cP=(! zYQRF3x{kWmqZ8-=!7c;2ln~C*g5-{(Ql@dNwdO6>e}B-dxozY>i>Bpq>3%&c+g00V}w?g6AnO zDngH4)=}oG>F&!p>E#NU3!aF}_{c1I96T*-d~&Uc(f(c*IgiH+j-W&=o+$W%l4bE3 znt#Lgzk>|olpyoJrtY>`|MmsOe`RL-YDCm};eVggY2zN-xMyr!6>J>*zbe=`271N_ zQt;F@RBX*nd>gF`kb6huRYeQ`1#;0(dJ(I>j&HxjZ!Uie+x)_t@6<0K!zc?ieVy4d2*51openViZ^PGu(N zBA`vPmXDhX2B%1PI=44vS&x*txxIOYC}oK97uZ{zZGT&xE*@YzwS05z>6@BWPddU; zPNZ8JyzdNJ~ZQY_AOu<^R(hcyjRXxx4ytSm#El~ zYp82!d844AcPiG%TNP{QVZ|EzE2E)rkcKMOMuQgQoypQvVFA*^04gKi)PE_kybq&OhdN#rdquBqJj;1{^)!e}m2zZBd)%O2a4WYGU4uYZz1PU37i2>I zq$lV11#QR|+z8unC5}up?g*bD3j-!#Dj^teF3LKoHw;6$)_YoJoakW(5drizEg`pa zKB3Hc3pL67D5^^v!90uE)PJ9IX)~5p^sUOSdRXPFf-d;v@u(OIx~2t}$hvE!b_qI0 z5n)t=Ks^dUVh(E|lxGox!5?(w0awKUuWZHrvv(%$C=S~Lc`>JH<3d{$acdq=J7V%E zb}B~}=KFurk?)&0f2Yjj{5@nKSfn8{lJyEQM%Ai$Eptd5&OnP=*?)k(8PUY{~>&TB7eQa?lUa9&rTY<*qsWqYvr)wafCUOM;IR?3#-&A2^-K5@}k>8fBKoW z(oYMZ>B=gF+az2A(kJ66#n39qXypfPdDdI78UQBporBlY*@@YCRt- z=t<{Mlx>SZEftM|WQ#nI3He`Up8i?O1@tOz;$ zW9{tk6i2tjq)C(tY!nwEy0E%3`465ITE<<1>BS!-E$f+aR})F6@EnM#yU3m&A)~f) zl8!_tcYmnV97j@T@)>*w#MkqdqEVOTRA>c0x$a9eu4fwgkd&FQY1a589HY(247w}G z;=w>7%ZtBP(lg~q8|d!Mt2No zEpr#a8Ky!p6=5GNahV*CwuzB+xM!;(87J2hC$qN=bw_`_)vSKlWy8aNViN)Ubn7r`MbVDLsUiN*C{ zH4cO59sp`)GJ@ZyX;bD9xEX}H$N*RZkbjDFA4!stBy_6=T}5>(g}I|~46rt4W@sVK zc0_1bgczYu!80EmPp1fG?4YxK9Wk?Sv&BJTf(Z(pAFb0!waY-9ra+l<+NHZI2niJ} z%}te7Gl%nz8MKK9Id+h12B?VC&9WR>kXnY<^uGveoT6Zy{Wm6dfvaEOBH-}=bx1|nbK@K^0*5|$qPi8M6#EeA;hjbz4x!3Y?S3k`DfzH>X z?1 zZ_C_A4?5wx>`=nx=)$8RlNKB;A>?nP%|2gS6BIi6><*iPqNfXS(%v2;;(yVzXGsPk z)RAL6(j^n*;_F%Fz*jiTIonDT$SHt!Wt-!?(5KAac$M9Ca}Um;yQ{C_oJ5&^pWV(QW8J{s9Yza30|7^@t>kMH9G{rLibEFei^ zubAP&5<<@e0rU$ZK z!mZvW?oZ7*U)lN<-mHN5j~~yZLHo{YI4#GmuSWn1^^aC|lt4!dUZL{z>1Nee4&7xUu?>FPtrl2{@ySu--4*_W%MYt@l?${cze-2oEaVm0w>iDZ(wHlC}A$9{$*wDe+v*Gq&@L%gqeO)Odn()OfJU zg=D886%VVUwtuXXjDoMm!q42O^;VV9w4}wBG}=$~pOUHnydunAjE|~)dy9MrZ`ZHk z>d!-Wf^e2H(aDAA?z(u=>$JOlDVA}2yk1#|*9|Tgbj0h1jn}S;*Ml}*yV)@wyQmHH6X zYSQ6!=zk_k2qUVYm~1dIN5g58$`#|yx}x1LC~FK5KrtgaKE|WX0)8j{FW@6ENV^=u zD~p71--htehVW_@!XtCBA`juN3E@73aF_i_m@7|cLpW-lZ!YANvM_Et+b)b`p*&zG zq}U00MbF8hTmjpp1+wUMoB%J&C@IWk94}Kbdw&^cUgLd9qrcS4r~lsD-osG@S_v;I zg2j?j*~S9XU5EuiuEkd76bq1yJms`i_x30dFfZ&(pgs@rr7RAFZ5%5XI99N$GEent zRkWf43ve&zTMA6~c~MZzcQ?%@%NJjG5foigjQ?TpZ{V!Ds=IOg?DKNp&b>1in1O*I z$$z=Gw3)OdK}`WMDrXcDN@Aj>ZQ7^LV+c$V2ExlQki@28qL`wlify#mrWKVov`^Ba zV#TMlohY@mO`lSwPpL+WiayvUDq32xqWsr)t-bfz=iWOo5b~?-=N}#JdD&;btiASn z+iS0d=T&)LljqnUVAflxg|Z=WL7>S#JAdTaJ&7BgEs5LYt6Sx(o9tHs6Be^6!I-RM zYuD2ZD=9Fqx)f^^3luB0Kx~f66|_vw`yHOy(qaBq%=lZ$?x6pIYz%4s_J6?Nk_q|S zZ%^~5Zw=u3x!2kqvFFGKc|L-E?NY-{9ML+HH=B$u2zJUb8=_hpnq9`!a#VlZoPUB9 z?_cfRZtWdEXUt23508zF9aDP8Yl>Js;0ZQ`jZ9a2w-F=sF%6(Dd=|nVEG-D`5Q`5% zF0(MB_>G$3mSpqTXa6k{3P_cmN}uc$_t2^g4VT?w18LO7y3v?UpH36@sWp<4Fw0W< zd197PGL;p=sldKsBfv6=rPqtsaDQ*m=3>kCxd1&$c>|QaWvCjsP0=eh!7a3d=t23+ zv`dIVWROj$FJ<$mXIh$vPXs*I(E?z5D8Xo6Q%h0h%tmYk5TBY8cw9wQRsat*=r#Hv zbHOzy&3n-W`H_pFuUN?su#y$icfKr2pAxN``NodGmcfQJ3x%XlT;#g>+T_TOVvX zPjf<@Iy;gEV)*UL2H0mgm&_rFU50D%0}YasM){PMyQJlkw5-fPF)X2jUDUY}m?qP< zoY)q~6zaP!<}RM`B2{LLV1H48VO+`pnxBdiqBOy97*~*ITqUX6=baK;Ef`ms*ECj* ze%veeSvc4hg+A;c`cNjCSIWpkmCyTZx8z}`!W06l>M)jWS9bHe?3zhWYSl%61I0_A z6?dLRiv}~~K}Cv}#aYq90oTF9z_IF>LjOIIZSGmAYT7 z|DzMlP&mOtMOQSH)PJ+?OhC6g0o`^2EGYmURkJZy-7z~;+ULv_IJ3Yx(r^wnoC`va zGi6li%`dYXCJqMyOcY6391d8+B!>S~5Ho>l| zoHV=#XC7kvW-hSXF`_z>(8NBQPG4`=U~7R1a~7%ibsb9nAZ2&rKe!Ahol3btcJx+qK_T_l2- z3b+`_^p`N1IDeO0%C$;u5kBlx3#`tfD^q+lm4>c(d!ga+=shit@xZ;@sA1e}U>Zmq zQ#|r$3Bd*uSqO2AL@Tqi!cxpQ?~(I1P}jM;RLW44w_Cz&TfJ?s7$~`ycU^wxW&YHy zKIF48U(09pKURq+n|FjZ`eNa5yH_;!FqGCSOHD@0aDS;jiKOH(Ysoo=^gTY9=IhOM zJ{v_-1=pGMVeDu4I5Xy_Cuqj7A9Y6MX6%$&5FBIbby8EU$+fy@qDJeV$ZBI+`wZ_1 zo>X#v+a(fmnETZ%j?qhI4EXjGt$y~9z*%K%6P{K$e&MHQU&({S5 z_RJYOdw=nH<&aOE`LK-K#@{!K?KL=u^rR9#a2D{fGB&`YCf2C=cr$-rNK5vV zSwVk1`1QZ~o8SEP=l=1-|Kcq$$JRWqN$(5`ScH9uFGd+F_!B5rlY>@C!?LQnowd zxm*@OH{}vl>62cyU@>n`L7o)U>dub)b!+VEHrUmjO<^}bHOB^Ju-)!qdS|FroT&3G zUn%BJ(`%FxY$~Vww+=U_5YKG%fb^bL&kL^@p(+=NP;BRvk1aCDsnIC^@z)Nimt~mb zUw^=t8i#V|WALU2rxTfCHS2Opv1IXs!5QpPc_0&M+>>!{{xkzKpT7*bS1u@8I+UFV zZ3V$OK59<*kv_D-=i$A+C$Xhf5RoXMvdQuxE2>yy;BY5 zoGQ6}xIX3LD-nAcRkLci-gTkX;Fts}3K;a0s{V1_k~I+gqiwuZc0mwycq8H5A%De( z+#7L5!OS7|SkA}C&iVMb^EvxwoN>ly6j#uk+FpgBWO4qKJ;+7O(Kb*O?<@1iUBt@e zXnhyyoi#2IC0*udeOLOvZ8nrg7eaY_aGPC`y1uBTK4t3j+v+nbQh(_S8Z!oo;ZD>? zJ`VC{O6#k*qc6(oZ74(wDn9p$;(yt(q>rbk-eGz)@*E=Md79TqQYJ1_pL&6_>{N4c zh}=@i#UgS`HHWt8YBpTh+AKTk;SjHfXLvo7vh}e0A}C7fg{3H^JTds6yke=EdxkG` zN=ui5HkBqID#Z+lzlJVWFARvq7Z!-c{LtTLFzEJ+sHVf<3)$eew^7tu_9tuR5K zqUXor-} zHw$)EaFw}&!?BJjF&?y;yJ{L%0 z(TjGvdeJUdFPehQHPJVxV7m;Lz2_$rmt0XQ8O5gDNm2SNkmTh>niDpy@?UAQNr${DRndbkHd<+`^XeAEu5L4OB{P-wl5Iub%$$d%pP(ANxj& zUFi9N)hcZ<)V075ybP-8KQq&OT^OO>2$&E)>Xe~i8(gA6{0R)(aFZyZdz?IZVvdj8Z#7j%YV2GnvpSR7TOG& z%|iO2w^*$WLATP6zQx*AbbWFxEbC%^S?}c{PmCZ<2QfRqFlwU_teld1fM|weW$mYUQy_QtlT54q;cFl0xST%uJHDSjN z9RI}My}dBMr4ymT7MCx4xs%g21OvBSS=4tE}7FT@s=4^Kqp2%}@mgZAc^%$^)1MUCNdCZ2M8ZMSEY z9m~NuxZSBM?)2$AJs?bx`{6uiNF6_{Yxpt7^yR*-1A0O&y=K5+acOecgIZ%6;uNSB z5C$ie_|d)dtwb2Vs5R_*BUQ1i)iDke@Tou|pMTGjJz6FEQz|3yO7Bl8vp*#Pghho{ zCML3Mf8u;*`eum{^`|lr-f?ZmIhO?_qOMK4=|vN?toL0L?SUioI+$X*ect031}-A6Gp)H!6-A=(}-(eH*~iJ%Z`-wMh?ImYXNr?(Wd#ATrJ4>7pEF zH-88F+r!XC`S7ukV;+w#Bn<6j>X{%6ZDa%^7Wwgn2zB{p9rUy!^>|s(Q~KatZ?Q@l zzDnPlNnKpOmsYX}rf!&9ZqHiIMF0yOR+2NGhiw8F7Mn!t)TCJxMhIY@KJyKKTjLWv zXIRR%U|XQYu-W#Ei^ON=V-axMrB)U9P=B!u2Js8W85%Yq0>>bdiW>zSN|udejvMRe zaFQA<>IJrpIT1z%#7J4Oc^mHqZb-c2Hm-^P(0BorctrT84ye!xPQ zTVrsQf19n5<3>1DI-l=;3)@GvBxdU1lk^kTp<~On!#o%;CrsH_8a=;BqI^$K9Dl_Y z>eZ_!bY50S0&2`AqL9LYTFYL=8#;vcPWaSGATqo8+Mm53D5dPH-Nz@HX4&xLol5HX z79}UpxH;^rDYyw^u`O_OR|riB^E4%NXi9hv3a*2pYd!c+B_etgt6+AngP?VSGni64Jy*t&{oNG3TiG3_B{TnfN-#b2u`u8T||wA5NR zE?cFXqgb6Wpl+o>gj2HK1#ISE$>q7cjJ;|>a3ebfiotc#4KHeI7w(e!9De|OnT#S} zJM-5}N%c;`9Y&-%!mryp<=-T>;u~H0mMZyzM9#I9NE?%?g#9LQ7Q+`&nGK=8U@OOY z8ohG_QYuRKg|*<+#9M-a><3<8C5OaY>vpKvzmRQ6ypWw&`ObgtqB^fSbzaoGrk-i{ z)0-9q3sLk&U;^mKbuAMALVpkd$f(eA!b`R$-0ip*dQD8c7~b=+v$K1#i{bYkcJ|mW z`C^b*ewSh~=+rhK5EoU`#jc3wF@ooV%+dLfnYFM1nMB^2gHeM%aci8rAYiZg0j^O# zxvs^maHCtPI$w#7N_tF=>DB?ap0V|c&HT@ z2M~11jVgfQGA8O)Cc>qGiE-&L<5E@5DbU>gFXh}ksp4-=(*X*U2~fZkq~2td^4d-X z1VS)a+deEOaN#?B#1m739In0z=WQ`ns=mWS$!B2H5`O<`f`7!6f~PA3zrsfnjY?wd z23e3S6TgsycWuzBB-Tj%?OeA6240ANu6M#99g=J#x%fvCo79beBu}_-769pxG7%L9 z5O{(^At9ndWs&!+k|3Z*b@YXT#8mLJP)LCZg~Z{HIkj67n9ZCnoRSV&&RKMdu2A9l zNQ&blnFJ#`x_?3?;phs_GJPu8NJ)i>A|>&bQIH-`I?slrW2p*ci}U?`d~8V~3+&LD z2+V0q`7B5uS0?^2tALM@qO%XDPuW&IK@6TE$KWYy?Yht*22a!)gD0{B+QFMta&Ui_ zjtu*_lEeBtbui+`lpM3(p$+&Yt|1585^H`XWOL)Zbbr~gK7jkZA?jzbY$D43u@~aZ(VhX47Ocm-&m&}nWDWp==Vyb^&LC` zM+qfoyMvXPK@aT2a1YG9#IXihtU*@QAS+6UTn?Zv2iT9MPbeKwSPU-5c(!dQ zhQfrAb$=ytz#geXFIWzR%TJCuPj)K3#LW|Di8IAGsN4Xpz=QO;H$kgL$O}YSJI=wL zF^u{CxLohR^)VYP9N?6Yru3qIB}O_13}WS)ka(LuTjidfO0_=DDdaeG!U;7oG2*s% z=X&}WlO*mbkAqb8XQX$B(7RnuuMerjWHs6$J%4q3P~}jmdvzashGp4W6M(eHn_r~% zbI<{7dlgy#mqjP@a6Id|o`+|>VUtgf=fP&z15j?782)=Q_?Ppea^cUTI_AQ^eN@NX zQJrWRmCI>%sIJgceuYmNGx{2P$4-?ucm&$j3Gd4?EBwAJ04ZNk1tq6~l2jlutsgVc zwtt^H05`7-&g+7_=A|>91(e1zQyDFmFhj5f?E|^4dAx#^MD~j1_+b&23O^7zPmUjk zTBzVrgj%RbhM54H{#^F{^M`s?*u)3Si?&|42$tOa;?JLzH)aeBWp|Gn`DtW5p2Vqnwa(~cI zkvAFBQysmMgDg0&3fU`m@N`~9*{cZ4zSv!y$iB&cs$rjYECef0Nf*{mjw(_^{`V{k00+}z<*yUrR@xDPfmn;z`> zRXpfRWM8`e5npthxtiVBa`GWgdsh$|ou&yl7EuZyOqvcvF! zj?yz*(^um|7BIbvIG9H}J&Ig<6uI;$06hw7UM$XOzC-{L3{3nbBl?6rOn{nVqFdZ> z-=%A~E)Dl|Xjn3d+gm9Lv#XgUUWhwC*3<&Ft0Jm=8df%)0MeEHtLpzl@oy^`-$e4ekv zq=0Q+yn(nXW8paSWLs!v9)EpvoL%16^W9;$ z8mi6oiI;@ex+MD6x)b1OG64QH$95^uU1GyP60q}|fkD^;LF6y+GeGfx0{%M422^Mn zP@!c&g_Z#o+yMnQXpE`~M)gtEW&uw$E)rA>7-lyDiGrbv2f5;b2E%~MQ|G!owfj6Q zHHKGtgGCtOJGxYuFMstVrL0|)>K5k39@r<{)|c_38ygFk>1FWB zjZ|o4k=Mm{)h(p9(Os4A3R~>!S}KutoG-fhZt4~iDLZ{(D}T(Y2zirV9Id>}Rlw7m zQl4?N!XQXDVow2nnz;zL9jKWm$GHQkAG2aFen)(ifj7s)HHlir&4Bf@KfAc1OEW&} z{+x$7kYhP~E=~N+=8zl}|GY>#HaCg51%!#DG@w#iFq0Vl+87gLX5|tuL)rOfgZ;1j zOub1+d9AXNQ-7y^`=;N1d%wkF!FHNmrKq#NuWT9&HhV#c@m^EoEOO#w0p|j|;3q^9 zw)%@RCn~TSU|vnK2ojYg=AvLBg998j`Li5c0g5UC?RF$k5W{pMNa2COq7*k#wSj$L zCt|wjBvyfH6Mvor0omLT*fPp;WEiz9ThAnTsZn^oz<&>8d4DrVp{s_=`=1&-;XTxh z5Z`A>8h~>~PjFycwZtHOy{c&%yGt;>5Q7jQQl=3*G^m(ouf8bJUV#!rE0hpg`d}h2 zRb)kQ6R)6?TIr?cX)kvbpClp7n;%ay%2-z>ohhYJL2hNM&@@M8M@%p z$Y>Q{C4cbM*|TR~xiRsVV%|d0$^FdSV8#~MnG0A3!`OmsY=MkU#unJI0c*vG;f~GE z#^yU?i?)cq?Tqbn&wp%Z10I|&gYzdITxbU8zYv4-+XwfQFVqYkKG7VwBXR<+NK8=? z5^(u)McNpf6(UK+6{UxCDy~RUaYb0p*MSzy_kZWXtx+fD!qq%h&mx#C5~{#MN~$Px zsanW|N}Pu)LT;a%_`yNRPlZcl-@1){pEEhSBIty_Ku<&`yq!xO!Uy-z#SxRFE8-BP zZjvs3(lJR_lrCPQwQKs&Ca~&};miK(hXX&9HN1FOZ@lV;6 z7JtL$agIV>uYEeCshf?-goF(FY9_6H6nsGGMAn~c1kjYL@Ug2nQ6@YG=Cp=JTpC|sOt4%;D4KR0kd0xQvtRemonx*f%=1$^ zv0BMVtX7^xVzoV!ORV-El2xq^xkG?L2q*h0S(derhLRmDb0w&2T()V`ofwo7__f76 zD9A#HI#+D1vQY^SciyKAIGGpx-D}GDt84Rvm!)Wv77Y&QfUji*+USA-g z1ND&-iS<2AlpPUQ8KQQsvNTAcrOLs4bKY&hB_xNmM^~Gd!D4eZW57muXNPE~7&1rA zPB^A!pAiY9YIafR(>r^%kKwSmCV!Z2g0s6QHRiue5`K%{!1vXp*3(;+;IdgyOq8?j zBV=4W!5n0Wmc{DXiC(k;%@VZM36u+s`ZvK`n{RUAWzS3m0rwd~d}nFfG-5#0SILB@&`f+< zjSkXdU8PXq`T`fHHSP~&&e~1~l%~&Ynf+EEWGI*H(e*Q#AlYM99p^eLOd{=LU@ROW z@>V4Ts80JBg)U_a(+7sTihrIe(|=JZLn1eZ7L>-hIhUr`3j#NXq z;DU5ln+1Hjic`<=OQ6}5)(Z5WUubJB>d;zfFs7JqE3i|CGyzyKw)zb@>^AUH7YZ*s+_!a(!sLl=Xj6x$H5*{RU8=k5Ql? z7?9$GMLG__{WbX5RXH`1MnQ>b{jWA<5)dlD zbIv<7hQ@mhLWOwFrhmV8H?5D>y5?*KiwyIZ15!hpnqXgf5|3XuWH_n zQt2nnu$Rb*K%nhmJX7^o%7A)>>O0uM>vY2JgY5eWawM9A97YbvrIrm`gt<&-bO;x- za=*VG+*F_(s}_$&>C z*}4)8XS z!H`6E2EGC{ZGV%Ccw;?+Ym0rdi=RB>JlVrfj##IZ2$2EyDZ~($=9^WGX3!6$2~(84 zi-T;5ScR zmsnv3z>0Lmmh}b)MM}iAvXcG-=Cy!FbD9-`Ro8%DpMO&HIJ&=t;Z~e2#2TIj)VGPC z6>0A$OWEb^9p>%v{9A$NpbjE2&X?%$Ap54#Bac(4Qz+>sSB#nqEMX(}LGdrh76!M&h@?-{!W&2*@2cy2ovjQsP#F=n=`l4$z;-#{hFwq4V&t@l@aR|hk81ZbUUIvwlYBNae>aXW*@DXp zFDgC`STmW#&vBCQhZVKF47DtD;CDzI^*}{+fxGP>?iS8L+ve0qGd8pkJgr$3H*{AM zKpy8JOdye=Jc@T=(|>)34MV2VZ)Ic%b3gbNEM`v(FgbV9g5ypaGP7Juv{^cY$T58wQF!}L+a(bg;|gnQ>& zHYM=jgn8lsD98B{;$qer*V4zRtZ(4BZEkQNburkDg=a|+hqFYMjM$)E`wJQ0O-#qj ziRo-5Y3rcwo+Jle2pK}d#3_jO=gCM);usO?GZm4=d3&USKbV(we;5aLiMs;EV^$8y zAiO<$Mt7&Ri|=BY5fL@bd^HLVEG7o+#UcEWOD)69e~zQ=8<};D5BKPgLgU<=eR#ynk@FA+UU_f{Ya$gt(zNs<=j5C- zvc&l8nvL3yr22VM&k&L}!!HBadt z8DhE+{-|$3a00ntQXk8ElPWnGe}^7opqr1QV!H>)U0gVOs`6A}kw#E_EnG_)uIhz>tGZNh zy-C38wSe_Ty68J6Q2QL9CKJGPmW62=7~zQePTJlg55|e#|BjC!K83+IlQc9>U=Gs0 z)Al3>>Ld^1%71(vOoZ-C$UNj{p?wZQI|p1` zs0xz&M|DH*slv;<%|#0Pt3;_?}V3l?dzsk-Enot7B=#aZi~X+2~2 z1x2S&w zWAmIsm;1~irh<;5*gycyC*`tNmJcqc(xn_zYZN(ORb#q^T}_k|X|!8hLOD!U;wRmt zZ6EQ0HR8WhNP1-rP31*{1bn-&j;75Q`VnjTaX3dm1_{<<^##EpLrWO9n4HvqOp|CO zJ+#Ose+1-7=LwM+8F4eP&$jck1C~O97En)^niv{|v9YPSX!SiyGB)U5%$HT26g4qI z-HX>GeXlTuH{dBzZsbN>m;{45_WK@Vv&=*Xk8P6$cRBCXq;)r*AIU_Ev|uoHnqcg| zzr)7LQ|Z5DHcPQ>21{xvW*ZI%V3plouK-zQabhBh+>VrF~< zPC;#EMq_-$h-bi;jb1&ONm=ZUlE$VdNXlItPT%%UrzdZIr(;SLYM+tHf>2SO8BWV6 z1aUi0)E<>casdp0a83`Pp$CBE#x-$$Zx#pNP8}6KJB!s*kbx5 zBT+8ydTmK0cbq2YAUT#hX^qlm$Q^K~6nk(Y*qHfOM zh2eg#*F^zNNW8*v3SUO@xE=`~;jX_-Ug?qS#7J;%s;OiJDdBE`NGz7+a=y}XVo5`ZsEl&Hw*JJgu>cpf?^*Cj&FCK1dF^o67Jir2}b2@nD4Ei z=f}C^zYvD$nbQ#7r7~G}7Q8Bl(;e@07|=W3Y4AuW?*SzTHwyZwXLfSK!#H-ToY%?R zVIwOWkwlA5j##oMlW9F4e`i$oa- zFvp5G1kWk+4USai8;}M@>I8?^P@QT8;B1p(I&Vn-$BYs8CBBEuQkxwo@sea3jlG{Y zGN8&&U6S-l!Ku!q{zp$v)^Xk8S<>NIas4%(wnXJ+?Om#au&q@bh*h_Eas5{MG+GQN z^Q}Z@)2W8~Ofl2Wf2!Z3I~W%e)?4aIY_oy_Qj*XouZUi?N#UZiMmUQd~0pD*K86h%U z?Tzbm8I-4)mh5g92{)vB-%c9DH6nhb$8a;g!}xk%;D^t?f9t|OJc*m<%!kY^-f|H& zoUt`bxyTwG{Z&&#!R+tZjlS4il*|PSM{ns|+Khpbk1s-V5!ue2NA>iy>X|94=i6fp z+xHkdCf$zQMH@}9XglsPhL^xfPHd0^w*RE^9~xBX+9173yuq^{Irz!O&-9bvqaJKh zUw$4DiLrjtf7$6ST9Ea3_;3#ML$R$d9>(c?W0Gw6a;i13hxp)ppF}LQNK{&O>%n1n zg~K8$tsx$*;!RjNPOo%4S_Lw3J$=T(Xq7#IuUP7W_qwvdXq65|3!buPaTMx!~ z4)Hss2sSGgd-m|q8ya%L76zSW0RxVbf;-^-X29koe}-z0I6JN+RJw#FAQXeJE>Sv! zLh(rei3-myO$cQofJsR@AxTW|A>dRrNr2;xa>ic{7ODV6K)S#BE0PShoHaqd(}YZ) zM$|eHARF9*Ashl6rlike2#@>On4Ys^3iZl=Fu@?cSls3820AFD~}@sd4F0xU^}fgb;=HnW_C%Jz6q@F z1dG^d(jd)-#!^hTl1ha0$f34gu)7|s^F`VqH&iButAgx%gc~8FPT_MMG z6sYp8@qY*Yq_W#+V<93t(qwJ-#l@a_6b?(j+>P`{ed-DJueXOLWFp7sf0P!`&X9Mu ziGH#A@_1<5+)0JU;Kv&!F~P20zsQ!H>fVCtLXyvHT@qPsGIiwwG#V^F9q1-Pj{1$k zTuo!Be_RQ8r0!g;A->|~LmjD+usaaXg0Wm#Dt|}%av(djyF$_7=yJD{--98C1Dx)6 zC+It10gwq%LWsDfGxSnv(C>3R*V_Z5vV~B!P?huK3_sbKJ<)zn$I;JmrSZ=CD;(k{ zCtVK)K`7_RQGPO(gED6$*^fH+@GKos8D-hUPo8m}?Bpkzt7HI(9#HZUX`g%n)*dBp zfPWz@I++h3lNr3}5lVv#WmbkxutFWlCZWB{*|3^H`{0|Ij|vj}6zt{#4|P|lhdR!P zvDaC)`$Kj<*rSI+Pxk@yo}tIq($ERP*?9KFcpIkM z2oWOfE;2w1ztNo_7`xDOM8nk8AR1?Zsi=SxC2AZDRjkMSf6h$&CF@E_vS0rTlo{OMfg5ec_2(A3c{ z`AwoL^%})$l`CyD*tKyZf1(3mRyAj-Yqo%xnD``coP7E4S6R-`l=%!8@fnVX>3^r? zhN@19<(AKc@oho+YNB9Zv-KYR z5fd$KjIczDK2p`GvF>tY&Z#L5<9S1^JDo=T>(+irrfXRQOjWHhplk$8exL`#R&cn# zV=eg&#)-##u<8MShYy&7tTzIeR(}UvL%XQK;Q)}emZM;n%-AHpWrg~`#M!8bBnoDG zsmhX?rScpFQwVRDORT#zv6f!(K_X7cC^XjBDH-$hH*lk1hMcH2gMV)l*Ln!by_0R( z`0?r1xyn)oeK~d*;j%2}4nmweIL@T0Gw6#gpbs?Y%NF#tLQ>{Hq7wNqDN)v61(@2% zI7vMNK)oXXjx!#a@1y#wn1&wX_^ydVV%|s=C<%gP-<4zoc7&2y$$x`1))88M{bYE$T z8`#E#Lp%y9oHzgaZik|$If=O^AEA}+c!UnnxC zD0xK&?B-OF4w9)5Dn)(~ZhyoYT#ZEVjPpdKhJz|cZ;1JdNMITi7VQcGJN#B*K^VJ# zD;fy%&-iSRqilfh9t#m#>}3jg#%C1tv{V&j4T;O;cIU}S&k=q2$!SlE zJ~>&;N6u3VdvL!Tu zrj=O#q0tf6v$wL2*bK5M%DK_ia?usVL8%;C<4cnRRkoZq@xI&Qw`7|I*l5j z9ZGjv#Mcg`JDdmg{9=(4hH^u!TkAgCf=me&kCKegK*w~0z|)h^26JJproq2^LXJ76 zB;FiMwv)X^AQFP(QG2S@qxQL0k6ODUB%JNElkY|z0RfW^M<5PokW?xZ=TXu13tHFT zZj(GmC=$P#h#0o7w8;`brs~2RIm7LalXgcZe^)zovYl?6mn3Wt9TNodpM=PN!m!yf z5m69YTbQxv3rk+Js>sPZcO#r9n2oPiBz|HnN@p8pd{+s1@*p` zfAzj5y{~cfLT4VL78&J)YLR0cIfn&6l9!zPZ;YoBs-7p`EL6t!`J_%HT6WP3_jI5w zr0`Ibg?pu7lej8sIgb`WApLnv5d5?dcCp1EQ-HA*b+!|5Tc?!UQx+yAR6UP_CgM>s z5t6#EH3HphER^&_U?>as)afC2iMb%(e?BgPY1R+vBznD{jY6!u9^eaQ2nYLy8Con~ zoiw7n71}WuR;)J?1$X|L+|UlNb%}?@11Cjhw+wApC~oF<5_ahUYjQNf&>)m#LvzT3 zv4v&l$Bs$N`Z&-BK8_m;nO>!ikqjdoknoNbnI3*$5vWuysDiRnL0Kv&$Jys4f9G=t z>gILPd0mv(MWaPlvm6s)QspbQd$5`bb*rq6W+uM9U}8yAXW)OFDr}M$;Sf11=Cdp* zqIk+zh7arL=#gLtj(kbH)K88MB;ze=2!KXC>Py&n1`^lBq2J^iJbo^N z-H8lf5$Cqx8W^*IjPHCK@s7*&>XVr7vYvK@*8D2AYC()Cxa`(AqV+{%k@bv4Hp3#L zzG*$sQQsbSo{0Lk+j%1D+mr2#^>)`Nb!j9*m&U7%#w(%XJPeZ~*wqwof7I*Rk&X8M z{}shdQG}JvRTMw-*bAyC%B~v19K6j;h%!=@ShtYmkjau2hm8O?NoBH=^!7udQ0~uU z#{(CnP}=qXf+&>Zts+E3Ez%I~6Ysjr@6lW5zKN}cq&;5! z16bU=^(~jXWIKCIH958Ce|A-$W+Lib73@-j>b2}LfJyUhL=mozpX_&@K*I2i|74)! zr(q+AL>-^QQy{#XJtel+=OhCs+0z(TB$e)#XHNp3cggi$TpvYOpY_}%21v^&z85!g zxm`Yo2lQciGy#DRalpzN!r4f6$Nd)3xO02`EWM+2g@i*NDNhFQ2l_*HI%F?nf-#%@jm31zysHb7kxm8^;!^A9j-= zOcxt)z|F0L9mGbM6k$**vO%f3M6wi(@CKOaRG*VmOd%O*Yj#Fhp5t1<-!xtGY`wArc5)Mpt{d z-_Qw~azenc8qfA-yQqx%Zbutq+R0C{@L2u;r-hSq6S`xbf1FhC#}Sn!f55EXu=hBe?G3dcoo0AjDI>onyJ64NJLCdp`xuNeOHak}$n|G`)Ot>fOjul7fw?T2r&J?ohcOe??vtyA{_$;WYwv{kZqs6bJ*8 z5tU(MV6lb3@ez=5&Q5$%*>JX`Hz@(oX(ctBQdu7Ba(#wPP_1(FYyqkvc`K>nGQo)0 z+u+=dT&P!|-X&!#*jI2MRKqzLJ3Nzjb27t2z)eG0f5BTHX80db0L23SN(z>8FpHKzb2IRmtgjM&QdVpjGR}G zvjGTBs&oh3%zr`vkRHIzp*NeO5!xMH#EHB=`q|6|t_ah%`TT5GfH(+pJ%(#OUiwTfAU9&!3#KiUa=rwy=M2P*X&kwpRnq{u z88B39e&N221yYTYc=(5u4z6wT&hA9~h}OZdoI}HIBKZh162qJ*nkoaR2`Q>E8y%77 zNF%;~PcCsvdOyRbaajiWG1Z)b-|ed2FHZH=7mnfXryUlx;)|HS=w~m zJ;nK;=Qbquh|X`2scB2hjhP00PYbq5~(uKL1G&kodzTr24Zy3 zc!&>XDwC~8cD^s59?rxhDef7(NWqKprf`EJY8+BcU*rQ%>QuTut|Uy#X1@Y1oU;9Y zBI(|FZ707bWHFajt(>Ao>ZZ5pHp=p&^7+aeWy-VEa0-V}C zjNckd46H8i6netN_apVeX-C;5p5!RIfzA;gobc^z?&rpsJc6%6u_XC)IUi|veEu;y zdxx)&XTJXIBp6_SNJgMK6BlX1J5QUu2Oj4)nSL!t51nHUP!lARVLs`>Yx|iRvrZct z0t}rNK4#`HCk@ZhY5lxT>q!ey_0|9SaRrjSV;VNQElpIKAMqKzD{+QZ;4Z8RvLL9_G9O&5vg3M`it4 zK^*BU_-fkAUWTn7Pjc8vMY4PUa1Fg^hTg9qRrF`YDiBNW&g&82VKPBVO&mKkRXT>;;jgifN8i_}N<OhJx}3BNyezBOdooIFy}=1m%x}{OnXj&koD=IIfRHS_sHco&^uV zc`bDu4vo}tEV5V+*<7RjlPu>PigIW_9_gx-URcy0qloW+Fav6OtwY)#%HW$isR#9$ z-4<9uBrr9hDTAA&W85CX`K8+;z1K|m6R{%RpUuFDpgA4CCj+C19}SHnzBhDLZ$8kG zgL+%{eh45QUO2>+F={*)YU71x6!hcrgt^f zfI1Vw9uYaGQY9s!5@UnX#)ilm8$29CjjXYOZ++bdE<-Rx5KbgG{96HXUT_}O-shVIvV zyVZq%Cw_(@zSabGha#Ho3Jo4Klu!Yni_WR2bWTMjITiU}N$*nOe0#!1F;TijUA4s* zGps+9%b?!f)vm>w_hbkG35=nHNi^X-|&B)Hc5Eq?gE zFs+Y{Q1={+=ef~Xk1zzL<45(}$T~dgJBTWOwyuBl9Yj?YQ4jkWq8{-XQ4fiM^RRCb zRVqE?YZnx{{!9O&P_>Xp)qh>CW zc_+shNuQJ4c0HEO%i3OGZr<=`#-8n%c2gejN%_w**gC_b#W}}kOR|0QeQW-R)J|XV@e3FQJxG_ z8h5%luG$v;)9Sw%Q`)ccOzGo#?d(_QVoDWWQaNPY+kcLXAL@*ZdmLnZQjl?%Amg4^ zWZdN-&vJGCr)4aqOJPSY{sJxyX2b8!kT35fwS=xkklN#zf8n3a5}fBHokX;p$6^hKR;& z=J<{b3x8K!91ZR1U%&B5pbE{ z-;L)&zY;z~_;L-U#SZQT45c)GjzQzz!VLAUXVjZFtal?E+r~V78UhX+7ln7lJl+-U zEDdDyI*_5=RTqqQY~e{VtdsK&74{8bWGWi0W0S;M9Dju&U3j5L7wUan7w5`?b0uxf zu(Kidy}hOz#R+GG5weeM=8@}Uu~UTnKC#_C7P(Fqk4CPO#W5I>6E;FyTknC$O3nM| zvZ{S3A{~;A1mwtiVeFyH8FIOsF107cSOkBIeyQ$EsH2&SDLYDL$@AxMbW-A>Q~Qw~ zg*D(Jnt#JlXsm=ZBiJ$74?U%OzP}5<@qGU@URLJ&C&Zr2-)@gA2)A>MZ1zrf(X~gj ze>1yKXf1_1af07JX`iq?+IfGP-yaBF7mI^o&c)(!?x@*GHFy`K&#*EhdTids;$YC? zVsRj7ak1DJw76J28MM1tuz6g3EOrNiJx6)ar&OE)9F903zrJJb4`yz60MF6@V6=xR z|9H-ne=N#O^(XPB%bM~}I;Q+%kumj8-jsi;&6KaK0(c^C%0Jd(%4d~PyIWA#w7bO_ zxX|~RJ-O#_H{FvmTrhw7C)nJbDX3sJcY)ZG*zM97`a`(ya)CQt*pHp&o>r-1A6B+_ zyDoBzx3(mynJwO~jtK{1<3t^2+qkC#yN!D$XxZXDk-d8^$ZhdH%eQsC$E%4-pf`Ds z+9fZ0ld_BCZ1O%EHfPDK0U^vL?<}Ejs7*F`Q6YAD#|mbb_acAyL(vM~5izp6ydXrp z%e%9Emlxb4zsvhkq!$ga%X=&^Cx6GYlfV0e?BuT;RvlN(I(`p1Cx2mikf=<2j>&I1 z1#CB_t@pU|M0<~CPuQp5&wToiE7zz0n96+m4+Y}W|G4<^9||O(3$Bl8?_eMCN*tg5 zGro1|KP@G9!nc26J4#yT2A?BD5%L${OAp@fM4IOQ9g}tBYvgy10`CvZQQ)H!4eYS8 zX9aK&2Hude)oVc2=n;>2bA0$2-ySMHECr^^aHT;xJUkxA;o<#qG$3#`Dt)c{cigDN z+mEYG8D`XU>YC9Vyo zGgza!vPhpPKB=szs$qlAI9QtgkcDQ1Zuh-FABd!{<*-=JhEe7=ayAT{{FMRh;jiQr z@*YI>;`?TKk%#GqG{Vyj<3?;`dfyr~O1OSM`c{^6IPN|$OUMNg>kHbTUe*Tn zx|X1|LA`&R$ob;{DpD-n+o_vG6V|rjvuz^~H|d%=1aeZmnvA>1DAIO z+#hZMw>_^^$j&Q;2KwU6xI;slLy`K9k;Jz~lB&SB@>HW&TS`iD3{7HQa^+`i<8NX9_?sN>GDuwF8rtmo zexs`I3dGqYhX5Z649qORRk8}dX^fMFI`%}>b)c-~9VkPt z+V@zUvem+KvSwBoW>>%Im2;D_EWvRW>+uxb@tk)Wio7SCsz!}98{6?4;JP@?ZC9gI zZ-#$T`F1N8)NX~haH-vC5}e>1s3`Rsf+VwQNk_>Z)RUrD1*cWBXE53R1l85^1l3Y9 zU&1jUmP31|eSEl-0~y!=d%lS)&MluoK%vJgUG+{5~?o-uPV%3tgKD`V() z6z^b{T$1Qw{?#61ewjPv$qF;1y2T9Ux0!#zG&MWv8EOVI7-$yEU_Q)X6(L+j8%NR4 zjA1^EVL)58u@P8u(I~mZOhn_>gC2pkP!z?0U@R1TTajMDGFH*+^p1>%t-lA5G6b@bEZNH1z0?d?%?IAAmc>ygy|lt>^k+Q~%fpTMmC4 z7iG~Lb-H=Gr6xsv(D>&JG2sW5jF?n1ViIa%;+^m)lmV%$tO!S1uprgQ$iM@Mak=2@z0=^I57%ST(5H!?+T6$u!cN zRBNSFY4r4^0l_0)I9_&^7*RD@?16tb=ouv~oL16;Iaw@yoM8ZSgYPcQUp5(D^Hey(XH2a_uDI&OU}J)>TTSg?4FNED$!UjpCoe6Y=x2!^I`3o`Ukk>rLh(gR>&J!3wa}}4kj>=1tJh5Ye5H}nUp9M zWfN7fqEtb&UMsUEnJ_8#)&h^2ZLNN6`)&jt|#qCtwPDylKO&k8^F-aO>kdn>F0}atv40Nvku%7j3#+ z9`v=*l~u}SG3k-#`+R>`V5i8NlX4bMe|^-~{juuoVWR(h7`}VHKkiHT7dbpH5#~>b zs?47p_ALYt`#RhLfI%AbYZEWyyxbJ~gPD}40pc-|Lhfhp*}=^T=Vo{{^~P`%gMmg9 zKWUD#*%KqawvqZd8>!Des;phx=0Lt9dpE}KpUmEyNrPnomWO|5AOTs+1FQ{#qVxTo zdCS92$MV2dh{y4MU(WKt<^pSWvzCXwc>H)~d9XH8Gv32N&hl_5Xt6xNRB2P2dGYUKmo1u^JkG@1bl(ph6RI^s74?cgJg)XoUi#m1zJitRdN~bqQ zv}9fraHl~2VXxA_IiZA1cIe_UWxAMw$!qPR=XTMvUHpCrFbTUs;t;RZCU{C&3MHbb zWi`~%Br!(8Gpdc?9afnD99WgtMxo>uPW!nQ;v5mwCu|QhG{ytVG~5b6=l2JKHiv?y z!MbN$tmA(rt@11aL%&S77w;bVZ@6ETyIsfH3=d#4#vv$u6nJCqE+IbBZj7)gOmAN#yxtyA7%#f~2vqGG<>qwjPv~Azj7_@Q4XI=kAj&a4;bjIodawjUtT$BD~ zP!K-#MC9Gu5;w!l`hmQ)WgnAXW+x3ipjDUsN;Keo+V-+nlagj9e@B#NW3fx0W2Vn1 zed(1^;maIzk7ERu*=+}|E%(dI&w%eoIH3IcQqm)j| znx59N>3!NlBcqyOz^N@XnEBYX(8Ll2LU)O$q@<^$TTe+v7LgpUVKwitZw)k-fVc)4 zCLlHhV8IE8mRInMe+{E3=zGw{A7g`p3@Ic`hHa)>BAdZBQ_-RCL;1#NnQ~B^5$gJe z-ZUcxm?vScGAm!S{JoC$r~~~LWi?xK%s%WYc&tB@D$Xn?jB{0ie&cH~5N1`DJ6ESG zTVeztZHi{W1R*hNX2=1b_2$`R`x`CJGfKjKC9DrQI_Z8te>)b+3Z$cxKAF==$2iOi z({5XS7l)jgAvcd_TB&4d)r#(;tjuby6k2S}>TseeZg;fO9mxHwL>p!Cy~>B>ZLG|3 z-wZ;BcN1{(nH()RkVI0yDJdo8OaEtSO!vZJaQQv>nJXKMT5IbpCC5T^E>e zSnIl{a)QH2KNAeb0HQ7{IB?7WEjXOS`)$GG1&3|Hgo4BAyx?#$Cpa*jh-E+KuvK`s zYcPn)87^$}91fBz;fJR+!QZ530^!dWdRm`%6& zXWHbJ^9y6!f}Ak6Ex44zn14aSSk>yLRTK7cYUXO==%(B90SQN4)l^p7LLH9qv^Cj? zyt>WLi|>SZ%^3nFiPbAFX2`NaWfG2Xp+qCx5twL%7bzl}z_`?6rf%#t>c*b-XoTC_ z=yd3gQl{(*RP~?tS_|u!CH^dZ>^;;T z2d*yFzoNYON?VviFCdIaNzQMDae}_T%{xH9wiz-2muIs-^u&sYkc2DTT zf5ZDJ^^dW@f(OU&U^*V?s-MAw9(n*D-{0{?`kUj$@5psfj_G^+#eqMfFKSL_`gCXh z5--ZqnInIsI|H!b<#D_$>7M?keMz_S{<%)?X(XmUtCZi;9e@|fM6#~c_j8|uaB;BM zf3_@D9^Xk-KEXlsBr@Dq6Lj3K@3D={vjbK2eQe60i%; z19eQB1pZ_Ly(=Egjnf$)$Mwl!`Zl0Jf8g}sSL_4bgSXiS`jcNa52Od@oXdkPQ}dT* zYToU~ubBwpAO9Fb#R6QQ{S=-SCq~#;PgLFa|6m+3lt1RTpy;+gq)M<+;S8c`p-3J4 zO^q*$hjUe?J;SM%tLF}?c3 z&R5sd)c{{Dq^pFluA{3y5ZwAlaJzWToX#}wfFJ)4>GC{nkkK}*s`N19q)=P;yaydZ z4vwql`*XRW0o!DiyP+5^(&{|G=gwU979z84-Nate*rOjq-5@Unl{o?nX(HjV_zXNW zh9*jG6WJ8}g^Iscbf=(w$+j%qe+n<$VyRqV{3gITW1a)P`62WRR>&V0Opw(qlTf0o zd3F*?+_eN<6aSXB%1(X6RQ3}WQdzlUWk+pgb1$T_Qpd{n+sdxIkjjc3E8BH(mGO=) zEtRVU>95oI>wFdtcm)7i(7@>rn+C2n4b&%SK-S3YmZqYP{eI@d7uD}De_xsI<6{?B zS)hS%WjheU79f16t$_;zfK0ZKnMc!YeHjP57#j$!`U3E)(40lz&D{Qf^ zYiVF4IP<8R@1|}^Pj>vmR+v@624=_-&44k2`ik8__Jyo(;WwO9e-DEgP87BUMfTub z!IF^}ZH1=Eaqd9s#~cDea`t(giVqS@xF%7{xS23PGk6#!p=rkFgm3jv`?C_s+?Q~U z8zcCpUi>FYbd`klM8GxS2+wL66jf=jN&5I`ljJa1vzGTaeb#+S%li@iRdRarIkUQ0 zx%TR^Cn~>0bOr*2crFnPLm0j}Z?nn5ToN01{8r5| zj(Lu;Ae8w7yl30vUo4>p>7n0{6&s}UKmr4v6Rha~6((}%Y%b0v{f0JP4RE0n3->|# zB5*c5fN(A$e?lQWzd8xB6dHk~& zbl4W-!tA|OyU{E~wUltTkX;7RbP(*WZ;*~)W2`D0f z!j~)3}<^!uEFRs?AM0zDCE-Oi;B;e&hV;)nrP1TXCzxcEs&a7D7A zBjAdz3Klxxim-1_;QDB&LV)YAXZG{!;(n1kM^(4k66DZLPW-@rWixCBvN;>*Gd}8S zFXUrBe*wqMqC4I!R5;VKyU^+X819NA&-^C>0LO~|Ba12G zf2>Vd76A3;E*1P6S;B{qKJVSo&nzWHq6Ef6o^@M;n_CKoN{_8P5~~W+1HAH>N{Glg zPY-gd8PYu41$LR>NM;7Fls;8A&|oLMtG&5Yc#*eCHev2a^w|{9t@V0av%0 zC$+r*H9?(cHRoO6&+d|^C6c*oVkk2HzOByZe75@ z>|JX6ps?wSrE$v3;o@3d<2@XRErT?t=;fL~aUAS7Ny#)sJ&ma-6xc$cF5qhiaRYMW zP$B?tq@UAAH@h?tl=b*9pzkxFpFJ_?$CQP=>I{2Z;szFL0DRv9KX}1F{-Fy3e|az& zko)HYxzesFvXl+!7l4aXih*}v;Vr#o8hR?rdw9~*f-*)g#8hC+$Nr?#2wei_fI#B^ zF-G^AehPSHpUt=^h-?V?wF5m3w2CmMK%uT+H3j^xN^-xb$V>Z&MWsIA$A7DpG-Eb( zxR4CIWNDXK?B!;Vot^kRBcJfKf6!rT8MCqs&gE`ib~-~fn0tJlPj@(kIGtuGPxj2< zn)|GnTO^vc6Z*5$>f9XG%vlhyBVN)B4AwA3mmcdXOUwi63tYCO*;j@hZU>ZxIBUIM zQo<6fQlp%6HJ-&HrLk!6;jytXIFGuhRI-@VXAk)FSd^+~7*!RQkdk0jedl5G&yd08c+xLq3kd-tO_hvnK80*^?h}2IlClE)LV6so{|Y4c_b$j zLrOll8&ck45x{?eMdPCo_HGpk{Pskr!dkqh{>wi9rr`)btiKiaB*ZP2M&^k_D_vce z?NqaPEUP@tNC8XMCiWy0f7&anx~yN7vYu16M`KWIW$SNV*c3aM(n2zx_dIXwIM3Tu z4xi1kQF&QxqFENCkKFnGYvt^v8A6agFx*uOi}IiE6^p6}x%QLTtg6?K_z+%I`WbUu zD^SJ$B2O`kO8*(pr*W}Bp6tVuZa&kD8K9E#gUx^LH;+oCU*_E~e@>s0aAsb87&2Vs ziI8kQ2^kC1vHjyX5&fVZeEd5>$Jt9f_eAXZXR&YzW>L2nrVk;RY_aGu1fP@+12l@8 zxt6-~&HqDeH`0Jfxp@If3ZAbk3Zx=Q9NSV+=vEXs^x2TWr~}G`7m6}k90TM@X~qt& zZy~SQ8Qz8VU8-VKf1mR~XPmptV{%J!E9-H)nNS#(9{)7VI~?L4NQUK!c>^bcJ&Gt$ z8rFZd$+jqk&W1n*>1n>E?%0dDG|W}A*}FqKUdiaJJ4gJTEB&ckD-UU%x;&?CNw|xH zMsb$@3pR=*XB!=!7NeU1HF!mTjz(Is3F z>YwqGE(9?m8EhCvOkwWGHR=scVc!VrR(kxitj;%zE$hFyv03UWc*+k5T1_ORy?iM@E8>>aSA@n_PYsqHNqlpHv@1?44VY5Xn0`oo ztTsw6?)pJ#7PBH zfTO%6o`{|}i3xd{^~&PLyG8$C;BHVXW1W-CpjceC`nS*_HJ-u3Hu{jGG2-p$tUX17u> zdUu(AcUdd#qIZ|;cbB(PEqZr_es@JXy^529nT;?v8&iMSW+SPl4}#rPmy<9X(|k1I zBtkZ#W+mx=zL{-orS$$`x+^V5c*|QxYTa!4D8aQpSVmu!z_)7jaRIgx;#(2%X3muw zE+bjGfJa^QL#(XZva(>fS#4X0^ros=Ss};DaHLTV0HK86x)iyD@018y7bKSmoDyN{ zvg8t>QzB|zoLnMuN)%d`D3>TWC5r6}l}ZpRgCQY*zgVXUEBj$X50=CVNwgfnbV(~H zaVP^q3dk&8T&>6H;dhgOJUcz|+v8sS9q>=q4^G(!d+91|q>sI?rNr*m2M1dp9C=?$ z9jEMrlkb*FO)D&-zJ-f^fZkk_9;2W7ua~ZhN1(!_MqJdxvNm$8qB{5{yLW(#XYI%PnB0;aT1`$%8YRpJVPc^0oiv?_upBdq)jhn+x zvNsNNAw2P**O&nbmVVjzkInJMRQf5A)MH*EVg&Y9=?|jg)TFYeF%4-=P#HV-#w1|U zN+EHmdsz)T`-H9VDImGAN6WUbcz35hHixKxTZN>XOQqgV^}`BP!h%&m%)zmL_kfmD zV_uR;^+sOG-ANT>7RUdn9sh>QlbEmpY6)#wz{$1PYo1XrRh3} zb?MekNe|1bNiS7Fbx%p(xHf&o#-|=hW^5z4!tf8Rv`)B3MAXOOt{C6~Wc-I(AUmah zt6YM(@4>wW3X9#fE6c83IoStq8hjTR#sz(8bkWuW54Cr7&3^qkH5Q#3 zFK477yrZXrG>U7CX(=bX5{2Doc)iUsunGxUL;$ho8`GI8G$E3Z1Ykvff|)E5%wmzC zpGAV%ED~JCBEjWaB$$x-4<_4R4ja~_Wq?D8cZ< zdAHI4N8!rwLK~nTRC&F3Enf{#N3Q0p()L$)SK&BU;D#P4V;fd+fn@tD{OeH*+%(E? z-FP*TX6w4Km?`!`HpQ2J(-$)_r;Eehu%YIQ*Ua~COF7(WCq|&%H(a`Jy*J9*dt*sW z8TXBHXZMYgF*U**7HVfJDvTIcvNhl25KPp}RY6~KI()*|l2ya0&sP(R!|BVUR}6Z6 z2%KbgIry+DT1aKb%-sj%2!v(r8`83)qqL0|7o}!Y|CDtQp%)T=Vgxw_w%$}z3>`V9 z_+{0Er5*|;C*rFAxi%f+`pkRWt*`q*xQ(SP&AjgFni z-Xh$==RJ%bbWePkm3SmmEv59&@o|;gO}D+5u8(|BgL*n!KB*7dGOBH!ugN>;!O1#v zrwy$;C|P^bZ-1FB0J~X&iPsAeCeEjo{4z; zcP?lm*t&mxi!brQthzB>o%4-xl25$&&jM9)PcQnDYJD(J8AsKi73|pSneaqxucw6^ z8G6A1=h(G0G`of&ba**tyhO|FjUwby?T<^4*^&}B*a&EC8EKRgo%cCP3hbGR-Ms>P zrgARdg1AmYxlIbglj?meEF>w9%=cg}z^+G=h*5!SZA4Ws&Q!z4f44jGc>XSl#Hf38l>C7Gpla+Sq0@r#^an{T~3^*7swvzXnFoVcq79b6G!pRe^ zB4ABf5bOz(DIB#hOr|{1D9G;3_CP0Sw(T{2ZV|Pyd3393U3S2wJ|y-Y@VODpkj`lJ zdjV8oiOQ<8)9eY8-F_c`OqL_a9RE_fT|pK;9X35t2GR;ztm*EXEtHqme1fuaQZ93e zW{t~C5-w^2xYRPZsLpUvfJ>Z*$CQ}I1MU)qfya5Z5PPteORmevrF5$7r?d2{{HP{F z+0S1|j;8}YcWbX?2Hx*COA_`cOMknB6nD;hOC2e6PV`h2KbmTPTPPofZWhXiZ%Z1U z)M80@eUG1|dip(`T(ul7w&41(1Fjnkq(y+S7+=spkCNh&T2E32;qNg?YHRr~J8z!&zD2 z&0GRmhb{EY)6O$c&}|o6W}s?kfFOY+Gf|@qF|P=wjn!Thrd?)}F*EHlOW$Q;vPEW} zMIsE6Y?k}`5ND0?1-g8mWt$%InC`|IUyqXTtAH&ddR!GkS2XgsWIirA$-myJb3$_# zWSDlV2!t#fXB9(#bBLkkY;B#0Z8;;hZ*hpNViYd55ZhwLgbEW7+JdvFnoKn%(HPU) zlCG(kqqiIi*rB(E+~Pwb=%tKfNbdEb#sbN_UMuR9>t^Z)If#2P>vxeS-jIQ~Bf?rT zkYNBH#$g;NNL*sVfhoR3Y)X}R2plLZsg+2*!!-mPo9@ZoKN#Sy4WU(_c;fg#Tg=};l^4lMC zpm{9o-xqy-1fZ~l#MG>BDMvhReHg}io|E_~Fvv%?HKy1Zh#Dlna>hhQZqV87m1MVP z66bIiU~=wg2-jy63)5Z4HGgNS{J z;>?3zKwvq2Uy%C=zKQc?^nE1vNErSUb%DnKJts8#96X6}V`?%bnMx4SD6Vs!Q!zxp zMY`M$k{3&5APB9ajynw1kuF_frORY0uSpzqjg@16zDePuQZ3I^|O-KUkS|pjPjVO8% zqKIUTJf<=s?U+2|iUkm`#OrOu;p-)vfRd$&lIej|ZAoj%a#Z2OR|R{698zRo zf?0)@S(y(_h;%@5%z-4cEc@+YJ#NFA{!R&VIBb&favoz263q%V1nFwcq~*>8!9&Us zmqkSXOXY~m0D?e$zsics;|^LLEcx6a>T?a_J zlp{1tp4RuPOlS@+iO?KOMri)xp?CdS@!UdlR^;M^=AtV!YXDz>&|H=@trspdGuG^M zAiq?_C^f~cJ_F9u7VswS&? zw&b?Alc%?KCQoAydD9k}EA5+aPhdfEe_h8e~*iab}69tZJ#^)kk1%bELQ#Ea98O0zS3#sqRg|upUt71R*oYRfBUcg=FQ*v zf1A&J{43sT`yr)vW0_0V)GW7L5e~?1Zn(fo ztzokhNvxPpk2=$EyR)Pto`#>xrXiYW8sZ5=w=g4wJ|Dv?5Um6;`1pQ4E_Gp?Lb$Ae=y`Jr znFgtBz-1HzmQh^gG74-sl_p>mb*Za90i)=a*WJ&XQ4}U*6a{7!1qqd7XQI#H6CvZy z%#1*VmxND*lj0MBcMdl3PzoH=e;C0}FNi|~-X&!a@x?O;{)Cg zAp?4zHR#8aXAKn@`-QWH_+nW@JSo;t?7$kLi(?JZMX?5ED5X4SC<|vWS>SxVAsuk0 zj(n7kz{XSvB=6qRTErH^s4G-{&>gbP(H5ttp7N&#hPf+e@s}wp=83I zx`pO;+Xr3ppliY^YEngQ!U9z(P_Yi-hO3|Cz?hAoO@nrg6??f)}IRbLimuckN4B` z;^cjtR?P`$eLxx!8a?MAw9+y7_#^IARiA>sL88pSmytb%_!PAS5g|y2I_Uz9=P`tr zo}NDW2jYvE9>D!&>9hJCaY`Rj>LGuz=?uPQPsAj5C>u++f9^FU>|JUDu&|dBd!=3F zhw!+hW)brw3)&KMSGu#Vw|3znPb8zzbb%8ndlF7R2iY9Fu#igf6G~TkQtFD^V=z#o z2YwgpCrnTLz8=5rg}J!Sv(4%rWI+*I+NVl=$>ws>_x-KvA#syb#!XUJgp=QqfG`pe zMh1jYJ!nE$e+k*g40{?O;8x%WT{Mcq0%!7V3|l2JY*o7Be@YBnmCi>{JNkmXf9K(f z9S0=_V=|0D9K33Li}%WgOX)$GJ{z5m+wd1lNHUMl_!Ay2G1=B+dr14)1%k+7b}l|- zKRdYE1|U)rH{1z5pyx%eSc%aQ@nG3y@EmwyUt zTOiQ~UD$`6VL#qRVOpo7_5Qbl{1RaAXbC~54`xkfdOkbR^nA8`dZOnuJxBgiPtRvB zczX6^f8>%`P$!z6K^y@aB5^|INJAWq&%9>_9)NL{6F9Bc~_QH-bNPfg;{^wxpL_9Eqm+AHc2X%K-7#{>~}e9nN; z&K1umH~jv8EP9nL0eX!+MI(CJOAkJ!hq#ZRm%c1LnZvhBfM9=+g+!OELKwk26d&cl zf7ufd%#r~XLsO1|$Pb`Z5~7CaKEyob(>{{6=%?O@@^B0Vj-kLYk}pY8E|3f^Uk;GG zK|e{OXs9#33<2|!{D3?cCz=7MDq+3cEOeZK!bQx$@s=4l^3+AmfY8nXe~wkr0{x`N z+RuFb1PrO9)!cb3`CqI=SP@$PXecrIe-LG~RUn**`%#Z$O-(X6dO)}YaHF8Ri}g@{ zr_zi@hwz4pTj|KBNMFTKO_8+D+|SeDxlMLoj?Imm0pf}t!X2wjkGzo!3~;1hl`cS> zH#|7vaSUW!a(v%abaBRWdFxuFAYujb9xld_;qIr4^*c`ANf3(Ex z^~MG5I$>nhIFTVaBp&l&bkxLyBP}en2gelEU?W3uQ$54^NKsXDAMt8o4A4B6V=;D5 zo&*{Nk;m7fAii8jHZL`l91QU%K&kvOG7&lA^9MsaEP-OwIm#B|N11pf3CHE{bYx)zZiAS^wdI7CPCg6es3~;eG7HQf0OKoP6qZB zyef70Mts-v-{@QqpPuNO&vFNnw)AiHbM!-}Z`i+Y0-QK_5p`-j+ci-?-TB`mcoyf< zdR;x~?1E3I^Q0FXN3=aJOD}khE$rcFU3%HFt%f2M&s*Z(Xz=&|G=uGYG`>r(Qr9sb@HX2;~e%ka{rd zpZ+sGmzXx;Z0e^U*S9lq(85oDOW)4sGf(N8^ld+E`+oZ6Kb6}ns+`2~PxS4N!LIM8 z@7A{iu;Tma7yd+U7r?sirytX|S5`U0@!11%yHK)n{e`{dyjt(of4A32W~_(xZJ*?} z`t~2oZMUSd`KrFHN}ig({$tZ;$xLi-Ijr*+|CikUtq!yMJNo{5Ineps$L02=aXuqj z`q!SD0nH|i(W!FsS=SPKSTvUst?r40XHjZ~CkjZ5utXTGxgye?a0--L_#7nUD&k}( z$H#Fp@$e_~$;3C1e?$cdlrgcX&vJXqHCIF!^>ixqXO32Q9}aiUSe~jR98G_1Y%JUe z+x#pnGPGrSa|8R(_Cf)Q|HM}XBnt^eunL=zG~wS|(#EbcC<$(^Y30EW z^4)3{1ro&!5&^#BT0}jF00@L)Xa#!P1KmMP=``t$gtU(TQmIJKO=tke#$jKIDRW># zLy+JXF#Mt%{KAm_-};~XDDdMJ*o7Q?$2L^ZjtLo*{8k9+EC(z}cEGexAbP+ghe891 z+<{;iFZR43f1v-j{@3A={?8B2GpP0{PkYZfh9{@0ibHX8Ix_}Vl7R(w{gjhHd%J8U zY?5${VfrjP)6f*d&t75uAjD>qwMsb1;4C%NnMTBWV(i?4!#V+$GNI)yV*Fl%=n6l@ zA)e$MmC^@&*mDGGS2HrleV9Obau~i~tprth*e5@;f8F803P>I1LoC?$ET>SQy+#G$ zrv$f>W!!erdSoQN4INz8(b8!=w+{1B6a@52tBoQ(`LnIVT|egWf7J>9)9-P3AXv_r zN16+iUs6NiZyk?J+thZE?1d%Q*j+@{x0lLm{ zVhJ1oEgH)qWdSKOZu4r+f4Q6U{U?PL{rUPyK!0H^D%UPzlU|W3e<3b%E5h&?jHSh% z!`GsVW;5v)XeROhF!_Ph)2HhxTv$B?TTcO~RT`yLTOCDIc@zvsN18>ktBwd-QQ5JR z!NzoKZ@{PF#etqmpQVRqKSryx$V37T5wpYhGc6z4C_ZKXJ z+nwlcfja~#&#CwNQmu%!!i1`KicbuoG>m2A2~bIbWs{zg8U|rLJiB$clfIH40w)8L z-;yMMyGZd%8|kA@8xgG~@OzeLq+qwHLT0>i7Kcd3{UCfj_6ZYg4Y61F?pHas8#6?; zDTcjR!~hua5w9&;p5-9IhJx_)2%%gQUN6&eYM4*6JU{?Jv9udQougs1v>75qAao2C zx8*o6XHQ8z3xIqadu{g1ZJXGPd%ia2@<>j9nvw7*PnuEI_mH-{i9~-R8HKH4e-z}! zRF*qWUCO^1U%S( zi)#M^DsNL@O96bm5}lB;Es?BMW7B7}nroEUEPt#Cz%(~gY+LiGik-vBr@G^l6XjFA zin^GNm9z^Np$A`!v3GE+lqEchzoQ5R#l9m^c8DGG(Bb73Fb1TR4e2~0aAgEd_d(Pu z%a|~e>|031k1b%?Hm$6q#Ts(x)g)XS&Kp4yqSqEp9T>-PZyC;zC&dP5oA5JIa{7~# zo0Kk3_x(s52a+|-a1Kb-`Oag`e+l^bJ@#&iY8E7He(k15FsTuBR~BUw$0bxrL3U)J&=)aF-i zldzQ-LlxWvouYf`6bHxVqZOzRA52BCtdkxbRjIZSmO{^EeWWVxAMWZ8qk<}yI_3A1 z?0(OBOSL3)kgoXXLV|d{kd>BUlM9wPQnJG+zhG^gvTc-Jur|J7+bF(ZZG6?XQFy`H z__l2$dcoTG*NggU-lh5|NV_+ZRDZrjXy80@jg5I>HMjR zf93+D=g*1sYV;H9zqV1GOyn z?QXxcHF#(ODM6+E%Q%K<3KYAG#56?UT;9(n=MvIZ6(veKo+1Pil3URaGFcTNio&Q} zVBwtlgMjQ;k?d6)T=+<{YjDx_C!qW>-9W;DFzHHaEqN`d*mc{VpyimA^i4@O=5;NX z@S@p&J$OyaS2%%^bPo=+JPze?v*mFCk84iE?3xoXyJjP1*EnK!v+D^`m#1&Z)lftY zFem1oM$-50ZG*F0T4b{gLX}Shpz@>vRJkYs#hn3E?F^tAKfVAEwU4-qyV(JB-5o(! z7XVc!1kjX818C|+0ccuh0QGbR(DdhxK{Gmkf}wXp4C)gAO`Q-xGbat8Sr-MM{>}iJ z-5EfaJ%0?kd?F0Gq66p<-KB)gyQQQeS&rcR7Hnw7Yno+HFQ0gSnGN%e0!j3N&Wuoz zG#eEZDUqxavUvg9PX!RTG7-4qaI>KOED!eD2fGfk&VRVI z#Ie=~V}D^xtq8ol>r+{FiXa`gcNO@@**n<&cl?FEn^6CZ)2+i@zVeV_k zu+9+)Sa3tp`F+!uv-vK?HW*Kc0?#O6PG}X|o$dY$yuWHBDIb#J_=a*!rX5$U>LF+BHjfk6w=0Vs{9$5-uAN z4+4|4AXS?n4@DvY?ejaiY$YClj4NtQm+xmG{|8LEZhA>FS5d5`I^zA@;q=q;dN2@k z>G)q7Gwf&D&9EjMevz%QnGM#z$i^Q3tBYu?#o+tsU$q!~xBb;b2Hzip6z@sO6Av4P z`>1I8lJvk|>#4(RZMgtH!M{46pWvC#p4(6G@UzBGuuJ<1K5P60|58bR7Ks7JNigi_ zB)H>qm&!>nUsKLW@X5fN5w^)O^j&!W6X)uqSZcFX;D%~+%t&DX*@CMcHk!n+weS=`J zVH%94_YV_dNUke(5%*w!#+J>D9?qiWr{a{?UhO{J+pJO^pb{UxHt_tt9+E}>o?*c{ z^R?m;HayNj0E;ZNbT+Z3%3}I)-w(FBF^~x@1CN9N|Ea;?kq4pf{5-q!6$z2kalueh z!<%9Hv`6g2=Tm&kL-AFUybsv3z)PHnKuI|0MIcSXeD2QdD6q?aAhIa<%!txs&k7;` zr)&fC8IO(rY|2KB1>{hmN}8OzAk6IX>^etU<==tghie*qlz6xysprzd7QFCu>*?Z+ z*f4(O#-=a!4C||?dvNHBMo<|4Cl)1++b)GTQ@P`xj5L5EGeubmu?qc`QVR zy(npHq<^j;s3cd=^`=dbLGOcVa33x!^yzT3hDSAiRKufxq=s)cQHxY@BIbxmb&cft zdh#Q1hPy1eoW8$&6U=SY)quMia97iJz4h~NB_hnJ_G%jm86*1H1b&Tw(HEcl;&bKW?Lb{RK)P{v(m)1l>H>A(GWxz79q8r`bV~>R_B(I>gI^qOmf@L2 zt(Ca75|12zgri0u7U{#w_z=qE8Ya!BoLm7zLXdRR_rWGu3aQ~DH(Zp4f9GTW@HY>U z)rm@%Q!)cr3Fbj?6{|C4VWeIsES zu)Vl{k+iOeekR8D8lMzH7i#E2&FMnTcA+L+h|z(%fZoh`JLq@*{cn%|(r|Oy1lW!_ ztMbU_OcK|pV$RFSwDW=d;XnG7#}qF!#`fwYuzi5L5TFZz(}loxA&@Ri8D>A&^ML+O z-~Orh`#kaqv0X+!caqrNONdVBGVOdI|K#_7KD39hy{NIhdLC@=<|BZU!}saKqP?FR z^r!yUci&y)kxz*2GV<#tiS7M@?LZ<2BcG0l0wFI4Zcby|=jDz7 zf8?Ft{XVtJR;rm8cR)WhOkV4)6lXY@f%a!``!l$GV%fbw;clRCjZv7}FTx$or|vcT zh{2%!9tPVifUTFo#_fOVk01Gg$5bXnV<9&d^0<-pd!`!WsOObGAaf9t0|6EdDpODY(5nSMY}f$gnpjsTYw z(1QZ^puj!oB6I^Lbpw-Xj7i*s9#9yncNP*9Q~NXM^I2$r7Pmi3+JE*lpZH3|?RTNE zE^e%g$K6FEH+UYS)tFn2xz)ljFJ!bDaI1l|T1wbzJrnTmOJ+?7@6Wz}>#H9ll8T`x zT^M(ljF_>#b;%LnlBwvyRPMo4?m-OyCPJTXU{Z}SiF?3S@G@+)Gr0X(^mzg87r6a` zwEyW3eD~=GxcwN7#oSoT2G6IU)hXQS6mFG>N)eR08w;@}3lXiB6E>Mw0Ph0N zcV~Ei{n5X8n&g)X)W8^jAq;6nRjWLOPKydE@zV*_$r&9Y<>GNK+-^=ayO8fuv>ti2#klUY*#-?*)(|O#} zssB^-xNB&&#;w-4RU#?0kfx#4Y24~GX>}$rA;!32mF?B=j?r$+?Z$fCANcL3NL-vs zO()Yg663GX4`@n%*G8yKa{oamn z|GQ89-h4*$sc35|w>6cAJ(a*Voxba5k*5p%VkYwoG)okP*3nEfJCmE8Db3as-hP@w z=tIK>w#2+jW&xFY8I`!%|NH6P?LPne#GrZ+&)C&&g?q| zy7da!r%VX;x4iq=Kk*sOd(l`gH`dGJ?giNNxQl4F$n6%nU7{#6Ik;7DM0h-=Y#v1&wc1?;lya(tH)hM zyH#$t%Iy+=MVZx^eaC2b>iOXPYrk>qz0u^+JV5&aw;yo(L|bNdWZpS6pBU~(zWRH6 z3g^f39<}J3{CM6b9+xL% z-;=}hzkcRx<8Pcio=-#j)42U4{i7zCy#vjOj-6_4BD{n77!;&%eZ zb02DGKebgkhoNceL>xRu4`S{?EIpX2@f`j!#-QD9_V~zqPaX<*+#S?V>e9LScQ0D) z%w^S0{w`Umf|9j$xTs5a|?Azt0fcg@9AiFI=4Gr+U>_YL{LLZ)NYT4ce`QnU;gRi zPZ#tCLb$PsbmAeKnWBz(-id!t0ln28vn2-T}- ztjdj5dE7vhh(4@Lz`toB^`qT>Zns}I+O1$Fe5hk(SlK2tD}M7+@BZ^5Y$Jr{)r~~l zBKnya&pYw&-p>3R2QsM>4EOScaDVLN`+rxHeWof_w>|zkz@msp9kDVu3+U6!=)^hpQbF+16_S@h3^N&1;9pOeqBf4U^aRq^@G2CcS zCw^qO@gvyH1^sATMlD}H+_;=-ONJW>VNi3p(c}n=O_j{KK_BI9&i5&2(@z4Q3NN`F zUK(C<8N!x$$&VmjiI+4a%Fq?!?}8J_@neA>ZdDJ7lfI`Sf4RKIVJ~@mPz|SJ?C;K> zhvIk_F5^gn992-UAB2xvcvGb8lcCnsKjRzc3<5Phu!Sm>_G7eePj0Dw8Lk=mSLn_IU zT!qY04B|*YtT4H9l(GqMa_k<(Ne;P=gC0AaU>}MPLL5}X#=$F{$Fr9na2^c|^O4Ve z&ZA_Q&ul#DJn92ORq1Z$Q5_UdrH?z0N+1R*eJp!~e~6KfDoLpzo?&vv*2K29R^(zuTdb&y!KJH^6)SMDf-P3i#d`P%k1ZB)vDS^{`CgrmR@q`97Yl8%P#3GR zo2)GsaIx0i@%f(iel*2=F4nrIJKqcAnm72rAph+fZ~px+ed0IvZ;cxg%#>aF6o*C^ zzekRi&e1M@UX%Q(9e<-=9QVXM^Vh}abB-6k86JlChQoQ){}BOG>uIU}&$K8I(Lt^o zIH#O?_3x@C5})AFnzTp%*7fh{v%ff;-nTLRB?NQv^yAbYrCx(lEbk}Uns^*TBCWII zswwk}!-==NpRY;e(NBld2ZyOYIy!d!-xd7-B-#j#d?TmX5P$z&pX3^l-!&Ui$~S#R zrjKvHhmHNL32JMSaCtwxP^m|2`1QAxP7l%mmg+_FMPKsl ze1rOD;1vw>*pi_B9o3Kv`3R1C`Z_=b^xbzk-W}C4D^9}riw(an2mb48nsFAJjDU1X z-Hch72waUYJ%9Dc(~{tXca~{I!tHEJlk{te;T5G@H>HZ!Bc>%7r2^Z2`DsrM>gxmh zAP8run&Bo#y+Vx%l5qz2ZPb9!p=`ywPdu}O(fYq2kMVc)8P_n~_BQSbqV7d#Iwio5 z*8d;E0QjRD>(8ls2w3?Z1iA;Ry$5Ds)DPeGLz#Xk?tcg3Y@bs6^Bp*(qxvMI>8<~( zGTmXXbWcDNj7lqwV*04OZ4~^i83EpbO&W8yGmHr*&fyB`O0Pivz_VwI%f%;` z26%VVTSE}q!WfmR(KYEShT~=-Hw2HPc^B$mSAZqrBQzAppYV9SKtS-=wUn-dTR`w| z4xky-JOmb!%mqCfF(aTJQUA-fq~XS4_~oI28-HMU@cWUYk@^761o48?$}~8j8mouVh!?3 zXXr*>r3fzqu-?*-P>Xm5qCoJge-3WGfu5pe><$dQjMkDqiV1{9e2jnP=v-L-Y&jw1 zw13zeIXLUXb$Ya^GK3{qGQvv4Ax2nqyCClQ8et>(QCf6HgU_OUCh;`{>nWArNOnj3zt8h=*vQrsO0^ZkU}HDG!(zX@@a8i&U9Ks#+GQ>a<98kR%zt z%FiY>VmjjUtWqasaJR5ZzysIyaI}4{+kex+$T5+=jM*0=;7jZ56K@*Q-9%!pB zPQBTl_2y=d6cQvLxZGW0Yo2D9J^I%$(9$rXZO~=?tV&{3P{IL(7>?1^^fB}@hSX8v zYn&Wza{qUtCp&GMtS~L_=Q9l)4{e9MqMkfXR}GI*J2jMxJCUO!t~fXn#cz zxxA$xGlqwpu^~?Pp{27|pwT^eiX3I>E?iY`^|&dSZYPexXn~s@xB(Ag0J?8>;^tBP z=25rUF5En(Zys}t?ZM6C`sQ)B*k0W1);GJ|V*7FPq`rC5EjEsuefnmfTkH^S4(OW$ zZn1;zo5Q#{sBfNeZ;s;T8GUoay?;4|nS@-4yZl2XQ$K9KgxH+zGo^x+b-llt?8MEZ`pu(mv0b=%Oy4}_7TbfH$MwzQ zZn3?%*{yGOyT$h7=1G0?q+4tpH~aL>KDXE*+#Jw12i#(ZadS}L9CV8v#edB+`sNw8 z*fHE3(KkojVkdC(tiE~HEp`$&$Mwx|x7caiJg0A-bBm3=6|D9#Y|eU(%>uyRw0xT*;cf)8)yqZ@um zlKt{1^lz4#unTAi zLNsU4aH>gw%|IEJWoBJ45-_|-{`;;D(&8ERxm0sf`JVaRw)XGAFrANSG@QkGX=p{r zNXtb!ynWL*DsxkH&>pbUC<=r`A(WgPM)HBUBF9b}Y?5SNj&sWp5&unb0_~eQnp$3i z@LTnUj!J{CCqV%N5N`o_CYMDea^MC|P4g5ygMGgj9S(J9-yyfLM z;AUAbNeFx<81I@zjjYZ3nshaB_}m&u6vvD)I&67(S%0&Jrn_L|7Qu!wzaV%M7|f3h z=KF?rC~Y<%@d)2_%epFHT?K0_`DhmG0_z5Zx^W~rTVUrPQGZkt3yhZ+)!4qkxW}ht z4P8Y5o04=v1lldPu#?6XlotooLXJ0DgrrMa6rxuWd~3+(Og~AP zhzY~{I|@kSSp>ZVNK+Q1DFa)|f;8pC*u2r^vxvGvGvi8$H6`E|an*o4BcP%&8yQtE z*}Ryl<<93(1%ILfBLYzp#Qzu~fIP%u0;g}x8}*aQAz)&Tfgy#y(s~>s^g*3~27MZ^ z*QDeI9g@!_1ED1Y(G8^5wvd6ql7T>0y$&1A)Frr~rZNFuh&W9oA3_fS@sQKAaY)+w zH#u&lh6Cd8XsYP7QAH&JwF94Q0JR{K_%nTg1KS&NNq;K44|<2ajD{#xGGgD3*f%De z4umgo37>Dq;cLwCneb@^#p#v<2To-mkdXA&HybU@&v05fI32Lbr|D-nON}3*M_c72Xvmm?^PiS&vO-dAaudo9-Xr=_ zXETF{7Jos%KvAOWDs5_lIW_2)00uZa+QbRHW?)LP=~eR6)f=2X8%7ApQ%M~`(m2zf z+1Ap)vA1L&OLBzO#4=&b6Etrq&-2y|C9j_LaO9}OTiUPFJu6NLzy`}cKJ?nu$66&t z0F~*>Y$#$!#^!}ts(2kgB~U}2Gpd>mKgeg!=6_ZgepF`oQAqG}chk3qAKw~&{P}#6 z+6)e>Skf6-GgkzZV0FE~Sb^uTMlevH`EI+UWVUpxyWDf}t(J_%IR;=RpA&P_qAjWFw7BbsZvNnA4&X<)UsmD0S zLVvtU#ao#(FzLoX9MzR33i4Vr%V&lRb;e*IYju{y;v{UTX}uS#`3n9=B*04iTSZmC zX3f7VmQ`UaWA1Yw@JrF)FXQg4wZLem>I!GA)h2_T)gW>k+2p~iwrGWwE-yrVYWh;R%%}2cjhI&;U$75oCQkrv0w}DN_5~Qu=53@&41vW zyd*HZBxvC!f#D@S@e*09`!uMwYE^>(Oi-M44o2hW8O`KFlpIrDyjw}^4qaT2sYkY5 zP0U>uK)QTSA>9H@@q|t%zc?-=(WbowJ@J`D%7}d@qq|B^eQ8{jKIAjAK~H4I-bwg; ztYa~xx8G6ZSnqb%$>-fb?#tx&9e-4Q-ywo}zPukfm`GDVgh_Y%Dlpqukx)A&xC!}Q z?~4I3=}`mmu*Q4@(F!>TA580XwI+RdthB6O=XYW^IuOAkhxF1$Pb^5}4nS85?E66) zEiK;-97T~KL+y!N53C&>#w~!x=1^l3g+JmNL7BYz4mBjg=F0q5lc~?BE`N$WM=6!8 zKLw75WbEP`04kDg0bG1ru?DVxKC2wnF9~nRY|sb^y4a#<0SbJytXA+_>c5300@R;r z_)atbsw6aam_D=-iI7>ID9~HvBSH!zy(kK1QE>JI3??Lkj_JUJ712ItGl-DXU`+$v zC|ZqK2uqp6Vls*8Kv;?{VSfpYmJ@2i5;9>aIC}|-l+AA|bVNfhG{XwH|NJA++n$5b z@)~~y8RMwZl3q9OY~l<&mecZn34&7p!bJ50z>#K6+wBIz4g;RpNM_jBK|@qO>@iWQaqqt0#b#(D)9vPceCr9LO6h{k$;N+M=On~%E&-N z(w|7jzhvXTaHtvQ)nWTeq+%hY8Cj|S6H$kUbAeJ*=;bFdeJAzwahO>a_x5Yzitwg< zqm$7FZ1y^U)p5WS;Vc;(YV(#F+g<`lkt}xgrN=G#-+B`<&Erh?b>vgIO`kK`Mz}RS z@rYg&OpRF-pQ0q}YJX5#5Y#0=E0NABJvNmiQYx_l>4bkv&C6wQ6;Tje#f!c8pKLJx z#lu{Jqs5zyc-R8@(zwKy(OikeScugSjP*+lSW+tV4RgpXxC*ag&mWGfrP-WLP+p|&nGEN-oV^Oo42WA&)(j!@_Ak4Et`IzE%^WZOze+;4 z<-p6sSYi_ywgL42TX04#;Ec`*PIsW8GtebEL>PFv49i9ZLmDLqe9k%~rjmnNJgvjC zI*Ta7gwiRy!GFZv9&gUG6zi=Si7RrEcpKxXbeYb?>n+$gykcoTy%j6#{Tn&1^VJ>+ zz8mSieW5nSv3^0~SbU|iGD8Raw02@g4;k4|3Y zb0!Sja(@mhj3$))6v_#5j=L-`1MXV#GUzAj%99CVL z@!9c{rGY@AZ8N8f4b(4@L*AY*kGDDG&60(1?0*rnasF9)&`-?E!_wXN6=L2~(nDX- z%=@S>IdT%ok;7!AXt@BKt)e9ymYd_zN*+|%ZfS_^kZ?MpMbeCbSuGL0d6h_PKr?88W?-QiSZD?U%^KVk6LE+4%b6#9sQ$F?K#~g1qv5jY1&v6qF<+a#u9KjC zN?;IbkO;D}?p8I>ghSBvfHq8&(9v=Ep zfXV)F`dPZy(QUzK1F13=$koA@HRJ{WIe}NiB#|z!Hw|lGEwing5!lu_1R_jOdVc`^ zq%$NMM2MD<`hk@(@Fj$T?iPd`CWi14+dCl%-1&gbY z)YseSyu4s#>|$XiXq$+*K^74=Kp@a6Jvn?r0>TFTVooB&Ll#beke~rm7+z4kD(ml| zVcuw&fDnitEg=W#&aa|Aq6Y{^8cJ7YOINr`7F!vUxT1^i_{p!IqvPD;0e=}nuH&C7 zs#qi zf>@G8t4xA$m_(BFs*;2{BmU(jQeNUw>nOoRsA(D;8(elH6EHbwsDL3Sh!1u7PnKq2WmoEAc8v z?Yzem&E){(TYswN$5>K`g*nOd=%z3X>8^Oex7PrL3$SP{3)v^gtwa?GgkiUpgY>1bFFlDQ~ddib!WaQAemFNJJSYH6Vv4!1c8&B6vEL=dGC#T^Lu8#%{ofLy6xTamu+G zXV7FTMd22fB`)mas%&)Y8n_#J1i_kSWRN*!RV8VbaQ1d-KRb`C(GlcnVzxA7esC3- z8Y7N9&dsq|o)ZOzaDSG>zM{C)U|SC61rIu4oWfEgJ3XnA2*n(3SQo2K@jYU-VI+}i zr5^ZFAWtC=7W0k#;d+ps_%oU6xd#NTWwA7)>z2eaQhogHl87iLJ&AfAVWlI|B@_RM zlm0yH-@@6-)f&R9F~3m^WWg7)VFHR?0gH;rFMo`64EKg2=j}#*YS4mM zJc)Z?%mRsv(#O9o5u9~`QE`p_!;L+nO$M7%@l43t-WrR~% zX&{E7XE__0Tz?;sf&fDf4woPfhYFjUH>(G}Zx2{TxG`}f!u)IczHw}wK z5a)7ESI&7DNd{@+EIOwwi9HR;1E7YPRcN9O4&-x)Xn%Oy6MbJSUup_oA_|Mtg#}q| z9yVzc;x$|K#3f1y7oiPuS)-_@D>$j=lapJU3OGG9J`c=yg&Yz0nC8(agzEVkY3E?9 zR4+0TdZ{nhbzBp##5HNa{eoac#s-f0iICwk7ust1oHJdm)A&ti8c%9`iDd4MoPX}_ zv2%Ba#eWx>#W{8s6P`r^!_of>J1)t(Y{ZQqh=$KooY?)1ixDTDhun2h;>#V#Ap2e- zEDcx5GFccxV;-s-ius45Jw%SL5Y;Y<`;OHN@|Hf zHjvqVf)4wM$F2IDZ>&fY!b$Nj@$LZ-TJH3?6IHbjstHi^*UR zNCtyZF&HM=V8|Qa@AcXEJzJj_R;=YasX#P~m)r|b+YbLP0 zL5=@`HdBr%UMzABP4;z3(c5TFXaXU)zN5kry&d|G`7_h03yi$$y8q zm2o}|x9H3=R5wn>J*;kFVPV%l)9Ux7CVIoR@%oe6hLTLK#RZdXFgSOE8Kp^(E7!ng zOr<;i*`&V7-`2drFTVQ+Upx8-hd;GvYrGTT6MVft74arrQOIE^#{8&J6613L6f(r< zSa~bZM5c$oMjZ=?_c?N}x{ch?QRDV|Rqv(Trg%ZF*7y zdAW*~0LLF9`FoMK5D`CM-66$nL6FFo-h!adiX-#*m(2<9N0JTPrC&S&V9A3(rz=Cx zXo)DCXPcLP=4%X2y1q`j+~9LxJfgqHyMLg6l2U(46or0ThNo@u1tU~B9`<#N8uNxl{1RDc zVGdpTjF_`Ku<79ovbzC=G%(hTt67hdY^YBHCqfGrCY33>2#5w6>hl)CFdtSeL5Jsf zAHoCS$*E=qIL}OyAsA;`A*phfR`lUM2Zaqq84ZEb@Z$e~50tDDQ-3JHSt%8V#)N}7 zLF{Gw1h$`{T}!n$us~jtZIu9rFZhTo^e(?4yC9_2>Yyf}NsJR|ttz-dD^uEyx>*$6 z?x$*6yaChMOTehVi)F@yk4_tqkStyeV;-dQycWz#ibh2YjYqZ|Y6q<&7_x(g5H5Z} z4UL;dJ_Z|aF;3t1*q*~48xnZvkuX+yya~n`1UWkU{qNm3yisxw>o+(bPxB~mM$)l|-?Z(1 zjxG@JZc$RWnZb_^*2KkfDW`Y~Br^`6k(zeREVB2D8rGJ5f`2MoXNiXsc&ok)k*;no(PNXcU_tMV-`RRix zvXkJYpA+hd2XT|=Rw%yR8&mIw_!E-CDBJgt)~E|5-JtPoZHBguh%LuJn7;J$QhAtX zDAHBfSOVcFfq% z?fZsl%wo&D;TnPE8Z7%rx0!4F6SzhMu0d;{zhw;YgBJR#>x~zACA$wkEc;bV_ur%R zSN=(xH0-Tl7w zlz=I3sf#~fVAyMa&UBh=xiFrPCb;bfzx#zRPWgEqUuwf}Q(UkRwa{}4j5V|ChkmJ9 zpqsC~`9oirKK2Ap@o{fMsz%cfkeoQI_pW@|x<*=1D!uEm-}#lxQ215KJu03}#m=6cXx4nF9@VNJ;CnhRYL8%@8+dFruDoP#q#+t>B#R>_Y zKlDpaG=j8?sU7$4wwf5N?r)Q3#vvKpTf2rjTM!j<80GV&Xbk8VH7CIaI0^fMlc2^X z6G;2+DeM$W|IzOGs!7W?XLW29li9`_fBSRV4FaO?Re|i8U&S8S|I?4p2EGz{w?i2- z%$4)~M-_|Fv>4Uk*|S&N4%$3;^&^B0)3$FL{F4v7>4We1pW#?lE5$e=Gx#qbKKk@; z|Ms6e^X{#KUj6TUwo>tnPk-_EKl}A3{_>aq%`-0!!%3y%CyUqci}p_rdE946fBW*g z5Wh(OcU6!)2*2gqo_Y`=NUjPNKS+-wy5&5CN999>H@7~RD0-e1AAH4jY;+9zk5IF( z*uE{s8=@G;_I~VrAA9^?y}_;A`c*+a@gAhgzTyGgkE-GN@A+&T4!7M3T_^pnH=ND` zZGBXwYlrKfL6>_3j8x&(sGa~ve~ZX~4krmZHAFpaZ78u{-NtQw)oE+1w3UQUkixyl z8xqUdqb&8o=8$?)5Yb6c>2P{w;zO&(a)2Hk|9zy2ThpIlE3i=La;i2qqkil;;=nJA z-eux+&Z#f3Y9AiieAK8Y+l6*Zs>lLA1bSd`fj0rMKhh|%eadd7%0{Y(f6TkYGCu6{ z(QSM1rjSUqt^8{%9+%USHbI1>QTmcpW-YHWP@01m=KNfMmVq6u)@?L~xD%Ma47VE7!j;C|3eKIALDP5U04elli7BIA4DYOum_rLf4j-ovm3tbxdkb^L2)(r;!N!%H8sdc+0Q2jDcdd{kZa+FmYVv zP1318`2wr3wi_EKznpiUWTw6d?>_j^sq;G8Ntm$bvlfZ z?q6qpB-!Q!?_<^CrD-7gUkjd>$Yrq;NPo)Xt!9wf8(3e^`_&e0>msbji9L0}B|zO< z%^TBji@i%WrqP!8$LQ`U-jAsddK2um_iu}@V-3Lc zJEv-iCa8~!1xprre`Rsv3*)QW>Q2AhK|!GEKV0(Tt?D5nF%`4*)0Z|gt&d>{o4nEv zoe<-|5gIl6<86JRY$e&>$2M*#+qfaCp4y3~l*GpGChp{SgB_qNsI+|5Ea)xV3Q;HQ z%SPh*VQVQSaf6+4wC@Q$D6!>(SRzrp3V&23HX<9j@Vdc9e{PhNs3a8vMW_YHT=ic}DIL5KfB zKTf|*U&03V4gB&x{j=;flSK9Z#rrZ*{g3?`zfdE0r~a0-xJjn>u(z$zl?K$?NZ^tvx zGY@y39&P%sh}c(beVv%s-^1%doX$)C0j}0vPe`c1f7u(iU@IlS1_~@_LCg2`ZE!XY zXVK%W5AvJtH`6s2#+$nf0R9xBACGywZ{J}hd)}t8*Z@svf0(g z>1K50$%m-|q8ogiX}LuD=D6Q%JoebZms9|jNUuouoz+g^)T<9g=|SiAiu8!Nd#aE- z9c$bTpqXNa;NYooi9%l5!eq7(2%vmOcs?w#su_y0zrc3crrrkdmmvjv`a%De8hn%9 zfAg>7H~<}R+z6lDzc6h2K%8XI1l2Ej=ZVBbd|(q}4B*30@InnYh+RDY2w2Je-AFLo z|DAF1A!duU>_cpojv-)i+P4`N@tfHG{q^sT6ZtFhAYdZ*Hl`&a-aZeH+Y!sPk7Kpo zjofXuiDwI+-k>+6(Khd<;Niu>s*J4*e_BqocG8dk`}2hrYG{F#Jj%i9#P=o-tGAy8 ztST1+D}0*4>Pv4Q9ZtU#FQd!%?V-!}^({kK?H^#Nq`!T#vXpMV@FjZDwQK}0KJekq z!)bHb2=B80^}FaMCX8Zl#*J)N3DVt!qxD}Euk#Q1a*H7E+J`9JcgmavZ7uzWf9hPN zz4YXp7owvd{l`ti>AuhX#Bx3;#u4?gBl!af?VqwAM<40u%9UpLTtAqS?>h2`291L+ z#I3KGkXySfJJ2j!hmIAN?IWW=JCja4;^b`bCQi-{@6=oKWqa|MSWBRbV0MVI!OM_{ zAF)&Roy)P)umd|SbYiFAo234=fACar%I~$mNVXwvFtgAgDLl~(9Tw^_3-yNEJ|Y$x zG7Bv@EVSUTP_RtrBiRk5`EPK<4>Mtw2@xt4+Ib{HM@oxy?C{7q91a1y)1A1e4nf333_ftx2E z%R>@ZY_}5sC^|ck@V3VC&Ne4y6OYr9V}WZ|ND_~3W<&_~R0 zSj=o9);PF4r&L;|{l$sco1H>P1Vjfw__7U7!T|9MOBxlKMmSSy@%7Pfjx%>l9~$lo zJO$>=Uow3R21!n!zjCz_e-E-(y?#Y{tA5OOZ~ESP{YU987<4&!PK_vS)rXrDFZ^SK zue;PzB9Rr`GA!WV4l=xpL@HG+v$N+gV|J_$)wrd`vr<2xBHvIq(8E7d%SW7oBefDb ziwFU}be2BVz0_7WV(ryZ=Mk0LM#N*a3-v*a zz0@~kDw5KEOFx;Q`V%y741~3!9!#JIQ)(NGuhV~c+5FP*v=g|Ac;;4F&?f;xMxSN+ zbdj9vF(<@C+oUCGafe1E*W*q@G25=fr?w^KZQ0Qzc6WS{r=5`gPgzykq@B+HlS78S zIigey7E4dzc#bI9f5qV@l)`33ucVmIN6fOHSMmt0{6H8G%kuKMTv+^)R}FO&kj zrt%A=>@1XC+*;f!(^JB&9^h7-TPL|f<4z&7Ov-1#~b15rqhH2y0p=VZ$Ezf0s&%F1ode_wM#hfm|;$uw6sDv9Q{_3hHR zyIxG+jw|1nebf3H;{(K&TcGeF4{l2Wwh$4^h&MwEKQANor9*+<8dIs>Y4c4-1qY%9 z0d+p+fAhOy4}TKgFyTYl0nSS}O7>FW{jtu2EjojR4ZF}bc+Mb2gTgS-$p0oyl-HZ;!v;NTwrazN)Fu#~3-qxE-=I(wmz1azZ!^nmH@Wu~v0ETqi@FYs2 zf9%jpba+5_>oEKR*n~U}g8DzOQ$fCe;b6GE8G@2<7a!)6v)+WA^U*ooGhg@Y*PnmS z7Q7%Gn=M;W>6x?RI3k~S{L5m(yw{I^!*@40{jJ)%!l$Kl7+Q8)Lq%cxww7;VHF?<8 z@bP^c<&0ug&Sv zx1M%i?Br>uogH;7uD|{e{}?5VNqfU;1KZ~D#g>mktAGHRwjOx#1!$xw;rHq zim|+j*a+qWN49ACdg}*)HhEJhj(`0TRYIWsaWDS!-W8*xL-%eNO-9!zD^{&a?pr;2 zPqKc?(8yhD*WcIe$$yIe>hw2-{-)BO`+OSx_0V50{Y|I88T8jje>3TCe^yJ`e)@aW z`qk@J4Xs;$?}~fZZ(cWg--=E5uH3w7bp5?|u2{Ebkp5n~d1&N;6>HbN;m#FnSFBq( zw28VkGPG%vzD?Jz9h9rr4Q<-6e%+>_pQS4JqmdQ&tz5rubY#WK(Kq0uHA4?^}08#UbSh6`ZRLa=5?z!p{CVCBgv)* zHW6Twp^=gGBa0FmzpC^2%zIOrDKU@UW8AN&*DKbpe&gzOcPHGd*9~plJhW*Pb=*p2 z0F!H1u3t5D?S>UA*Q~gEXw$WuMps?CX=LTKL-%i3KQg-MnvqRZe`b`*Ht2V=hNHQE zYs>wAYq|femiwpmJwSUi0b=vWI*fL7{Tnn~0X}-Ma_!KH5qfs->UEnptXeTTB-i}U zy{qpYp(pEx?t24zP5@iIZqw+Bb)&24seZC{#hpWIhwdL*xp{Qx^_%ac8t-1Q=?!aF z-@AJBbweB0K5)yre|1BIR+~1jq$%CRKwGi)z7-E_TEAuq;ok#GwhXNs9erTK5FzBq z>N}~HO{uxsvSRIKJKaMlxQX$qM1LXu&8EN0=SFc}}j0}y^_=i>{E7r-pC7ag~)Q47%4y{`Iz_lZUe~2ru{mGZCymP^w^Im%A zym>3{99pq(!B1Xy*IjomSU9v`h~E6*AlX>U&%AL zi8{RQZl1t6sC&z)FJGljcG2%Wm~BGyMT-a>7cFAc0NB@Wx)*EU4TJ=X7GeCG7A;z` zZcG08MwHece`$QWK3{@na`W0z`WB0siZV=J(XkdRv_*^B*HKFkmt|8-{mfp{)6tbB4CW@p)Fcu z2KkDXmVbtp>s_>-Cji3hXh0*IEQl^i@9v~kg?Sj{f8W*)y?*nm^#ljT?@<3;PJdT; zUR}RJsKg3N!?pT%b9Qi zPfo_a4?1EHiYUpuiUOYwjLde_wLfiq$mlx81XPQ?h{;X+lFMvPoSce0YG~5;6>}a_V>={YB3G zfA7-Y0R8>6C8(Ohu3nd{TK|U4MDpLj4>rAlSni4qtKR@j+XS}g-CC+ca`o<9_tJar z*|cf>y+dn9x7_o_ySHrKxaPj$H5=}`fBo=Xn^)hxcJ#iXRVyBN#V>m43e&fb(BF%kzJe$IsB`}}^mmnW z|Bv)Hm&dYV^XNV6M^?XaXw~ep;MEpQFzzIFc-QKct7!?7ps-@?8(4ZE`G(5HRBmKw zvUo!ImyIs3tgx<=V4J+2IUO5rSJnup3e`gVV zj@kkauGW3qtlJ)=U&v$creDm_Zba~!9 zU3a-sCwbiSzFU?yTM1?hg}i6QrhA4~0Tx3e7t2pqt{)jv2x|+dqtvttXlVenttD@+XjUjA@XJ<_#xcW3~na6f4qV;gFDv_ zB@k{wqR!B_KYk95wy-9YrjTUH(^UvbtS3rY-k_fZOIxBiDkM zti5(6(USGoju5*cym^3uayMc5<~y%hx&Gd(Uo^CG<@^`F^rfrreCg22g)e@|wZbE> zo_EcQUUJPmF1?DydV$+Be>H*IrE7Qa%JR{sLpe5WzEf1cR?1<%45%jy zTJGmK_o0%N;ND;5+&7fy+UEYpTi)Y-x^sU`%X{1pIQLg8(E-iyWSF!y)0^ymJTnR!!7`)^ZXKQQ<2P{Oa5-Me8ututDPixQS^ z)~_Raeb0(5L&-c$#6l7-Hf$!5=K+$6AZV;zL4{V{Ln~{pOwPLXi4o@34z0U;^qx(- z>viuor>);=8T+1=f4+W5kM$Nk&B=ZD46RFOk*(akmPkL*fc2Y4xf7f3x@%}eH&g7MobXj% zyG(uERFRv1dfleY8(_O2!o^Bv0*!A`a?@0iJAPVII@hMMf0o{X>c0l-Y2`iEo&svS zo!$Z8UbSK!B-#xtNWe&}E|<`hE=qP&8Q7Zsc&f-aEoH6E7{oprlRk1|q&*ggxTIL%@ttJiB*2kdr{SDS2T1 zX1ZFJkcgKRe;pywZwmx($djwCNp4zC69lR8fknv;L!&%j(g15;o07Xm*58|Gu`(gK z9i6yuXzki0n~fE$e^AqqRIW*0Pru3fy9i}R63hPh;;t1dsm7H8#8s<-6+@!@)3`|N zCcIfe4XnF*=zhXldXa$U6b6lKG`s`ev~GIKjsmRj;!AdUQ8$pTwXU9Y8DN9Ljs)(gBl@>yNg6FRKA+l z#=0#->qzuoIn+pgb||@rIs`FqXzfZ2AN3OLV0>fi67F6_k_`-DbCY{lu&Oo+MTkUk zYH2-Ce}4Ts((Xv?)2*q!HE9nmeblgjj)GWTr0m$Zc3`vbZTZD_e|{d&eBi=p?d*sx(}9YGm`qyMiU z)Vv$0i6Q;W&DWT|9`}Uan|r0{za}>~l8nD}fBne4gj|!Z+Sb*t>srD>G60yom_#mG z39E<<(VW@2NQmP7 zvw08YO~3N0eRbyPx=%D++$%N!yZv60eg8V$y<5>c{p|IoNkN!440`qIEvpFy?tCD5 zjuX=$%up1Q~i^e<0{w{2dr z_T{%xS@7l!Gey5P-wZNO%_`kKQ^s?{&^j9LN{bVFW(rPdU?&?k-w8@=_bJ9_e+s`7 zJ$bZG&Q1_w2x0dOmi zpYFZ<7?!ob043b_KSh7HuD|c*f6Z%OzxhsDlX|X2Y~&S0yuV*;9y92-K);vuiwt34 z!#K8n1B?>XLcV>-zx-<5su$_s7h8N{oHt1Cd81S>WY9PD3r@K6leMvKm6pHWpv9Z) zRwSc!>)!xT>J3Je(hBD0Ogb}PV!iYW9(}T3*4t9EW;V#{;nk}}Z!4;z<@yXK%XN%2B*C*2{w1JCZ{A=j_|C}xB zb?$7LgPXlfHhm4|q~+PI^mk;otmmJ4{VlHnaU&i=BEY>Xk`;G>zJrml#=w*ltc7Hm z6(b|U=I>px;TroPB%k~4e_2gypSTA}3?nO6uLWIMdCv+!dT3;mQ>O?*jQG^zT8Ivt zHq$WfCXP?S%RQ?h?m}#WD1~OZ8Ayp*Sb`+UBK|7KCPa6xUU}UUU|p4TDjA$C&q%w0d0q_k8V;8gtbzl2+Q)w*OoV?f8x))FFJ!^XPxYn|>eTLXgWYA;>~rDeZr=<4B3 zSOz4Tkuv&{YhI)+Mb~a#Cpg3c@2M;5-kqM<*L%J6(XXySUef_JJEo&We){FOgqTRnhBfoe3Dv|O}CUx(>e|uu(DLePSzxh7hb&zJOaeh-*dKd){{KUDY z^#w6_P&d~$#Ypk1o*1b%L(n>xiG!pnW0W!90xc>|U4Nv}&%IBa`;U3D4dCAYsB`}v zPn=%N{TWY;e<<$#Z0G*_^f$ldzTwnksvrM}xmVA7(TiVl z-A~S6u<)ge)4^B0ddbooZd~?L%Wt~*HMhR@b+5ner+?=5pZod$cE^f4SFRemXZ7%! zwfAn=e>jpacZ)9gvs9AH-F3H=T(_ReZW`UZ<-YqLcw^SgPt3jM+UHlpHP>d>7gN*o zYyIjsJkRl8d-i<)dB|Q66^f;DC9a-5TkGnsPnkNcr+2!%p3ygRR{!kFF25q-nLMkf z^6b?F7`&IJ&Yq>l7QO8Hvu9uaidUYu$sf}Hf4JuYHyX;z_0t@DGUyOoQ@t-@{`cdnsowdOKwT`+Cfd7g9d&LFg z|119s;XjT3>?{APt^ewkb?=!Ut9y^q-%a#arN3v0N8dD;{(ge~ew_ZUqQ3$9qq0Ba ze;6mQ8E`xOxzB!%{_cRSfaHnyUoA$Mxg?nEy;=+(yRH^_#Qd^ad`EWw%++F~GWX9{ zm3YxLB!#?qeqPlXx*vWGtFh0vZuLs`wOEF+%0CLtJyRI+331!uH%o^ zuD(-rf(NguGyLA9Hpa2xyU;5XLII+CrhyV3Ab;+bXS~U=iy|?1Ou*3N^K0^mVlMj*% zDh3m6vXhy@nD7nS#|q}U@fHQMMxi~?{zs!j zhNUkw!B-hx(|P}K1bPxpe*#R9ZWUt&j42=0R9_L^qGO!8Bx=b;fs|3eZ2h1z4OFHB z`ZJ%N!^qV*==s9`g>D;~+M=30<27Mrl@Tz;5ynQ^ zqiwbL%pgn=jGT*aD7d6%Y1LizwWM%u&Egs|<18O&<6C^D+=oLmz;@->v&BnVnrLjn z@Ru7=nnChfL}eXuL=Sx4L^~Nd$}MeaUsOk3c+@X%gp{e{*GNzgYNS+K3mJY*gjYHa z8x|NYTr=n~xRinE{NYkje=J4a0x|>!d+KTjf*GPH4kH+DhRY-Vyu2R2xis1Cco zqhAv+dHX?|o7=u%5jl<17$8Pdzi_rHmrhg=wf2O_~+MfF!DM!k2 zyYF$YaIf%4o}5gnqIH07m(jW42N`HKP=QwiWSiZ@?S$Dqhta@@hWW=k@t~eqX>B^eH~o7xHO-+3)rH{Cg{B*b8vSkxHJ96A~e67-Sj&~yJrG41YvVghu`lJ&+= zq7-@+GpH5KH|v{u*Q57_Ws^!qf?-rMfEurw{vb2R8EHDwt|!x7*HUkWVVaC!)&LCu zprQfQ1Y?(~f2QB*Qo!7wf&cS|xw)tBIAig{pZwhLZ`$aGxq0oUr0SWt8+F`9*ZS7h z<>p>tZOCc7nAORcF9b%@)W*^Vq*n||w?)Q#G~GBTzkX2utVn)EUS8g8!=V?kATmpR zZ$_hc)ugUw1|4%WQ`glIoft1@xJQpMOvpoTGEKK1e^n`6_ekAJ&2-f_YUYa|&6;Ur zQ5x67b2KVpwo7DG;HFCe^%1rj!C#MwB*-*4it^K~nLvV*ni&Z0(ab%4l=cnsj)eU3 z7nAj%jk;q^xqn0IQU5gc6Q&MGQvjP{O!|mrIS%ohAc!t0)ske5wK?rJ2X>;Em?2_3 zNMI9Te-cXOQ(+ny8t+EgCxI&K7iFMI{RX1~SPP`~)ZvgK>mJu1(* zbIsa~scC<+J8qx&^*4F>g_X0bo_eoq-TF-r?tSu^BPULtdga~sKj>$$D<;z$P{Rdd zN+-_%?5ps2WXf5M!)`mRme9y!%>+UCkEDxFbRzi!iB zQuxHFi|>EXXLA*m*467>zd!oiv2*A9K3%nX&CXrV9Xs(-&*=;Alx%tS^^-lPOUue< z%$!qo|N0G2K7IJu^Cw?A?}|^TsQmnkYyG;d>1Xd=v^$12x1^?3t+@BV!6Qe%icd%% ze_A}gto+Vdm2>W0`P7Lw&i%FT)2mBbH?+0?D!*!EUjFWbhmXB<`uxSM<2G-RHw-=g zd{2K_`K$_Fa5zWhU%t}ZqK+xNrD)@(YyDH_wZDAo%-Ofz{`<9l#$7eM^CIrNO-R9< ztK)IIzCY-(=)EXO05~59FpmJw@h)kSe^qGQmCS!CgWJ&p|{7tgUy zeg+TuINKzAE6POxyEun6jMGL`xtnm~2>oTY^AJkrI=@9T`8Z307;BBSHgXb|%+2Jp z*p(4t*`|f83m8 ziTlOFY(87SLwlmA{~@={s=t|RW%Yhmzi7Q|LtX2TDt1)H>VFdSSF=J$;zB~PVCC8@ z>1Y<7De9{dQ>A!uBGw<^_V2VNVDApxabYBHWm)|(S4Wd`nJ0@Qx$Ch097;hB8^ZxW zx(A7wLW#9NJ9YvWjA4hkVnG~Ce}GB0R5ne>0F7uNJPOakH>~HxH{p4B0raw$;79PX zyAOW}{|Skq0_&)Pv1R2Owr~F}$BW9CvC}_0a~8)YD(dtZEB75Z_-wE@=Dz#aZ~xBx zsP&bV*VR`(eK;kR7bHt;f}(}@?0xHPQQf#{4=)vrZCJ43!IrAaS7y!Kf4XgyXWAp( zJASuw_ns%7Ir<`JvBsr^3yUW2+Wp$=-F#B=@DXDRPn^W=n?{WE_(S262@@wxoi?4? zSaofE!@|~OD^@YO8Dct{&EAIX zS^7RM17~255U>D!V}~lne@lYCMMJfMD95wIPznpih4AfcK9+cqALky0t)ha$Y%-6n z{G?LVZ}ancg48i`N|{HYBHN+}VhrfD5~v6P0!f0wGrE=U|H)uANm zhk?UqTeYpB-J-wvz|pS!4QD&Y@Az}4#%EzzJyI%`JnWFpLlyP6V~ux>qpIHgrO@?e zmiXuw9Yejyg@ul__v3}E4T-$-p=$kesa0rBDAu>eT4#t!`h6Ya(dt_qajPd~>*sP& zGKL+C!z@_M=;t#he_{#4Rj%76j?w=znge(mn-YK>_8eSioi6DILTR=fEE1FE^sTGj z5^TtZ+N?8qGGuUw@b3|Zmv!7>jYEj##U!2=k&VyPUmYQJaX&g8N4~2l5RA^qYYLqP zAfKME=yx}EEx)y(W6-AqhEce>Txn|>w7ot-6jXSeLC&VhS+bJD-=&1J522e*KdCQKnM~)6FuRnXKoVhS;64QHWvV5s# z>L>5*xZ})6f0yoXGkMecz_Dq}VuojO$z}tRKTu+k9POoA9Wv5nkvzyXN7Q5s5v>2Mqbya1p@1i5G_91iY6 z7>a;H?~v{jPI*cX3Y-Li>?*`ENwdHsTA>@$A9)D@gAEiGAl!n04e+!%1W$$m%YYY# zF=!pAe|9t60?1$>x#1+p(5Vt6K^AO=$uTxCQb@AoAsJACjRLoFbU$Y${mKV^LKi}o z^g9a*;4&2&AR7#)lOEZ?d*GKWgGev22Vw9Sq0hiyTMhxm5kg)`G`;fbdV2Ck7Pa$@HG| t6SIN<`E>j+VpQxCfE~oMz(J_E3<@lXPgl3muw-nHE*@~pVV4xk!BTUw#)F5U(EuAl2QF)iI)r{>W>B-$p8 zNfY9{1W9CK0-;1Ity4u6QAk1&Z7dZKRS``URYHw_5EVqf$A6i}U3Y)^3Kee zbH4MvUuRI0hxUR}3O)}PPw0gOSfIaZ!YuGTUDO27E#Qr_z|Zc2Tou2Xp9mK0&(6Tv zGQ~o`DPA_g&!_T~dERQCp62m~PxB0!@R;ZI^K{Yw4K*{p?^b{6rt#V7$tmT~Q-Dt& zpWQt-t$-dY{C{%q{#&P&OV82d)YR6hi?&#!-I#XXKx$dxqoYN_ddk;hx!LPHooya-xvb` z9$$>{0A*%eRdL-w@z2GdQW{?X_+Wr$(;wff2X5dgt#MN5x<)PgGl-8dK7xi40362$ z2VwZe^Gvm;S~Z>nyk($hvT;FvxEjgm^$<<)Y91)ZPBF%Hp@R51;6guQ3ZdgNs>+cc zFIV=7^?y-8Kv>ZBMkDz+gd|jaBEZ+i!T*fYr&iREYNQO8MqWibjz)wOK`>?@C+#9_ zwBy17n4fnIs9tZSS%7qL@w5sTRC@Z8-z%>ET@ZSEQHy48)5$5A;a$EWvA83@P6cTGHU2rEHIsEZkHr%6czG-OZMk9GAIFMm{ipidZZ7T&MYWTxq_Rtc=zqdMuD%}U`r8cm@yqJuDjRBcwyJA~6*3P;v^ zvJlq<9RjAB!AxSdBOEUY5+iVwo8Yz{!AUd@KC3SgP%1G9N(m@!L1_d<&t@itYkv?B zu1GZkvg2-I!bCGpUp}jTTgif^=CM>WJU@*)3^Z}#CjlRMf}dVW0C+;;59$6 zy(RHmI!@tAXG^LYP=heRDMLn$Y9~=?t;4W!9gTx*kaSk7@b3Y%m5^Dj5Dp}oc7pAZ z!i7vv6H=IKI!FfoyJ{7Z84$)-t$%80T0jytDFTmaTaylUQr^MPM*VnEymgH4a2eo? zxD#*23p1mE11;?|G+mIGt)w6A2+>F&zC#e!1dfmq)D5HF6UKMq>o2~iV!w`x359Xb zyQg7~2T&yeEdr|;@7M4V-Jda`K)i+cd$r?atx~8(ieT(PX`x!+EO)Mf%Gz#-+98;RgLfPGu97}|?`cxbMlIi^Q8lPMDI7!; zJVq_?3bA|i3c2jD*ujcR)W_q|OnrnrFa8InYYA;mQe|4uxRH#c+D%Jh)~W-W)oQv! zQbu%Qp^@IFXEAQ2E((WzJ~@meNGCeYAW~t< zx{$sJ2UB%r{5QPyBCrQfpF_T-qt^Ns(Hhe;cb-=93B>-P_Z<7LpF7w;0jk-%=i$#- zNe$05-KCOpgu_n3VaIaV$vEs3l5%+Te3H6gIL)PS?0U;yQh)L$$)f4cr1~0$_Ac?7deZn@=3ZQVUoI_1E))i zWQo_+#A5amE?KWzh!vHqORVm>Vs*=6b#qJ3CF`OWLCL zMtX3EDy4G~NOZULJ%kbjs@OX(W&0-)$jc^XD$jgdJ_qIMD?g!U|Q*dyY?F8ogYU%*Et)e*J=RI!?* z8~vRmk~@^UCwFKgf!v`ttm7RjN)N3U?SiyP8Xlu40X6K($V>ZB9-hsTGUY+na*&kF zVa@YuKHEn{7T1eGt9HbxO8gkJX&1@9rKhBnoqxz=E-aKJT_f8d2V%7!5VCIAIsxta zk2`e@3NxnplpL{DvFG$E_6s;lLBZ-Tk0Oa=H4bnNNtNS|oB~)T=c-x?phFib(|d z8bz9HQ!^(IJ0M}l@E+;H)sdzr+kYfQ{5*W*3=236LHzqoG)pvH%zqJ;XEkmo?X4W7 z0O#Gv##QRjogqW<1cNxoplcy@M9>>?la%+e%~UhO87^m!5A^933uYcUc?v8m$?l{l z_$V>q1Yi-5*VnUd5_L|7^xUX9E*(2$%YkMc9Tc&ey&b30y%bN8^*7`~_Dz2N8#JoK zS{&Jq@~hxz<04#g9JsGn6Vm9m2X9})WGlw&B6J!naA}_;r;=ti14%`L^aV^s-Q*(9 z$}b|{?xS##`JrIFWrne#J%6|4Ni|Qvk+cCeZ6z@Hst;djqG@AJL_f_JGB!%Sj7f%} z$4!)yvlr%_hG~hgXFY}&O{qQdXt?Q%%dZrApQZO2w-bI0A;>E61IAQikaQ6Lx%h9O zNXXH)x+te491=hct{@zYlfc;%-}-_R76-niKCwAB-Zo_03PKqigMaJr(!(u0PLmPk zMG%|1oy@JJkBDi_5sHyt3qq@cAtlGGTt<}Z;**U_5aoW#IC!}$%N<$nVfexIh+U8E zk-p7#68lT3VP6_^YPfY(gTpC#g`B{_JTDX(Vo{UjggjtbLYVvPQh4XO>>S9>kP%8` zNtRJZqoH=wAMSn&_XrJnwyD6|~A!IaC0%)?d5Hd#dXqW_fi@=oALerfV1_D~M z&&t7)SE{g0lhxSa0ak4?DWsD9!+q!+tT}JsbxTA!!vF+z`H?US-Tl zchR8EShvD5hdP_Wt?>L(%+=sx8K}zi3Q4ZS2g(gm4X@29v43v{WYZ;-!19!IQzPCk zF7zWVnZL{W(Oc+;o9l<{C;IV_rRl36M4bT9kk5mt$Z?=>gYlG4!^AIRmY*gLSsKZe z6mKa{!Sd9E`5Grq!;;Qf^(QSJGDn(&W69kQA_gmljB2jrhk<19L9~;V4>sH}XbiG3 zP&`?rQ#pqk-+!6{%@JyhjOe-LB;+h(sDz63l2+;^0rZpw(31-wcLk(JwSwkandXv6 z2TQV|yjS?_T0T3L&z|_>K;+1oGfJ)^9+*o(6_OERh15< zYYZmt$;Qg0AEi`jM=ZLjB%(%^=FB&WKTKm2jXt{Ua(|O3#0)y=BWf!nnw$L0nmk!CK7(T17;uJf-aH^liGI zROw)a6C6rFsLbTNr=6$s4k!Liv_neyiKHg9`8=&X+s-R~&L*7vtd0y~<%hEbWY9)< zM#Q14VSfsFB_i*QAIY){Z<*{O5yb@3MOVZhkTB_pFX-A8_dR+0YeVxFDR=@AOO+M9GCPnI4h_RlqOfKw{=q;w+fFGbe?eWjs?GWJ0FfAE`E?Ef z#GtHt5}PRrCAY}wtdhhw%-z&z*oxXpZEYb{JsW5{%H$xoPWL^ z;wIz5N4VB?xhttD-gBYrwka2L`EUXYT||-E4>k16dHW%t!)*Fy$RWHgrDHsF+tjge z_~4GZ7*6^j+j?-Q^{|H4bL*kSlLom};iRi==fOc2K_~Cp$|)yAy2h4NuAzraAntmQ z&cfs3aGSbVa!9Yze)=xT*zck^a(~!!a1JICI&;!gFc9L7m*4?f2I!So>- zZs}9dtmI*ZUOxnR6`2A5I%gSFM$#uV&q!H)5#GKgxAFN-cWgoJOIhjLvVYQ{K`t%1 z!_SXgUh<>utz&YKx8+Yjaj5ep5R|C8smjM^f=v4JqsZ2PPh(z!?A#@NUT%rnGji(@ z$v3i z%C88Bdp-fGBu2>Ilavywbbk%j%A%(&n>$h#ll05mOFPm}WvveKENz9nwH7g^ax96B zuN=+K#?He=c1p|C%^=4C$4ioFS+ zGiINZG7)hO+2%KvJx__Kx^ZSU4l*(bdam39Udq+=@trE2%d?{_$VxSlnRreq&1Oad+HgFCrXZ> z!YrOF`GLxk(<-t58`&VJ?ItIDUDm(j9OJ(>vwc0L8vSG4ts^-1{1)Wc&DywUPvNYM z)5jWu5%u#NOU1Ur#DBN*z6iNrI!L){{^F=Kk_fATCGUPo?;Lp-boqrh-l<<8hSz!v z5qx`z(TZxiRy7Oh`RyoRyUhUfaSfxB6;#7SCma1qA63?Vqem?6!qAbP2Ju)ICZ{u# z<0IuQGdUl(lnhR@@Y2HGbk2IB%qi^6wM1!4ly{E3MOoFcuz%FWBW#ly9DQ$s1y&u4 z4`s9o(}k42&9H(Ko6}@-3s|OMNpSYr?|jqSnxAdrC|lw)cl_{`|N7};FI!8bRKl~C zXvp)Jtx=V_+B0=+T#(aE+ErIo)v1Q%9V0Y=erW-TM%Xt4wIIy-AP00LREhK@Sq~8# z`m*mLayAclMStHkYLx6}9SZ8B=oILGT;LqwcRJh$u56E>EQT>)Tk7K=D2d*V&dISi z;ZGZVoU68IzsGr=e5bLa)6@d$swm7q=7@5sqL=R*Q)AUJ75@_*KDcy*lI&nQ%wV%W z(G33fW?$0(hjcDT+ZTFD+DXV1qPa5i+0+X5Svwn$27hXqedjPucq%8F8w=KLEV0gE zDmE1w>g2S%R?^VBwP@rqEgHJ0MPpyL8u}V*s1|LsXt}5|s}fD^Gddg>3Car{uL{e7 zq-1EwCsh9x$npV-PD|ABy2veib?aF!(5okYRH;?NoU}(R>Ls^wjOiLex|;n~CjAfc zxlvH-D}VUCq6_(w8xb3(4`$>xS`t135e6=h44Cnjw3rWP&wv~#J_i{m`ouwm2)#>7 z*zH_MC^K)NCYc{4b?G8lRtcL13oh|7czR6dyDsWt*Vk=BkG}?Tq@ia&1Ij-Pl7=1< z=eIFPa6^ytEM_qJgC%*ubyTxdb8-LtoryclzJHI%0(m*7>Ec3H6mc4^EW6Lss=U0?+i0j3Kd5GWwR)a%tl}Elm?}!u(&94Kob-?m z6IEZ%!YSxlQPZ_BEiUIdXf37K>%;WQuD_7Y;w`{ba^m1wTKE!cLl?qBi=wT)KD}P_;SY0zj zCi;uL%c;aO-cagmPDhuK^^mz1jO1;w94$)NL*^FtT{(o)8{)=txjpp()6>m~_NQGm zRR1+U(T9lmVg1dx@1dGRci$vk`;yu||3P>xY_R17oYj}Oj}8Grb;Xyw?Vrn|ivpO|Iz!ZNlyjP*zR;_iC~ zAyVx6;$jHe2e6P>A3!AzcRc)3&Ce?M`^UyxoO#b)0j-a^?5|a{2!BCLK)7g?YGzRn zyM=U}`AMRoJ@2sk=wurzyRM3h9M9n>$$1X@j#Wt<(TR5p6Mm zm2>s)xfu0%*xv-c&m97p)|RO*xte3`Q8d?6JNWfh>>?@HMNu_=z2z1o6k(6{>jn4r zh4R%iB&u8H?Q7<3_kZX4K{2zC6seMj z-Z0cv@B=#%HL^5j4y#>4WrCBPl;6 zGVB}zF?w;y=*2}|Dls=(D0!t4AH8U466#&qE+dVZj`M72(SI@X+r@@Gkpm2Ri=av5 z__c-tE{i6S(3vCJzk|yZav&{hkS=EreY+&ev7kP!A2|ZhsDeT`kbyE*S!(_I_4AIs zkFyS;F(Eb=YdBML!>M#0&Q$m)$&f0BB#?Y4_EbBqHD&Zmj7UH3IHJ}8VF($Ou!GV= zQk{mRWrbhvFn^>eQl?AVDA^(T?vQYtbPCne6^m6bYkCrJq$voEt8>w~I!BJHGk$-gU%``bPl8IcGfB&Wa)Ga=?b;f+XeP91G?0?_z9xG8jeX(e$-J*uACZ&&D zl$z{Q5-!sxk(3;2Ejh=KzRw5KeC?ykXQTY|1jMfNA#6MOI5Xy_$JG$(N>8iYZs$q0 zFgVJ4h$pnm(d1fPJW-?dk7c#-Uh6Zwb$dd|Id0d(M-FwrihU{RC3|(@+mospu*`)s z%h=5&DS!4#&l85PkMf~w0mP0vD_JEzUl;V-GiR(Q@VVuXPo4QVG;|Ap-z>J*;2hGE zO8CH8z{kp%0iq_x1^&3OCN18`-xr8tnp0*4{qevzKJ_=h^IOmT;|Kr6TWF50d0dsC zhz!A;RSxu7W!s0y^g$mmb9-SA3WnHYWr!1U5`Uk>mSj+Wx&`(p&jI_jAcO|Kyj#nA z@;n8kcJp~WEcvxVjcL?PTCGHp3rl%YwmH7Fa#_S~zFeXzy-QdNmaupTXHY?{?(Dc< zx5ln+gI(R(6n67db8Jus+wC5zcZOQUi8{|Zg%xwB>NQFUHkH$TTZWobNbYX*VAK7S zdVgMc#RyfoK!jpCBOhC2kW-^k{^PG7R4>gi$v=-TH4f#_$KXv5qKmM*QL`?m6iXIA z7@Wawl?Sqa1wFD*=1(&)^ZCn=d*y1Ai9Dd=CoqxkmbZFE>Oo%8W==X3VWIOB}Z zD6XJ6wY>^M$>RJedytEmqi&!o*6aA=E@I_!w7x5i==+#I?lMQ~yVCb;wIMya5YprQ zTkVR}^+hf9DN~={R-ajs`b%HXn13;-pUBEH{H4;)=D4FT%IPgAL<=fD`-HbpdN|1I z;Tc{JrEERyx&Vq&dSNL_DNhXkC$Ctl=I){Mozl|9piQL-h)OX7;%}mh)qnE?V)2Cq zVlhAT_ZSSi^#ZEtF!(|?_-$fYFq3=xhKA!IVJb&G4a=o|BUUz=Ys?N=VT@_qquHbO2qe_eiE^tY4b&*$ggYTc~jhJGcdL2r6m2FbMqFYA)#4``p*#_H`7W0|>ER3LOT# z&knd{HE_r(cR4ilYDf@5%xhOBU|Kp$FXOX;Bo@7BhpQLuboHVsuzwMWzBvV3Ot_qW zZZdJv6{V6&V>x?fa373X@Op(Mt5Htjd@+TsTGN*6cyt9P9$g~G^g0~^xz(PiC|Y6;msy4A ziakiUQTa26i{>{b=g`@62S_aL?7&HrQ2F+$6{lJ^7)_;beTj_`2WbG=tzQRSd zZ_Z&Gqp@$!Wo<5Mvv0Eh+F9(Ihgl-C2F{{pa-v5Ul8E)nDD7PfyJm5zYr%{%yJjg^ zk`zN76SSC*30ibwf)>vb6I8}hn817)B_+)QIi6c7Z@x4V#-omeu`QD@V2J&7So%q` z&kIM9K|@`ygMXsgBA3M%rd7hM46m`G&+@t9%8?86NOR?!+_H`3mPeH=?FqlJqKm9; znb`6C+6Hqz41FMlE0y#(DVt?o%rEObT*I^ZC3#pGswF~9WU#Us$w~?>w}|rVD9SI! z4(muSNDjMLSfDKb@ERXzs#**GnQFRbtuvQqJa= zayGw|*?;`{LEDxanmf)IC+MW?SiEKr@31*%eUqMrewcdF$$9K%lZ_q0QRZ^zG4?`i zQTfnBRE{t@wmfK0e#z|4K~mHhE@$E@x7T)SR@u=UjDuU9y5dfs&esFN6uBSHcZSsQ z!@7naV@z-E+d7~p)Y5AP93Gb@hh2{}roqQewSRyxIH5hvetR1c#xH3NyWU7uENgX) zUCcfaNCfoxvPY|Ae@bNpUg`ZQW%j2ekg%xm%EU&N?N1z|O&^x?1%Dv};T_j@oO4+~ zBI??tn_fIY%X;56(cv?MUMCYxa&}U+-sY9o?*x&kGY!Y&^@D@T`s1qS7)7Z&wnsy5atd^*%oXIv=}zW`j|+Zc6RZDn+LV3 zxQB{mFo<7>^x3d3mh8VS6*mevJ1!f^95>d_$Bp%!xUv3O;?K&UqL%3FdMHXv3%(J+t+F>5_8xK$RtwGOkkZ9i%6i2Z|diClFou3twSZs5MD5UTk(y~`^d4~|+ z;(Hf}%x=E+=PV3LDf{;HvM14O8-~17N$oLPasrNf?m z%BgExiL^1PN;v2deEob8mDv#b%eHcOXX>3JkWx{)&#wiiCf*VZWIymcD>*3MTDL;Q z{^e{#;)U$I%6I*pHflWSVc3fH-ns&kd-sHFGCdVd)x?uPqqFRcPm zXG>N`uev(=@m3Shb%^Q88u}BzMv(u6C$j+!ohK6ONafd&a@LVD>*xn<3t0Cu(LsD2 zQw+&VSgo!lCS*&Dwh4&q_NPL_k`J}8WVS-_&BxmLvo<~n&RjE;Xgf(Kt8{)M@ZqZ< ztoVXPjGWh+#uk}#8GoeV*W24@vx2qGvZ+LlN3g5#^QuPDB?vHz^Nc(4^0`w<(=_3FoP854CY6X8<-#JF^baj7an25Ij8 zmvU~NRPnc_>D(R49Oz>TQg1R!d2Ocx0wEZ3NLr3yz<2tvCx4~{Im>YaP8?&ZRDHXN zu)@HoCH($X1c@mHPge$hg^wg?n4HfJvRG#3L?p*p+n`lRtdaU#xo$aBz6k$Z>l{No zD3Pji=MUvvt9$-Xo^avp0OCPql8yA^;0GT?M6!{}V((cc2S|_T#3Thd$nIxH5d(7+ zk&n)Eink;%n}0c7NFWfjoU`bZc%;JT6BVCNG{LEK;*m9Ux-IGSFPqv;Y)lf$|cIGI^nsggdxF1`AY4R7F@FC;12n35jpQ_)Em)YdWH zy6O@cY@5oyu}(cQMSF74pDs~4w(|rWA(Wiy4pwFcJ+KqQJuveU#~Ng@23b{utSHB; zIrxSgcz-%-PjKtmKCbj(bTPOb<=M7bN(vL6%9evsyQL1jVEGs|KRN0=*`f3jH&2`; z&J^Q-a%1}g57Ot}2(21tLJ*-@ml7G0TJPuOTpOM}jMDKPwy*`*l#M>@C zb$d|d!`FLsAA5#m*;*5Tw8)!Zr1o<>2W)#4S^t+sC-ZPD>$#qXXT2elSC8kxX4wN! zZkQPUyEFKg^P_U%&!al(!oPh~N8M2!ZyA-#X|}7b&{KYeL!2@C8hghMl{a_<+SLi~ z%YQN}{JtyzDW6vbC8vUtR3PyX9y8FkpF03IuM5uWg1qLXGoA$_z%o-AEtX?`um$Y} zxvqJ4>BL;RI?VQCYKe9GP7Ylbh;u%j3FxnA<}3 zaV$NT!{)Lmb*KvZ7!(B+Z`T`%-+-EOr6wA)j1?M@sXZO18i%>{B^1Klx8p_NkIMwkkgR*WI!FPSFxK{R91J zzaQ7Ufs^0+y{~=q{eSemAA0dT34btBCp~?x-dpi9*@D{DBwE#fs;#hoS>n&qeX#IK zL-nsJFTT#%skCiY&rQ55!owmSAAwFCEt5@nHhg6n_)l;)Z)KUc+^1xTizIN*Y#iPQ~Fx#LPV4^=iJ=;OfnR zi{B^i`?;;)oM*v#&BYtlJQ>ye4xAzMk(6yVX!_rcb;iyw)YryVjimPm=-guer8Mf$kC;29kiC z-wX`G76>8@n4bZP2NdwvK{lX5%YX_k11hu(sNfDLSgtXuDj3yERhtDo(YQ!ZF<_X} z2qcAtE*|8H2O13hE`Lv*=knC0jUOPCW$^Ft{ zMvzdGaT=bDW|K{3&Ek;BdPCjxb5g*C)vL04?eII7^sj9=25-F2}JW0(!7Pg{5) zj;WiNNqgX{bX#A+i*9TzT%ni2D>hQ0;l*AT-&Hr0+D3O(zJDuhwy$fcq{(r<=;phr zn@ObX^o6Z3t0Lr0esQ$&GFJglZ%TQ_(F%hg-H1H}_-W=M;C7&9njGg2q<+kbz4#sR zQ3l=|57#7W1vdksfc@FU6?%c_{Uc?w zm9W_hLX7w78b=@%9}74a-~~S+lCZ^Jk~vX<)d2Hq5`mVeEHM`a3mF{XsL5a8;0jPw z323(>&xIJK8$k*W3>Kxh3GJ_e#z?zly6EI5glZFij(-FJ+1wD=GRksf7_}l>&m?%M zQFy+<599j2W{^Tx4X^KeYM}SQW`t0!OH^YyAGX`Ed`lYNmbWfHMJ zgKBy1>WdTY6W9=^TgiT|BI!3F0ST*(ZM znBNO9x_{$d`|v)mgzSi?lNp@fad7B^PlKaXfR(^kXXw9RW8yEv%;7Qp_?f-I3@@;A z2lnHSVst?^xTt=Bo)gmrb;uNkCQZU`X4-QDgOI#vx>n-&AoJsE* zL0SA|RKm*Qtz7CLKDe7M4x9Y05r@EX^Sknsj`>}qbjcd6UDJm)Bxa8cU-n-=82F(q z<9{VXdi!<0o0YU*{4lOHYC7)?UbB#%u^2X=r7ffdNbFQB`%#p-Mo3oM059S8o`AL zxr%jeK2RX0H(nq-u6i=+!%WwvXYExF(ox zg0s6QHRiuml0}H$zz@`<*3+An;IdgyOq8?jBP8oS&KzWkES+EG^>W0Mh{k{mGIh@v z43`DNPAmM-E*LGR&bJHZnwAB#q4c!`8aN(eU1iz0N^M26{hb+}8z=PYX&Ca9HWEuSXU_&xW3TEX^s2+nX|Uj0j23P zn{2-w2pP)dOn3cECdiqdRe#4R=?as`o*ozrhseBD$=|87r$?bn*~0Yxp{}B*%JiSl zL4CjXo8uC}9=ik`1J+^=7gGl%)nxi+xFgjNI<+9()n);ouHw{l{1Rw3rL_Y6=NH;q zi#oIx8jLCC+Y0Oy@z%;%h|8!0QiORjl_k{+ESXZ4Ohp!rAW33F3V#g-^;hURbkaV~ z>TBPnD&_;J?$JxubKmcGobm~$x+Uk}^P6DmAn#SE^y4O6?@~DyhQ1%dGgW_uOx1K* z`b)DUg*;gkejjAtPms^hc=H=(P#tpAV3Wj(}K- zfI%vCzDQ+<`PnIn^2nbYxe40V_Z2jb1Q*x>pvvSxoUIa%zsmE`L@|_OXa*5_`r!2P=^> z`vo5RNAO-Yhh8NHoQCyZ5KE$xJjlwZf%%%cV=v~?&=sF09A>tzL=)sQJjL`NpxJFU zwVDMIJf;LX%4?VOqC)Bsd{&Bl^rp!N_(}*cP;IhDUj*;HCid75D&yP}!5^ntrr$%^ zGrAjB#-}fW|9?TVh6bQxYQKa+8-7Gc5^2K2TPYzqBln9Xl_9`R*m*$&Qy=0&tNE4eXK=YCqhoLSqrwXT9DyFM!2h zelT|^LtlO{4-bym2LzD)j35W#jncbz2=O^!c`pw98Y#3V_~cqq=wXrOci`8JnhPvp zBliLEFUS@Kx5J2}Pt?L2NFVR2>-(}v?ox$;NJVcKc+4Y^ZCwsHdAv1r?v&#pHWWiv z%=J0Prni)9%HxJ_U-CYZ-Rt%&-|sh$RKD5e%lxRUfKEJv=3s->MM{=!=v)hvEjAbo z+~!yKk81ZbUUIvvlTkJ^e>;va*@DXpFDgC`Sko70J4yJXidtTVS{6F+J0$61e?@hH zyKN`#7S2W6=F~?sHnb2ttyvW}bXOBVy6qxNAd#Uwig#hte|?(`L#EPiXJiO-Kkz0j zX3wUx&D==~jyq|{%yKQ!X6XaogPBKgOqyY?3{zMGhimlM<3O48Or-91Upvj{SThKW-U?a!Byl*BP2)MqLp zi}UtK1%EI<>o5-Ne-d{EjK{1Tl0kS|_KfaMX&2umG9w~3oB2X|JPS*UQkY!C5lE_< zy%vm{U}k6NA2L^oW|81EE-Uny2@GTe$Rd+@X8B`iAmO=?@bpTe`yTx!+cU%tO|tmOPh!>w0krf82uYTx=dPElm9pwe@7l-pqr1QV!H>)U0gJz zOK(#Ks`6A}kw#E_EnG_)uIhz>tGZZly+Oe0wSe_Hy68PCP4K81mYNgA3jFb8ShVSADTb&>~hj z%2N!KNk1R>e}ljI?GOL+;XnNBA8c93B4~Xm{evwcjgn}Pe_I%MJ52%di@I~5``3o@ zc$}Y$>cn%QXCicGLgpbq3+;0d+Bx9jQk{LWQ()&-Gx<50$F26aOiBO6p(OyzK|a_s z3zyF*T(C%!P1Qx0?6kz_FUeZ>OzRoDFIa9~(4pvrf0fhSB0Qgst84Mg{pAH*&-twt zSS4CAEAbpozeeH852xw)^mE;tc#?FCH~T+%XMCj_}DF<3@W#)w7#p-`mRbl(aE5) z7TS_3f7=R5+E!5D)0jPa=ygr3x<&mf7@Ox5y4-6HF%@(a#RdXsJ}H;eW%=N8DqYGk zwMLQiRW)W<*wsWikw&}4C6vQtC4SOP+V)`|SR?*Bg=D&{p{cxRl36duImJRUZGq5_ zSksR~Ir=d`upX-~3=SGv!nnocr2Z3{L@Vi`e?>MSAWu3^h|I`{n}L0{ji2qe6cV(6 zdcxGi&?tqwi4p2vvL@+$xhcE>Pl<9Ty$FR74CvVJyN%5< z6CFIZO%~kcyhoGPU3mU%CR(HggR#>DWB>haHddZW|1GmwifuDkTEj8xU?@G4A#=bR ze;YQ;@h)w%q`~i^sm1S;syS1e83QphJ_4tpHZ!9!K4Qc(;mSs@p3I~yc1KBL(-Wk4 zEDoh_`39Kk;;NlQJxvjQ!WH?8&A}3l}K^{41jP>51^q3fDFzxaeZ$V z2i{5@6?1G+_K%7@LvTMU3V}Z5w5r%*CHf>$F7A45X>CSQ8#w;4U;q5O9{s{czJcCS zU(MdgOg$$w!d{a#JR*O4H6-}FuRvlS@9h`*v5;h@ebql?R<&lwr(1Y2%gv&^456^L znV{GQg5%qqC&6OxwuJk3bAnNM8y0vg>G?4(`7eZFdge5QcdAU*oehuCp>+FiI1K1* zzhUr5DDQqH2R91(sAqO^!^1dssGQfyydfhi8<9kdPL5czJCi*X^(5oO89{7}kXJ7OWx7kX#9TgUA^Gx@%!6VNm>c1NZlOy0WPGHI2b z&Nwzp#qS^*v(xV&6+;)Q&WO{H8wsV6j5cjGKFF-z82^rr>P^%^y|EsU9n>4_9+gJZ zv9Z&|jo=2OI3!luoR0l4;QP(P!$gLw)8qO)2IVQHCA->1!VT%3w~_{Nm53kd3EYft zH@@EI`Qfu~KY#xZkK*Pz^C5GKH(fvtr)>>WF0h72-(hMfnEgGw(HEPGlDS~v=uMqV zn=vr*@kMAZBHOuhsGgoyJu_wXTziaR`yQiWcaD}t8@Y=%nqbj(++z$cf|Z=uAO~#! z8Rb7XpwP7edX;zsXFhb`K(4@Zn5+V{~{ePr$(w(#*>u>Yn_vD9STVFDS z)BDCG+3@95YhVxY!TCOkSZI-`wCvV{Q}7ChMO0ctJX*z@uyW2`>3FmXWa3)-jDyiC zdo*9M)CKQ#WrNWw9gG${We;^SEy=bXjPV@ecS;d#RxI}H;h{G)O2~9vK24P*IbO?pwlK>JGo?V&%NoQXU7!k zrSs93`&~LfU%1A^8}1`9dn0m;XHA!{JU_Old@6rpFVWjEF8kmeN|$|vnthBZ zYoI~!;vJIiBq2fH*XL}z>uS9 z+JmOM7x-g1+*e)TpGHAiv0U@+e9b#Uj_D{+5ux<6YO7a3r)yGj?e!nEubAC?`#wOV)fAVEL&)HxY8wZw%&28bke~O28v^=V}e{6*nL1NR5Qufp`{- z<;s6jIntK{*`eJTiVjDYyPW(U3^|ef*MmV2%6W2xpN!?8%-Klxq0ZerONUiP zS$6W1XPhTH_(|p}833aDmApjSCtrZITZw-gU!Hxoy}-O@=&|)QNe@UN zNx~RHPTmt*(zS;cY!kye7(^grQPbIr0gGrDmn@zOH1Kt_3w~VGEZ&ld}S%iN$AZ7@=2|vgAlF$u^S*X@y zJjnuL$`da9C-}7AeEJlBI*)lo!Y%YSb@WSqljuslMzLDuN*fJ!ZQRJ8=m3~i%~|T2 zEg&W)J_#HrUq1X*mNPVEJ_AO4hU0%>`f0hLs#9XQVRu# z7d1E>0J7F{6wHzto5Z)QQ2&=Y8x@g6!E7&8Sz5DHo}*w2;q7vXb(bdA(knhl#3>nt z#`-!XW1jv7ZWPRr6V+z$pPt0E9)j}p$+m3#_;l-BWhsNc96O9~S(eijA~^NQT>%nLyvNDxH>MM zgWWttma_)GI)+G|q4@-nJVO)7Gl(tDW|2Itpt4`d3Jp-Qr}3^-=ENv*hC#k(?0ly;Lj<)Sv1~~$5k8WC*B|;F1oWo zC^Dxgd3grx=2VdmlBp0XMSc-(f7lvajYRN_^F*YE11d*vi1~_0U>Xz_?Fs_h{gXaL z7is0F9t#m#>}3jg+GiB>v{V&j4T;O;Hs{F+&k=q2$th2ZJ~>&;N6u3VdvL!TD2V>cOm(*9_E_vBdbdoM~$?w=Doutd{lqBggGq4jgRfoK@Jwy>+nyt%g zTWF?4D+GRapqZz4TbP@NiIsuWGg>K5M%DK@ia?usVL8(IC;~^7RRkoZq@xI&RSnP~ zI*l5j9ZGjt#Mcg`+nopX{9=*Ab8n)6_1jP&_Ks@gTT|1&_;7%t){`h zyF-(QMko@p<57FE)uZ;gR*zb{BP5*dl#{_m9sz!n;6@-0r;$`D6z5UV^$S|p-)55z zM<^1Xnur*-ue8Y$Kc?!!967`7_LE3QCx6#Fb+VmqoRcJM3mp>#@}Gprf5NcYJ`qt6 zTI3J~A_h(UMGHw{!Seiw!l^t_IQ|HY`m&2h6fTS;=)4d`ImzUP2Arf#yq?*_>$2$U zu!`qBvkH!9R$6Gpv_{>n*SU7@F|h}v=Gcv?Ub}glNb}zGP4+)e+eLJt-*MG9! z*QEC~j$Y`@L)0Rp99J!Jj3ei;07&wZlmCtJR6^DB3$B4N8_4)H?8=ww)h99EWj*Z-t@%}K)q)sPaM`VKMC*&jBI_B8Y=%WfebaiN zqrN@vJQ4M6m-9r_w#eR)>f%U*E{#_ijaNd&c^D=~u&XIvr+?SABOC4e|0{}_ zq6jOSt0;cFq~Eq1>0rj{DC` zp|tD&1yLx+TcyW+=TazTIM>-jjyJf%*4accTBIS|C*FRE-=nwAeG^*?NqfBd`>?oq z>su~&%69gcYI17NZGWmh+XRcbBG{=0)N9yf0F&n1h$37aKiTIzfrQ~3|H(kdPs2tK zi8?-qr$Bf&drEAN&)Ek~u%|JuNGjbW&z=N6@09C3xITieKI^&J4Um>md@ru!ayxwv z59q`4XaWKs~P%5%Psk&6M6b*IK&@?WX1ZDj z91armK1w)Ve>)zH``JkVrkeI_GSkf?^eM-QNzDaz zF)cS-V5eq6BoH7M>Td2gbb_Xw5HPI9v%T3SDx<#J-o}`A@RKY&mfz25;pE(e?wEfk zClx$7so>dD6wKFUfJSJJ`pv1uIe6vo_ie-?KRuA~6J~!!7fL&Y_0`#Xd8zfG?p~Tq zb-dv%Z#rf75}DP>xb2f;{A8Q+3~wuC%&89n{&b-X(Mpi>UdICq{HCcyB=^KW+Lgkb66{ioT z93DtOaMo`hMurXC@YBtOvD))b*$ctjP z;#w%YMxd@APd_^a!oXxiW!M;4Y$0%b2xOeI6Q58voGs~1N&s|9New4emdCnWpJ5YJ ztK2+WfNDtIOscp{Fe3IgICmo#nl4c9lCl--D>x9U;hc;ep2@p8nc*SerXkTJ+0|z{ z^VzYZcIG*VCqIwnc~zbl*gk*J;H?ic{0}LC*mVxTZjowl);$tv35a_$=q_V`omO@j zr&KnKlWe(Q`2h_^(k|!tD9b*7q+`!I5td`j=tW{HCLduz@)1g;sIH|+g^e{8ZLA6U zO(Z)SN(z>8FpHK zuO^iB7i0E(&QdVpjGR-CvjGTBsB}Br%zsJ%knYFL!H3P!2ZPUp!X zezGHbf-1KAeE5R1Qfs<1fSA=O>eSWqxKpX_Q9>X;sFMTE#kQ=e=1=AKu zIbVX%-)s%e1S3>d04zi{8i0;xtxJp6-72iG=vXLlfeMC)K!&Y@v9k$nUi ziD6C@O_c%EgcQ}7gO12^q!HhLE0;JWy^rD3xFm!8m}+ubtHULpw>+>74}R z&ZSLf*QH$Aba}$Xv$W~Bdy4Zx&ud8P5uM*4Q{haObe3#PwGGacr8YKy1QhTIEy*x( zIYVZv5x1$?J_~U+*t$51de%|YhY;XdM^V02HeI^vlrEi3s*Hp=Dx#88G^vTWRSmGwl?LP4o zw7ICqS+z2$P6OCrwqt4WR*Gb&hT)Z$7-zZI7i2170E%wYU<6Qn(!FDn+B8V_)7|6t z4u1RvAyk$g9HXzhXy?3T-C>9Q`DN9eLwE)V>a*7mihX#lVE`TDg6Y?@uYJWfTrRZ9)UT@bWjTfoNwIX zdlTnIO?rCP8DSQGu@4UOgWl}HGyI^QJviV=B3%1GQ&C0||5_nJJ3!BzeW?I;@C=VY zOfxJqSOlWZ%6^X2?+hGLj;k(9>i0OLp2_~+VDhAXZ_q;Ol_mAN^Q3-fj?@!>LjZa{ zGfADQU#`=P6QpOElapIF*h zag-6`jQsI`kPPS$DGpX>L9kM`rxYY5@ox^y>R4o`YHYZ_A+e!c#^|TDw5s%M{DRsGxR?FsG>hBR)JW0 zcV5?S`#i(#^9eiE^c!dlL`YROcImjO=|aa!ZY&2beuL(f4aY%cvLY#d&qWyV=TSHO2B zp_8cO0`-x-c^P?ctBkz!JP7B`R>FB+`baXx296L#7RK=|IaywB&$R4mO}NE%j59CT zljWp;KX;2s+|wF$)oR#Pao1d$^ziFicJh6@4&fFUJ=-}IKbF1Qn!VG++|wa13`buC z4P0wE!f-`%6nVdC;XzEUIY(xTP0;$q91%NsANjpX>U%LHlt2{l3szQ*otIiP3b@c1 zR>1eQD&Qi#bcJhyWmEGWe!W>Op;Gw*^)Z2~16B%HSsH7`KOTe(Bao?==(tM68JSWixO*Xfo|S z5g0}MNN5!CJ)x_5^MQ^W)Z4oEBLMO6{2{K4QRBH#8!tSgpdXVbY^pdK!ramCKO2(5 z&Q0U)RM2EjG8T$DE>bPM%qh=10@;6mK3iOYE4_CIown@jv2<2fyPWF_IpR8RkIV9p zv_@|WHVY_Qis-z@TVr)>_*brG`gNI|Nku^5(tuLK``sVAd z!&S+c8@}gD+Cu}L54M1ZVV(mKDisCLfZ~MIHwD+<_IVGhiw6%0BP}#oJvUvqn_bGD zPSvx1-09+RKilro(EYk^x4Q6u#LqCq*P6htP(-txp}~WO5-I?6(K!{B&Z(#*ry?IL znZ8Uo-|nzcOq6a>S8egdIAr2rw}UV!-lfe@RGgR3&cK$2YGuKjPa9W=l% z`GVU=eS4-c39j~jmmj_-OzWe=)IA5|d2Te;BMgD*_z^ufvJQ{<4x);Gt?M6s2T_$p z)I)xTsE2(<)PrK+JmgzMl}Zo#+69HKKj~i(suuF7TCh_(?%=_=gQ`!TKdKf`dY^-; z`&?j5V_?TaRV)vbGl*`T6k>Y+lfRnC2syB^nngS-Yt5 zMi1|rYCkWFpQTp(9CLa#){dVK}HQi94)wPY$;~iv~JflfhUPAX93{?0xfOeNV~4 zI;G6QViTZIyiuRzrf1|3AroWX6_fW^Ax>N9Vo8=PZ+UQ-$gu}EHgrBvrUN{RWIpg`#-9S%c2gcjN%_s**gC_bzv;(paau` zlV({Sf2Z7#n>>{DlBN)=vGIb__^j*K7ZjEuV-WPDPPai<{T?p9>n=^*2KFETRj zaAtakgN*OKKxEwRAmetauZwx6;Fu#J5d)QDbLT?FZB7@rwIk!3|EnS6SPL>fq>*v# ztjJhq9^kpicwZYX-ro@wIqJDa#ZksY&H@Uje~>&P-kss$>Whnph{kN@__hoSS6&zr z9`Q0Hyp?OK;qn(5vnm-1s)jx!crFw?qn?Iy?BOKete0>@M4jdPRcf~y3740nbXY<;hq1_ed z0gaP`S}uS2AzgUBNEhmTTo>ocf^#Kp&9Ji}_Psr(8^sA{gb}irZRU~dWU)hp{9du$ zJ{Gx77LP`*lf_XOkrOsTTU+n`$V$z7>9VSQC?Xw_jRfS#dSUFQ%b9Yyi!QY%#aIM? zi$1CDbf}}5izz!wX3O*EaCB1Qp;P;j9)&gFBAS205ooN0G{e|2*#|wPdx5_bzwrY9 z6kb*q_{YVb%-?Q{EC{!8jcoQ#cha>-vwtJIP-rcMJ8_)fKWU$^J=%GHir?=KT^EZ3 zVa~ z61!a*Lw^MKUCwi-3;VIt+|w#m?8C|yZ`TEG@z$0mHM7Or)iL2fY@Dd$Y#aAfV7GBk z2Q6E?$Fq0O1-UKWXZg0S_jol?3G^oK5xeANZ&G%VoK4LjP#-bc6pBm=H%~qcJg;$ zke&RM!>Z$|S;y}|=j1Oe4-%D$&oTKer-1FowDlf$o@np!>Z;lT?7V+X@jzAPO?aKOHuNK$~GwFoNAyC4cmgv z2t_%5d0;<(VRVp0H)6K7M_*)vvc$E)bOviQR~G3r#V3>%RW)qz83#+#AF|Ml(Cxk# z=mU}TwHy}9*)Yo7M$U$TlfN>6-TalDLf(z2o_xUfNqpZdFZM9qkVbgAVcdv~Oz&Hx zMhVyNMc>MD4#(XGW(m06FGkzKt+nBdpmTKXu{eye70=_ z;wD`)hd@q}G$sxdp0s}J(aFwh=xKQbXg#VtG ze)o%?{Cr^aq7&Bk_oIb0W~x$SC{nx3J5RKDHHd9_>NEnI4Mngk~}3o1&zh9JqT zTGCOn2lb@r6~QUh>={V5JwbK#JVCXT%$INsh~?1UDIXs$<3I*Bz@Bg7igU}S5zwfl zQH;%8u`GlT826AqtY^$zjPh4||H>HpUBx@tC6^?+n17|mm|x~jd9uO`sctcY`E6!@ zFip))c!rw63(!V;Im@ZEOUVTr^59F%!|a^`J*!EfhsD zAQ%e;-&Ukou#8poI=wBUVJo!-PlSd*>z@pIb6_2QBKnBCLIQ_W!$;Gz_dPU@6b(K4 zBi~7?#s}a|GVf2>Nb9*i*wjDv!Ir~+#zk2)N1SfnYN<(4A2j|&LrnNVB_k%4jF^O) zn0PJ3r0gz&GS`qJCS~3vMDVPl?6>KG$@U)((6H%9n>XkU`{lNkD)T0x>6Obz`5>yH z1H4(rOF{&c;sTax5>^eW_Asu*T{4YKPpY+2sx*4~(tzL*FB~sBON^+REcU>E8}zi2 z7EUQ?!JI6XKF%Dn$)49O|hcZ3>Hj5#B@`I(MSjA)S$>b?mvElnJDKs<)^EVL)ht<{OIU z+anWsu!YWCXCr&8;MJjou#|Z-vqZnVnMrKj)H5A=HHiUyEI-$@l7mSVc^$XDmYz{B zL@ZdcMkI<*pf7=Mcs|(XN(4hwxJ4O(yOyc*e5P-UnkG(wF|_(Hv?5f02=%-WxYAe) z2`l7{tcARhRRheE9s3xs6tuKCrol*m{yZOtgC_bQ4ki%6fZJo z*RucvZNUZFSa1XuT*$tE0O(@ww?_IT5V zTOa4ztl`$jc{Xdf_2n3@sFPM_hA-L-xjf)&qbsYF&0^9c&-eO&u)t1{Hz(vQp8ooX zulr-w*+WGC`7nI<0)O0>@Go+BULwpN7gd=*IpkXi9`bd#1ptFI=GP=%#(B9Z_6IX5 zPXokbB!%41-m`<76VA=>YU+*QC}D+wd+_-2 z%<^Duq-MN_f}G{yV9;WDfT`kgW{CR(H&V+1j$&FD$_r82XI=s^(Q<*pQ^W`~7YM{E z>f4v$Q}kZH%o{~ZY!u}+aEfCO_2@&3VCrDi9Icj7*Q8*75(|lm^?=cz+cu;TXd=5% z$Jt@K(Bt{pdAxOYp0`~nn)K|5U8u|2E4$7f^kILH3;J+CW!6X`SbwH;he#;*WPy-~ zqcnXzq-{aZaF9wd5h)H-$uE&}k4<;<{r5RAv@b6>a?+u|E@l*X2sT3>;U9g8dMInf zU8rWQP#=7MHVd6+9~O7)0(gLjc$7|WjA+TcCg4ti{KH)sPNllLf$8WC`K{4!(3G9|Px*FV*ldK<N2bx_-t48J);PVyK@flcKIaZrP()+;kFZmj9MGGn=%nrqCIu1m8*oVMvmoAb48 z-_;njam8m{|3!{*#n*Jk>H%^mD#$#O&Sg*#HuXg0-O~~`!_4~rytQR7lP+c_4cxC) zmwie!;Jw=RvPY9*W+#7#lxAbGOP^z=&nJB8l~Li#9CMFj1eV!t1RrKJ9cvgPm-$)b zLVtSFT`Q(q7g>~Rx5sU_N4IMP>P1E=ot8B{tz*-BwS`7THN${YTWB!zv1_4;B?^S@ z5>H7)K1_c>X zNSF-UOt(ZfgKegwL*Iw;jnOjYpg1GcwGF*#MhY-b!X9N-zG(S-9PLpD`Yp<8w&s|< z*j4aYedsw{V|PFJ?n2te8t&4LL+V%E%%13v4`v&r^1TAZhq zg#AibA98fkeSUv-ER+>UM<;zUr<0Cxm=&how){>GIWtpk9?!H=$of#T~=`5m;qXFIDz+D zgUJgHTZ0J&hf{gM;Y3bwU^)@Ye#{}O@NUh8CLM*Dko8?8d5{$m%c?R|LE_2QRntjR{?)vbPBd?&HK zBpTuNz(gawKoQvl#-$cBbz_fFH+Hv2Biz;|@0WjJj!^X@Dz5Pr@TdM|70**@3n>Bh zHBB{Fr$cv?GG$kws{fMLT3Ej<@n`8{@1piNaCNEvRprH(+rk`r0bxW+a(*k6qfPX% z{)@!;B-k~z@ZaOlEBg_tB<%_Bxg;Ou_Jc4gc$hnCefJ(}x>EmBU#n&*{J|h@e~@3$ zMU{VGMc4J;A!yd$&k=X<;rln1Tm^JUEI6Gw{Hd z2isA{G(6C~c?KnV=m8vof8Q4oajqA?EjKth%kS|Q`~Q@_s5$-b)&2h@UX-Q(hyPUf zAF#vAV|ZDTmrwqVeMz_S{<%)?Y4D~$ubzLXJCA>a$85VJ)jfr$#fht%Z|hL?y=>W_ zi%}emgzZYrf1xD2E95S&5hX^F$X8gjd&~2 zG;mhfuiFQDByX_~^e4Y&9>lq+t=bO!wTgd7gMGCV=M z_-(%1aE7972%64u`+<(_`V;g6ROTla_;W4BN{S7kAp(Pz!V_%#4bqaz%i2jSHl?VE7+E zOE91Ql#mhul3-7XuI5|pk?tfsfJ(>8PJYN#Ht&2YD|f8yh^_3(^Qo-Vv9f)(vdhn> zvSP=|c3xOzycJDr{3@CBYjl6&J)fl-Ub+LmG;r#Jrh%(W1N8|Ski|WxrKzZ6zn}Tw z1@$}3SEl>;*o9RVXdqnP4ur4;2p?!`;QWB#Pr9i?&$p@0YwJl{?bYW2qS#R4j0}#% zPX(RH;KZ`$MWcs>bI_`7A8n;>(K)_2xv%w$@Vsg6xu|qI%{>>Dezt$DR~JsDZ_jZ{ z%i!m@iwHG5`VliFm+L7x=X{tZzT~T*P2?nG*uo*D#?(!$Br=bt+xiL)cri8>uE2A; ze8om8G`!gB;=AhR^eFDCd{@|PU)R#W2tVdgH{VU&oSx|Tg{?5Ff(^`&C7J;v9rYEv zgX{}g-^_0~ryd3|lqi2}3ySQ)yMiSnY}pD;ljGch)Q>p?gyih=I29ixm~c&^R&X<6 zf@bhANxqDC!V#X;3Mi`5UX%3k(I&}Z zux4G~*YsJfDP7-(=&zE~lh2ve#me1lP76WV>`4MGMIn4+O8IxYv{4fOf?BlP;01PPP8$Oe%SF~PM_jP?5Z5bMd-ex?2L$GdtM+QG)%05tESbHAvPWVqzz-`v&ZOJJ=y@Ixy#Ki3IC+DMDvt>!ZJjQP{gK zTmpANIN)!|{Aqu=iKQA8jG6?aCcHXS4c>tbU#B9azS6V$t#VdX)qf$z(I+auR1^dP zg?KIz3_}>cId8Mc!dwy?cl>58e;)N5V?ikM2YAo1$G><<2kF7zmL(me^Rc7@o)fI) z02L;3=xiR&CH=NGUiEXK5)1c1`XVq0Jb-X6AwnTNzbbzTvJ@JDq|gX7NxF_pL9D+u z;gF#+XMxV3L15hTE`3M|xnH)vn{M|0me~mA#D_Retqm(4+?o2JTaZeo54d`m^z#PA zbN^*Q@stL|2?9kl7bjjB6p?@;0w{dBB2A8Sghc|BD1H2Q1SpXJCBn|hH8?U0aUi0{ z0wP?^XI+0O0!k)S0qoQC)BIZ+(N(48E8d-)-Tf&f!3{D z>L5P2n=TF;a7FOa&Vh@cbOcu<8#)56=!#&G1Fi`B_5`jEhbjcP4tZujzb@_{m9!W+0ohfj;A-uJl4a<`Zz-EV_T=%|e9}KFoBukv|dUX<9TpTY8ta zENA$M2)$Hsq=`^(t4h*6yS*A{a|Q@dpsVrhrfQ%!Rh8LP{A({!SFW|s_6AzjrWhlquiL4cfzNYk%D z!Fzw2H2clK^vqh3=Pe8@z3tDOMdxzNh0N-`WFcD|sF7Z&x>r~IAU^EX+mE)7p?1tP z-2^w04M~}SF`uSDyNeUr>?{k~j46XQizJ479xoQLJGHrc3C-N^ZyD%L0F(-n?akf5S`p5YiXC<$cUjQY1=XJmguo zHMqH@V2$(G$|JF=Fg?I4kEw)6we$5Lx0oT#w_RYD365lD@Ji`Zb^Q%?(!0`|M}-%A zcgQBpZHYdc0=iZIRec(TFe%{bR`aB`7oaAnQ*p}YoOCC-yIs1wa*Tsd&}8U<#m;|Q z0XL&VYhym-a*#7uartKCqR!0=8JN?T**++2`eJFE^m4ekR@Znp2V%=0%_(}hCQuv) z`%O|Z4N*^HDhdU*P^b&|+Ckia+&Gj7z#Hl3_0i2P4FqL9J`Cu44d~}g4Eix;VXr#F z-j-O-Vhw=rTi^#T7|1_xULX%919E@=Tp(B4HAR-PA^ieyaY`}p4lKN-w@gD%W_b@! zcv?`#=!KXHjQQA~bQ+;c;2aQ0{6EI%>876oUfE|eE(#(WLVoQ)PXnzYj44p4%UDeT zzpIkmFIxDrz9G@t_xthRY9-B>O&u;I120+HWfpt68DwWCzQD*Qd@Xd?TE>5@EQ52o zo0px=Pz~lDU*OXn4k1pbS;~_=Gq~nHE9Mr7rtO6O?6f*Bhc$B-2JDEJGy{V*Owpys zy2=vsfciq0Eot_Zp@-W6r6JB*@3)k&1gq32=Uk0vu}B##%BpF>r;Z*lB`Oo)?MOB2*^Kop0)$50SNH!|{thucfsA7MyrY4S%+9Enc$y? za~chFoCCWcqc0Kl>6cltIRa7rX3?K+O>`o&C2Q)x=JRhF4)eqMn{iJf_!4PkzPKaP z)is%)0V_8`qtlF#vtCJLB8S2pad}mj^{Z0WbISJU^&eZ!==Xz;Q=EA2iP&>5)WSuW zZ{1#)K8R$p#iGZH;DkjjWq73+`Qm@lfH8ne^m(2mnvv+3>ZX8 zGdA~qySOwv!@JPFOI3{Ob3W*drI&b2Zb@!sJ#H7Hnqlej&%wOIA^t%}Fu|BNa3a{F z2#3?K{tHdEMJaSP1WHR!^EGwHUd*LouA0N%9oq3qMrYkQ;_qJWPu)^^Q0vs?xouR> zrGGSvGxT4uQ6w3Ef3z8;!MX;#@1v#cdDKhPU97Mi+jrL$2X4=^A2RWB;ab3ru`; ziT(EaXZ@rLL5xTS8-h`jiK6*B#MXR`dV^Eg*TK4#9{U`tfAfuE3yCjoY?itTp7H}i zIRav%MEEkGkmVOaAg~~)J%5N+6A5WATgK0dxFz)!q4CvI1Eoh2-<%-riqlF1rqnd1 zA5tHyjZ)kS+7v6cw5AzBD7?O}Swf_s?xb`*T$nf`ElH3SLLpKaD=VNKQ?Xh#iPPCQ z5*M!^+>eslfAzH*kD^Fjs?ZDcF&ugk{X2c&jCu`@rNT>lD0@Bw&v7^x0IFc}P{Mag z%(NwZr$peC=(QyRr$p$Km}N_ZPKn4VG251ioDv16M4v5Da7q-N5_71;YiVgz=xL)8 zClyQqj`EgxB6{K^Cgf?>lNkfoJd#WwSp3M=WahwCfAnwfKtKIEYoJO0&K{UU|Mm^c zpnvBK)F0VOuv>)U{f`Wc@qgoIyoa~agI@jM=qnzkyOP|Uxa{Grcv;$p+f&_m)r;%X zMgFLtu74Qd>7s30w{BfXXj2lOdLB=S$5U|U3?A_OuI#*XyNdH}rhXUecd_%X zSHG+3Eq7Jt-7NjCrr*_^ceC}oF8!{{dDo}kb?bNC&O1FPShtlSo{xevA9b3`AGMQv zb|QZ&VK!#ycQZQ7#!UTg=6TFU^+#?tdK(2h8@)qq^emm#DDb;ktu&3^&DQT` zw^B2D*Qek0wbC(qH%Gsl(@MeU-6i_nC9SlJ-d(ESUD`^u=-p-d-DU0cDozS!Hp1L& zO#M-tjij1B0CrQop7fQN=A#iO5wa0AD@lL%jcj8prS}cdUFmv+x4db%*3FiW5?t$p z74%gJe5*zu7ho$Pz7-K~=3J@a3R0H}c+^Ed#LBuYD+`92)wYF5Z>pM=6>_W$M;he- z5K8#1OOZ?XPKls(L2`+}DG|0VOD+*QC8E~F$t5DEM4@$wa*2XdqS(GrsRXey7!rT- zi*=f?vL7|{U`ecyMAsvjE@=fN4rM?{0hz^%tMxcN^iC3x=cI>!Z``ZD4gSgc!AbjI z4_&2=^s)D}l-Sk!;6Uqx!|!RSdJh_-L4=g2 z8Z(p9Q;iwH5&;|JXGVBx%^`p4Rw3!; zQmOZ|eXv56uwWGsb71V>J)q^(n3rTyy^fc1cTxqJ#qmFC$6sCpbS08tl`0|ebxK-U zMic<@vt8NTRyVf$sexjvG+igLF5NPc^su~|Os6WS?kVXT)}}At_|zlG%&i1h82+J^ z)(Q8Bi269(6$4y=jQ?N@WT$_0l}ix!J$UdyVX?b*W!beWr@Mb!cJ0cr2wX!yr{0SP z^GTm5^KRkY^oxzUF`&`A2muC4qkmN<7y3VEg-8KCur7uWIQ|-2J*)W(QFJZ#rM^d#5Q}AWR4T!P6#(e?dl0 zOz)g|o{`MFm5sXvj5>e3iM37QGk&(h`1~oaq-KmY5I78{Bx|FP`f%wf5(^XN6IjOa zT2jK`IU{R>G)v3 zjUoN-vEOxT44oSLY>nYWHSTh1j8G#fkm=rBjgeF199v^FQH=+j8VjhAe$vCa8VgR1 zm)IH$6T;D{v4|Rr^uLq28jDVimom~2-qBM*8pSonw3HKGiNfwPyxwXVScL>FB7j)) zjTuZ8nh;4y0FA-5=_Ya2a;_sgAHraGQi6{oy54b zf`1Wj1rkoUw3gxUUW>y*lwkPbyjy92qi|(-q4m=bs=U^_ny>n)BUkcOY1_-aD{!1E za6^xju??%ZK(g)S{`V9_!ZTJO&~IvQ>dKlQ0C+Y+jRGbxuXHDY+?L^ zLq7=RaEti70L#iFo|?&ub#sx_@npyYix}x-ngy^NsN}PrUdq166VlfccX@ zeJ}w9lW=_)H~UT@ba**tyj08VjUwby?T<^4*_;wL*a&EC9&VHqo%cCP3hbGReZT^H zrgARdg1AmYxlIZ~lfQi|EI26-FYsV4z^+G=h*5!SZA4Ws&Q!z4|DZ)$eX{kzbMMv< zggQlql_=93qGHh-Hq>CA2kla+Sq0#|!aan{T~2{;%pHY4|#FoVcq79b6G!pRe^ zAYe^d80-#`DIB#hOr|{1D9G;3wm>Inw(T{2ZV|Pyd31|uUG`9=J|y<;_qh?wkj`lJ zhXGV!iOQ<8)9emtgd8b^(=+SOV(MfCVcM{}F;UmrvIsXSl7Bt8p(Z+$l_SU;|5CbL zK^8t8Ha$@W(h6Fv>Fz@o%FAj#L0LH|m$^i<#$_f67c~J~Y8hNqXSgW9CCn*Jb2VI#u@5S^8CeRFk3X~-S`L?3aDC7L*Kz}C z5nwFF7c|hLq`0)!laxXDdrXqrT0Ti_xI`zXm8h@)ON!)7g+`41yO7sxjEZJRMKiFQ zXCF?NhtoCUAfC-P_KqWP_!|J-tZRF1*PL}Jr~ycX`IE|j41|2Z zRLs#^4h8JcTSIQ~ArbUa#xW%Ke|k}4fn;8<6?MvWGxY-;#J!mHyT}u7$Uxi?VJ#WR zFn|x^Fb)(XE-~T26kj4XrOG@64iuKwO0bHNh$kXcgOl(c(tQ;=cPOKCf9DHb1_?t1 zxBO?T z^);d)Ky1tg(1p}tNTv(WVXvXslwN`8R-Mx>X@xmv-zs#mzY|BB9wvxugjz0QU!pkk z;1>~CPTv>geu8h}d>MTof5|-(hCfAJ;4whY3C%tSPh#AdnoLQi5`;90>zwCQ4AF0q zF1Lf^#ZnmvLhGpG4nuXMOIKLwGMUP25(iyl<(O|$_~=ySaI^P}T!IKZMlLxm8F)`f z2HsPu8M;ZT1#!NOkl$|ZNfGy&B@stT9mJ7BUL3(G6loj56-^V8f55sHN#<%Jie7*y zB3UDks!T{bDpgNmyyxUHJjDvUip3CoRgUdItZ0y>fmf2A@rcu5og6!mSmSWrnE7qwym1T67-8+Q15$tIv=X`*C$AXQt^TCyBfIPn$1o*;)5*_U8e zp=DO)LlYt$kQ{R$f5|M%etSrd+pwm;Q^Fh$nPj}2$C!gevqB9)x>_@7xidlVpmM}z z5z#-X9C2A$ae3T9%LCjR2WSd7kC+jc#d9%BQe~4?w~EY@5t@s6EG=5W0@2}&RIPjxhyJ+$_vfq|5QSAloy%{IiY#G$_veJ*J;AHE1P`<8AA}YGv>u$$y3#2RnL~( zws!LL=Fa44%pp%(g?~Jql5F8)s@dg`C#m?pj6U6eHu6*v@>H1=dFsmYmUrp--;hzK zjTvz&Ew#u=1mFX}&(e7i0HA0^2ubAvd2&*Ozp*4LLuDmf8IC?>6L7aBd8=KDM`8(t z8(WE`dsWcAlF&Wpb)3DPF0Wk*sD0Zf4*(?AW2x_)RPd-X7k{_45y6!?8rYSsz^-;0 z*xj-MD=rP}hP>E;20}69GsYE*RlhRS6?(p}bXvJ6^X%_qb10{kx%3W%OJr;uro z%KBYK(SL6l#T722z=l(40!C4ny6O`!if(z`{k$1PVM0bxU`A1pP&sxcdL2FyGVaXE z2vm4c_(V7_%5#RYa0ZhF&et2#0cYyS zN9hP`Ooc%5?k%fDY%z?wLgfeDA=?~naeC@0e`;Wu%TkBnG4q)slxWI?1sqBy?5SI5 zZnu5VB@enLtfD4W)Fv!Yl>${;Wk%QagG?pRX5BK(xb$0e&ATw`rpV!2B!HILU)o2l zlYe8h;e^_o5KLoQjWg3~!6cSs6DzE$al?m4Knya4!af(4v=;j0uHFQwB)(SsuAq;# z9jy#IS}}1Q1NOA+B%f^sRwO2u45Q(*Pe_6@=0)QrWAa>PVSzM`ggG3MG@PZS1Ukff zC}|I%2@3d9z|R0^8p%K{AFv5f&gTYMwtw6J>03_wa_$XW+tP9|_fL$Os<=tbr`Wa5HhO5UoshV7K28La@+8?+F#IY-&U3_*+Nluiv z4_CVa8}@3qq`c!`Yuf?|CHJUa+}i_=w8k_b?O7od;I!W?>a*fwd~DdHHcf04jDIfYt}35d_k64niv(gO5MrPJdPPDd^=AWd^>C>?y>js3nL9K|0h)7ic_>A#(VP z^vORKU&M4j?k`E7)%S>c{Gd_~`b$h_@GW~HCb>h|Sh{tuDPiwY8-Rtql-Min3O|I$ zB{hqfCt1*zn7h)Qb-lF<4|*aQg{BLfK-rUU`Z>tv;Dv=$lAlnz%9B!8+YOsCXl&_&OSGL|AXenEPugBmSCipAQQNS z5`EBxeb^cH<82hCbvjz_e>cc40rrlT5On%r)?}vVa}!O^=h~+ydOp*0_&@dZeD1ub zXLm*}nFV#C=^4ZkuptsBWR6wC!T8L3X5axBXGwlSaV7AQP6?niehkWLL4z^Cj12cH3j__)S2SbB*yX(bf5mIh5=qf4?4)l?ygZPCR zrG#Epd;$nmp?{PH5y)^%5MjsX3>fWP z@mzAlAN|LoSLq_4*Vt1uqNly|z*BmNdkK2!OVblMe7gt;_QzS&b;&A(5xhO zG>V2gcanny+(SJj@W0mQV*KvV9=y5yeOg3+=%%MK##SP~23{P(D&r)!awCS{MT~&*fN*-IFJQ zMnUB9wSOpxFVm6DOARFlL;ML)Du0YjM2`4+q8Hj!qO`Q5>{~tJ(2(wP^zvo7lv2<$ zpZjBWn`p}=#VM~^a!Iv+eF9(C+P~i4;p;C&os%TB5R?hB%mCFsM2%HD zynQd{iemd1@D2&iy3g^=$q&mnW%=f5d{aNiH-CrqH>F%6wf1lR7T*Mkn?}rJWBa2I zkLS~%o$Z@~hQZ#J@s#v8Z$)J~``Ke3&a$J`_4{2P&ibz3n^9TZO_Zn3tnXldpKH`9(`IuzSHU!nepkTpEC$ao-*_D z^=&___*NA&IGRnBmHX20AnlH^u@ZEra})w}iWRgz%pA${8`DWbmf zXL8#u*>b+7Z>y3D=hJ^?`Yf4=?Jb9O{?h-F+rQOec7I>rUn>VXpZloXz9i14kbg-( z?YSvqY)%@TjVGUVEwP71b2(({o=A8WrDl4ffV2opgwdKSBHan6K)H#}K|-z~PIh8^ z948YGeN3NBd_752kU$v|oBAxbcfIC{2&0}(h5pRZ3h%|?&Y9PzDhWr^-y9nYH^MeQ z8;cBWncggCAKK|qfZ{**RRPIDLVppg!e%5*_&3({3G%=oC7c2f4^6~h32j78cFiTp zx9Any{&OD%@cn7a@3A49F;Mh3qOMfwC4oqkW z68r*&UzCGi7}Eb+|8pM&e%u1Pkc02oh6>s-A%l|N3PGLafF;QenD#M5518aoXdsb0 z5Dep|Jue98|E>RZc%=XHgL4e3eah46XC1?nQ&q*GxH+8}11rhE0=s_7Nua%5wh%T+ zIL0u2mYr#6is5IkuznC?vwz82B^+dMmKy3zBjP4vg`edR zPjZe*>4QG(IRdq-8JXigOrShD3}3KTf~q|1m7h88a9{_$UejdZpDyk)HhJmZ7en@c6&#gk%5d_c%NdT+f(C znhTU)QbXZyAc1pAaDFcOOXTc68f%tqbKE>N#t#aBS|NRpxur?3azL&XL&kaG54X@I zE=rr50jesQs&J6xFS9RkOxjj-Q|%JE#kVEdvWM#uRr0L2Oq1D=E-Z|j;4lHY&T(Q1 z8~`mE%OPa}DKl>IYR-STn{)jqg%$nz`bj{4VJ#}xE?|>0kt$IpE^;%%@EDAx#h%00 zqKjs;=oV-u@&7RSfz;Eh>nWUHJq24&0jO0PrBz!UMO<4#HF@az_|7E4>*YHq5#DTm;3UGErIQhoAb-Hq zqfQEa=qk%)fzJ2GBe)5sDW}u6S4TT`dX~xe7c7R`o#<|XI|M1usrPzQt%$Y4gsOLn zPYj_njAi2qP)ULn7Ai^50V*&Q1?>DKfI&b`4H$$sV{Q^~M2sOmJiBG6sSxt1$`j4L zpF}1F#e8e1}Xd5Me_>czT3TE()(#=r}dZr&%5#fS_2~jiJufuvyj&5h4&e z28-Kr9GJ7Gq@D#pK90RM`{lMxY{orb8*_OiC(KBAlqbw6>$^!?9wE`+NJe3+*dGOX zF_qjfKnFjQn+ak;<*|K9#pAu%!S#UWraf*_Nx;sw2Pgo0weLVkSE0kXPfXdQgZ6! zM*XWK(UWzQDNpnLNE`=}HO+7?RE?PcHFj{|0mh>b2iP!1Z4Ff3_ymuj4@w-MFi^P# z8c5pL3Wb5n7)M25C6LkqI>BS2gl~46{rs%OhvFTtP>s_RjIaNmO{^FeWWVx8|vx{qk<}yI_3A1?0(OB z%d{kPfUfxHLV|d{kd;OHO zdcoTG*9-b;{>AzzNV_+Z7Ru|Nu|#KHas_z zYnD%c@&=Z}q?_VRq4i^sZLJ)8oE}~;#DD(4R|*TV>RDZrjXy80@jg5I>HLL?fBrnA z=g*7uYV;H9E|W6Oq$IlyAbViUl$Y2$rU( zvmuGb{j$Ls!hgAk1U8?2n(Gp0*Loo>Ih zC3tWGDM6)uD>#N}3KYAO#56?UyuOc3&LyO+DoT`eJVgj3B)6g;WU?wk6opZ{z`{B8 z2LaiyAla)nu;`Iy*TCX!PeA!&x`BiPVbYb6?;n%F3;GUtD%S*U{1_E zjim40TLPGv zq(rhx$mRuXKNUdW%0%FbL(QroaJ&y!O#RKK-Kvltla8WwRSZY$yuWHBDIb#9z)iZ2eJjWTDGo?V6>$M=wWgu{(rW30Dk@2Z2di zkg5^LLy<^8d;Lx>TZspMR^D^-~iWe18H`yeBD7JZu>5rK0JJ z)BT^;Q-|5wd>(#+pE{SH;OWnu-B0k)v&K)bOZy2vYy1R1sU(YkM8D%C7qt&&+h(t!CI2AdyvE|Fq%^1M{qP-(QG42I>CK>sd+<%LYK=SzPf= zih^E?Ozgw!S+wyj)}XG#9qVcu%wwn9QhU8hcT86+W9=8bLAAT3+EiuVAXsde2BYbH zLxdQT>xx~(J(#h7Wiz9PvuOFLIOVlhyI1!%tCR<*#D}j9Jb$l;WYNE8NU+X)t$2hD zk8=>fA`2~@O{}T1n10OngDq|hWJ1fpBO$SKwgLK# z$3}lPWuwLdawt$GP0n2qX7+e?og=OC??CaxH4Q#WJk*fXb7^5SUU<6obje0+7{6j; z(-(V&^;Oh8IQS(aD2)FTixS6dmqMJW-2P8S8o;i}Ux;T6J>T2+UM@*_~B+u8AAA>X8 zCCR1q{iP!?w^3IE?rOkYP2c|JFT9zEFsIt9Z6suj=w}4{8vmj%KKI4v?$OBD+C&|w zqXTuP19jVhx^#eacA!ReK$JL%^m2L4*czRAO7QC8ETf{nMJLYxU~|G z9E78PMjsaG!%O%O%H$d*&8M7P217!Sbkq022rPxvaFH7>O2fbZk$?D`2TAhA)RZLI3%!pZ`?A z9VnxBAf`+kgK8L8aG^% zhQIy(1AiNF!%OarzTH6axBfoZ%*j@*=!#Ao4oT<`(_oWeJ z%bN{^n$8F%Api2W9(`b_ISWWRZDSMJyQcBTgN;DQOM#oy7&m$3y=m9I^v^7M(o4eS zNYXQel(Dt68@N;xR=jxx6AizJgzD`fG^*;E>p}ZH+eV;L&M~?-b!(Xl9_0KCbvJ6+b5Pi9Vpxl6s|D}bNfZOqxsamW-l=qwBN&E zn+>o{XRvYmpZK#!e&{ik3DH={jfFgJWc{9{$6Z0Y6>hh}?GnePwG^R$-H6+bq+K5~ z!PKpX+U=bX-p_pegF7{GNkWV}lo8W{2TtVa4S3{i^k6pkU^e%FSau(zgl;U*nk-QC z0DE$1e`eCd?e{X+W&>=~8EoACw~p-kmb70%V-;?!!sD(`U&?yiU1+t7TkYajXAgmh z`DoSWR()wT047WWp7m0HyE7+*_aD9aGoK9^&!;67jJr%fAgI9h)-^|fOA6>gfqPKk z9&{190h79cNj1hK?m-VI4Anau35u!xne_Q=v_G5MpDpb_``M3uHRATW&{!8Y*2UxQ zqLCXskI`z(t;XDHVTczpS`E0>Kw2#&Y_*;Rc=sl=CxrLs-u|_Jj}S@4(338VyGusQ z*xtJ22yn?%^k6FYU@G?@hJO>GPd6~B#+bxCU@LeTHrkoo{%rcZfc6XAenHy*%=^Cg z^!?m^jK*SaEaq{?)E9&2Q_$)ZZgmQ`N<^gyO5KfxSd)c_R?7*S%qxI*f#u68C`M-UWP{PUD_R?N6o8r=$Jp-2QZF|6hJ<>?03w`!mqk3~p=&k9!97e~KP= z4XxI=)f%@-B!w2zG_*R6Tb(AY&H^UH7&ol4(>1(fv>S7~u^#vPe(xy~7pGFw$&8J} z_$%}Sn$op@5$i0!ch})02eTc-J*>?e{QW7B!u(*ZU;?jqVPa=S%tmnh22&g`4fe1?DbcP9D!oXurhmmyDR&nR!nV&;R%xZ++W+=f?9k z@whZ0`<@)0zv&+j{^tFY$MZ7UFLV24BPMr$X5N#;^Y{MUnRmY7+<4w59+xL%-;=}h zPe1eZ@i$B!&!?gNY25xaBPMrd-jl@h6Yu)tcRX-zJZ}?@r%lMdCx_?nfBy&m?19PS z`7E?Qi`$=N#N^J*dy;tm?n9q`^jFV~=WXnJ)`aYPa(KS$(PMjmb@F(A9_)K^c>bn; z|F>`FmUH9zdGPPa;rWU2KYCbA9?#E%e;Ygx9k_>RKjij9Y5!es{LR0S_6umNz>O7n z+yw{Er%axM6TGJa&!%cAH|{7NZ#(jZZ;RYQ93SH@@Q5S%x6RZPPo9GtJTGc=4Lh2& zpZVr{{};&*b2_S_)TOiY?gTRbr4&Yt1;&D5?Km5Iq{eHlB?n4dj zqqZt%F*Hq`h=a%ILCigfr3X_rp2I)J7_{5X9v^!5iGu-;yMr1^T{=7eo{m%w^S0{w`rw)Jl--wv@f#Y|HnW^h6W~K@F_f)h$mD`^x?H2&|h_nZP;^f7% zn3?|ev444%jxrMr<)shML_YAZrwe)m zA>7zRI`NRrOi@QX@5H~SfL?ZEZPsLM3ja3y2gRgh%}niZ|K^+iVi(Cxgz8l^R^`U3 zJZ>OLL?2cr;NP^6`p|A4x7#N-?N%@oKGd-?tZWmS6~Fa~cm7oowh_Yf>P8}N5&cYz z=biZX^v?Vn2QsM>4EOScaDVK?d;dU_Ql=^_wm$wfkrSzt7`IP96XSU&{yn1;{|@Dp zYXx|e!97Cz5w{;n`~QCC`)|4*lc=U3f8X~8Hg8q2bubgAXU22PdMoO|fZoc%*{B$z z{gB%axqZR%S-_%*M;);;Hyh|PozaI||L$LZ?YqCi8y7WgY@W%3%{Z}7)06W5sh(>hTP~$QJRb!~ppicbQP~*q2Oq&b( z(YSA8t_(ij$M4B7bpxjl*8@_MjR{$JpPUKM%$6E?mKp0y(On zVm}BUxA3M&*(XD-sejft&KU^Of-=}7E8ZxM8R8kCyM&jKbO^3VpXC^w2RxdAyzeaC zFM4Dv{pFutb=RB4z61lvdfL>2oE12c;GfM{zc;;r`;wFeSguo zTk!j%Uo>tNZSENS{=^rxJH{shRf6ZyA!Qu0s2K^WnT8xvLWfk6Be@EhqZq`IfLLL2 z+aCBD5od~}?B*!&xCgA-xq0p31K501GH5Igj_?14gB zT#n7Dr~Swm^tAqFpo&`(0yZ#3!isVT`oo?MDBvL=X+I|n;daDL#zX$Vet*s#!j0jw zNSDXulG8Bs`!}%jEL@}PMxJLk@;u(iTfpZ{O11?1B@g3)E>_aT=1{R>R;Geo2$j zsU3eKUmEwsJ@dE3=X0(XKMW5;e8b_q>i>vz54f56Nyjo zXieIqf9v}9)R|uyO7Gp6{wjjGc=~bbk5aEeDX#A$+M0MALn5uS;}vmt-}yFSS^AirxiqLgp?j7%Tjgby40SrgRO zB;oaa@Is{?t>M?-RysXM16ZmPW$4rR%u$lC{vCc|em=)1wiSKJv-3^rpMh5}#A8c> z`gc`BF61LP?&<3Q70`Fz<9K&e%j`G_<1aP*x*YhguW80vY%&7UNp&M;VIpuf!t{US zBTq|$6W&>-6$!Vq%}vs;C5Bg&ZW&1xtw&5tFiHis{@T-?9Msnb_CXL%Q#C_Pj(UX} z6C~pd?%k*Xp+nh2cz|WK_27p=`*fjy7evG6GYvM&~!?GAFcmCgaPnJH`bq1 zcN4JkJqUCURC^E1z^EU-?T0e`P~3kH#MwTn_~*NDNJsTaNYh*YS7o}xUg@5ICK#1g z8pZTcdD|%XTQU%)=*MLnsf!%BgaJWq4Z|6<$OrR@?IS>BQR1+9_^Bdtxcq>5#9X!H z&OsN%%{MS`N>Ay=Jh;SrfC`QlY<;ta2yhBsm&5_<-&akKgD=R^!!eX|EYfBXftC} zsz%qOFCU7Vh1?K4j^y@v9Dl;&^#TFGW7kr;4sHU$!#RLvQ1cL2NHQ1n zXvBj2E7%+hwJoc zQ)LKCuw;alh(nC9=ypNe^EJXo@}soqj0T@Y`%L0%2-p+IeCcTd6L5une3hR~YQ%KJ=UJsr z%HVEdm4FAX>)~koT(^IxgOOt*eHpVaM8KEU*(csKq`x;utv%3IU7UKeE$hvV94RD7 zKybOc#MV5`Fnjc`VW6cUMBAXt`WcnPsGx)c2r(R^tLbCtWelmK!q+%C+~of6Ku>nq zHd$f1zK_o|a6Gi_@``%$I9)Y7MwK6un1^^@tQmQdsW9DRDxrTBLFDqLKFk;%a>j-@ z-HVpaT!uz><0*2Kr8{v|!PVoYWV($w2BQUTw&MmogaPQj*@2r!^_xfCVmop3n7(<; zEw&pskL#Pq-C}!ivrFIXa*OT5&6E1(Nw?TIZuaV%y>79CxY@67_PfOnxNi>O=77F= z#=SX$n`iXRVfTOLC~gkxn`hmdu-KOWqeX|2MkLov%y2W9lJSe+`T9Ynq&K1XMuc=i#^^gd|OoB2&9=#!$-!m!x|2X~JmD z&=5X)5=4JsY;25!*TI5PKdm@J)DKir<-p2KCE}_kJP1C#g^zCdAxZYvN2wRH;v~nl zDqO3knbi7rOUb;6$EYyI7j|e$=wU__0d{yrq3*cHkIjbNxF$G2!Nr;K^a+?hAMx>r(4%RFoaz|LlB}lgN9R00&E7# zuq-p{f{}pXMe^VGbdVO$u+L?hlgjtZ@3yvo4~FS{Orzl}&dWk8LPlCH(&6o!zEPQ* zs)P1`okme0BnqMA#C#1%Pq+F+9;^KzV9hKTrYiW6wx$kEjD8ie1fH*{1Qd>v<& zl?H!bQaE`ch!mwKMOGS|0aME)ikSx_SZd%m$}Vy+(8{8;6Xz{oj{|O&^^%0ZXM*vr zS=7kdtglH|6Nk^Ofkbi47^B0MhgS48YiPO)Ms5*o81oB)H-W+Y$Y8#2Xou2f0}_w$ zUAL^O0@hWq#*&X_!7i|FK&Tr>qO%2d77~9&C9%MGc~On+3ygbwQr6HF1h6Sd7et_4 zatk|IS2AVcIYkYWPrB#|U`}~)KrQ5WqeV!%q(vcmCBe6be9rWfl!=%yyuYh}G@eD! zi-0s`L7FnKr7TEOPK?bPZ9a>rD>O5%lvq;&ei2s<$TI>e8ncm6^^(ntsao!Q9#wxJ zDlj4tB|-d;Ap*!l942u3#=KEKp&SAx<`@`K=qs(qAwnP2324x#0DDbJmg|swE*S_d z8HkpXTH8Vf0!s!0S@k+>G*g#gc}-;kyby7kNIrxf0^%X3XXB8x^>1<9N(~3Z;n7sl zYom%v1ZoF9*#K%mCh=$b00*`=b|3T(dl?N;s$|5z9kFjrI2{OI;1WLHjKkNM z<1^vY3X0P$2M(OdKp-LMt#341nxEmca&S6elTXvnaGJOd<20*&igDT(D^4jhDyhu2 zBuxUPyW>oc%JT{bs?>KJ%a69mNzjln1?N94+hm2L+Ti$OeKw2`lBbe7f~0Y#KXa_5fn#sUK9=MN ztBGa8m?vo7P@d@@S~96=dPx24L`m${P+v_B()hFRV=AADqMN*G(j)i~t4i#@<&cLJ_ z194PWnkdL?%`Bf8GSnG^fvnZp5{r|trKa^>tme!3ACUkn@$VK@0h=}du2@!uv5dLT z*~q2ul1mO~>c4R0QniswopOzkZUSE;+j!CHiQ}rD#_?eC#v45m6p3@!V#x@hKMyZ#F4YD z9H-jkIA!HH)k%&s62C^IDxTNBpw@te=;jO!j5dFRv+|O_@RFc~mjs5F z_{2+Ot?t#J+M-nr0x&^w_E{K>pJz0a4^eVddGRhKu{(5eJ*FPnb~Q0~SpezsJ%w}& zFvSx(o%qtYkVKpI678v zT_>M+1Gz7g-*iPA3$iYOK0wPSh+gE|vzKVp}DZx$1_j+Fph)Itch=(=i zBZyYWLHJ-=r>iyTLt~{CeLBAryU~FN7CEGsHhN+~B6k3~QefW?(r9Vj)q z^VxQWc?{{JS1Zm=KxTV zYzyGxJBl@M{qs5HsD4SfJhMR~B0q6H}M(TZBZZ>j$#mIzRPrr|ry{Hv1C*kStM zMkGRJd7?mXk&g%|jP#-?m_@fPXi;&MAZgxEg<{_Wwv zfQ=(yg^lKPMbNu2DCu4yTaRbhIW7y5#utCZN(&9Nf_@#~)fbPe(BWn5(1xq<3ikZr zxLTUc=>+9P>YmAPp3B**&`iI$C1uSJGH?5e8|VtbgVxOT;{U58bXyL*JdC9_kzpG^ z|Gx!i)B?`vtl)G98ae}AszZcqhR4}Aba=_=TLt-j9sKwJdJgc*aGDIkyvKxO) z-0kt^JWH|On&G%27m2qqo=TVLEWF-~jl;{9_0e0gvfj6m<2qmIk>IANoX${zAO#zaGO>~o-nm~X;0iCV$UK-{eH;^naF(u~iJpDYao5^b9~ zU2LF!ksR`Ne`UPQA#b)Ugrk3tn2qz#(Str>ULKb2-men#o{}E?s%G9te94iMNRAvP zD@Dr%;A|Bw<*?iwk5=-a%63abY=?x?5iOEt1k7rQ=*_D{;$*T(y1>ptBm+QX4b$!$ zIX7J>RFS2(a7f&HSj8j$O{3EJs_+e49buv|c`ez~$Fq)97&$YSKtz9$paq&i3p4`@ z&A>u45NOumrkIFJEC}A?$FyIxB=z!j%As^WJx^cEU!_mtdfQiZg8Gx8iZoj?*@swT zc)Jpm;3(`>eG50<09wv`;Y0POeFu_Ma6S!}O)qFfa*g@g>~)O<^-}_aP=iE}m36nO zfhHV+t_8GVqJ*9%*|mQnQ<=auVz>sVB!R6AtTIT%P)Bn^NDsI|jS{@?r5T|g=xZ?! z4it1OKpthnQ%W_3Jd8Q8lKA41)Qe>jNF52xpQwvf=JW^w@oLX|sRvB00uG`0 z8K3upeOXl|kS!Zv@=g6BhxSdRl?h$v< zTeU2Gyd;h9$%1J;COTHunX#lb?7^5;s>H;& z2a*1$D*1mJ1LUMEXIZg0qn6~xN~*&;omBu6PH_#4>j(``f>?=HIcn!Uo@gEiAm8${ zHBW{{RWD=48Au*31a+q&MKVaLJ!aokq-v!>@>eoC`lRHf?kZ)eyQK69B?)2y#$pm7 z`B#{fNMcG!eko;T?SKMK^Q8wOscV-aK>4y^At!&ZYWO$tiJig_4I^E09Zz|K?N&rO z`-nP19YG?>IH>_SJOQq+T@k_4sXTAZgy_P!f;6@qBMv2gZ^S9*YMeontrUfuSe7`y zkE^oLt!vq;h)rOHos+D@+OMyIvJXp*( z@`vj|dg9Mys^=aMv{uB@jILV}%SiR{J4+&>obV*-d4!dYNS93fBToABkbe_rD_3g> zug3gFF^~mc#D)nddXXpnFJWxqdtU_srWBt*qYat6yoS6^ff#o7tCJ7!r&TaGAlz7vyNCa^n=XB+qhmmBE zCeEUB%97aAkURith*^au+TcJwhlqcMw>{DKCGw@F;3cB4NL^Tv<>q0NHX&ZKMNeF! zgm4ksAeS|Ydb)xWdOkV1wW)y9L*w(nd{@X3agS*pjY6oNuaR~x#!B@fBcYf2a$UzY z@k(5i2HYnIR%C48n4bt4E_0!+md`oU)jEyea;EWw#+OLu?(n(i?ruAGw^@IDky)H; zXEEVfBrqKLzp&$ytjk8+2!d$%JjID!-@FiU;(5qj7bL#ih77XrCc@Hil`NBmAyj@4 z^7hwm0O%*`+kM^#eJk!RF?V16nthl4C08Xr26)6am7ifV%3u5O&$J4&nRytVI>*Pg z;xCjA`;Etx7k@aC#H9u(I3a(k1PsAqk47b@fJ0VZ6H(Pt5fAZG&vpk(%`g{z|f?2DYRKsW>oV^vs>kjA@FCNf?TMoZJe>P){*enEQlK=Niz zD2o`-KJWdpW@(%cLJ|C!m3lsFo53jJC*lM_`fY6X@(~06774F8v4(%oq53g&vBdLR zTVu6zjVh~AxivjOi= zk;SCPf&E$8l|<9Ho+}VsD(4v5;NQ~K%V);|mlw zSH$LO8^AX){-MtS_kXKh|c-F~y5T z&Y{V^E-88&%?V8)q!+Mj%TRiTjda}`n<4T-hUq_eh`vx+(I)k`#+o1H~HI| zH}Iu*{_yKZ{`k-*c5jJyAbf(a_opJ>q$>(J48@oqHA-T9E`UOY7#%Bb1)9k8(ATMB z0r5UZu9P!8*aClsoV?hZNk7*NrH_4G2pqA}D}3yZFguz#gr!YSN+2&+&=TPILnMDM z_7)-H2dq1!m@Nzv`O;e$^jdLbKL4^g;k`(*fxGle#{n#P5a@Je=ou{$h4XCl)6agL z!AaNGNS7OY?u$qC_jvaY^iNXiONpY;Ps{MMExurc>W+VJf#$j=2Kj9PG2oj{Avd!J zIPuzF>_NNW{ht5c&KIjf>`TlL#4yA*0-}-W*5le}zyifQW`X@;b6`@z%n%k(;eu1x z~9PdMTAUrwM>;UJP zNiqcEOe-W+&en=P+~=UMp(vvvP#RwR@AH9@Rbqb%1vo3E;?S6I5GRPeY@fjPGqh`| zb~y{=CD~R9aQK3c$U^V(8?p;RYOM}x5}L#~k=Ck$CVX_-fP`f6Y8dk%o#(Y+c2YDdVrV?FwDTrSoFAG;NW>uZ`?--i_UG>dWimdAD< z^4O5TLyv^9%Ht6jXAtD*%n!bQ@6blcJ*?m0d_2vgyctf%9(v=}`#8Elz`I3B;YJ2O zI#?4I%VnJ6Es)GOfJSQCHM7XxFKS3z_6dKgY@H<@PT;NjGK@#RVM4KZyhkOrRlTEo zFZPN-!|{e_IQ!|r=Hs)ku1Yvdl29s3on&9RmpGBKq~1$E2jr&@rpQi$mwsNTCmzI2 zqFbT(c5h6*B%#`z~Y_F)2B2* z71hVacePx&blDKArY~@<@uZ<|NA-UM=DLHx5e}o0A~{CIb6axe_Rm`8*34|kGYdiC ztTX#%Y2!c3%)(J6+>)E$Ra=``7LVLTyCaO)5M;EP|H@=H3t)P|v^xL_fF zYN6*87;9$N5B_SiKsR51_yb>@G4=#c@iA{hsz%fIk(@ZB_pW@|x<*=1D!ucu-~aVX zQ20!6*3u!DKKLg)f1C=RrCfo_ee55uK6^2k4+qA#zHDsZnD@pfCMs1ysqO#UJA0`r zN*(jYn#GRA3JIP+_^VGeg0zdN9ry1BmYNu??rW1f#vvKZTf2rjTM!j<2<7voXbk8V zH7CIaI0^d$lXb=>6Hxo^DeM$W|IzNbs!7W?W_4^4ldi@af7^4~4FaO?6@l!TU%?*O z|I?4p1ilh_w_O=C%;gLGM-_|Fv>4UEnKPH&3feqytn&wS~RKKG3$KKX0^=9w3V;H1*=lO=2T zMf)cQJ?=B4e|`B~gkPlpyCO&)fZy^hPd$JTBv%AW9-zk&-EtnnBl4lbo0}g<6g|(1 z54?OEHaZ6UN2uACZ`&H<4N;7vdp`1>k39ab-oO@a{feNTcn?rzU-ba)N7YdM4}CTc zhg)xku9JSx8%pPcwmz!TwL|sKqRTx3Myl{iR8N4Te???Khm!=I8ls-IHk8<}ZsE4R z=Crj%+DgJFNa0@W4T@##QI`5(b4WcYi0CA!bSS+%@u5{?IY5t&|2|U1E$L6O6<8>A zIaM2*Q6Kgkao`t5?=o>Z=hPQiwGWSMK5A5y?LxaHRb+u50zI&}z?*>BA8C}>K4rI3 zWh2!?f973c86Wid=(at0Q%EG*R{pgWkIQLEn;=5csY!ukxsbSILo1qz`zdU6NQsPC zg(M0q+53W?=Inj>igg`bt^f-G@06*DcghObAB#9&F|LYYc`w2;6>BI2OZ3(p$J066 zKADorl&;L0@l{qCt6-+O$!xp94`xcP zi^17&!>$(+I!yyaJ1 z!9X$Feq4D@m^h~LCh1h4e1TP1+l`HrU(UNvGE-lGcOU%d)HxmPBuv=zas`a*@3qby zf4|V`Vs`=lbvvGG_ph@)l5BH=_pxg6(likLuLaMGB>th(gCa<(ZC&V~#ghq}2cw1j6TS@l!v5gzbHg3qOr*@(#C9(0li97k-U0sQ^dycj`8bP|Gdo4; zy+d8IBNYT*(BZ$(kJInam#~3-6TiGq|15jWBvJi;@xDw{|1-bFFVyf|slPcbj>z;L z^0qd*(tvs!2|VCYBJ3P#oPib)f7HaaA>bsc}|<(!1WqcAQg>-SfOI5*c8Z5)A{K?z}33z2?-TAe`n)nY^4O) zK!F79((NIODX_Mq?e_8&uFJ`>eUCL z^ni1FS$f#qJypn^jy3KE&`hyIaNy*)L?JJ2W-?m{1W-OCJRg==)eObhUtqgzQ*Q(K zE0BUceZPNG4Zcb5fBM&P9DoiuZiLV7Ul=xhAWkx9g6fyN^F(4IKCp=~2Jqo0c%g>n zVi(Up0#c zNplvowe+8;f3ubL(i0CaLPtORk0V3r-p~Kk^?Xo_BkE&E@`n=IKV?6TUeeE%E6wn^ zelR89b>tBZ8V6s9TVFOIw{}@}pjoyK9V;x`M@E5mCY^Z1$=TpdoSYrrski3K_Tn+I zmOvN5>=0#xmmv{9VyEmomt&`42XJ7DhL@YF97FuvvXu)BjV42QGvKvbC-{6QJX2L8JB2+50^GJq{losjO;gNAX zYA zQ1FRbe`hlSH%~s6ha|4pZYBOvbao)&ZH?ufZBEK29;YS80@tpPBo?npIb8h~V(p5z zZi_eB-O6U5kC@@GnAt?Ead3G~skB1-ixaUoJB5%4hz@}8WgDD?0pb~!G%7NUaHiDa z>!aTqXYQ6hIMfw*3e1_mWcnBkkeon&u`Z_(us}cdBJXA}hFMSirv>WOyfuRH|BLXU`$V>{uVFaZ8P7rG7|7zNwbe z!@pG54?6{iYbA6R5dwVaEPbkbsjY6r+N-6`BPzFzh{v>@z(Xt0_Z9opobaTN^Qms$ ze|xp9v!U=N>Vp`2sc*m_QGv)HWDjr~mM>`K94$CvX$- z%&oGZPXdIDJ}dO;B01M%PKb%NNlVn?4vk2z$DM{^wq1o!ZB5Esv!hAu?)V~4J0bm_ zvZ}O6JDvY0hYWplM5!1ok)Fcw98t21e?v_uh0TgyNim;~m~B6=Yw#{9pcM6$hQkG>>cF=Dcf0SwT z7%3eK+*#x@5C{7t>NHlY!3SAh!imfnkO~Mf#Y=zUAs3wa$*rV9wvtxRXs5-Td_xbU zAS-FA_`hH!#qLTfI769o{zHjnC{-Cs4UjJKU?yKh7nT3jn`+%s1@eCA1E;MB7Os({ zRh4r90=94{7Aot+)v+GGo*dZMe|2~^bOM&ADbyX?HOj`RC%>(QDmY0wckCGQ9rs;! zhj-68B}2JmNiA%7=coH~CHLn_?$4EcCRg&ATuJ**{EK8KkXDc!52FIl<_7ZYgvGVf z%jsP4>`qCfgbCKWY@MV!i0-83&ex$Bh(dCt@n2UtCsVfnT_l%MR&I0tf0`3Id>R)| zrn$0FNi?^uZx_$q^+Nh~O!>a-o7UGDA0W2e0)-cQa1&E4N5!$=ehxwjQwr_IY|iB< zeKr|VdB75xKJalfh*0@@aq}GT1}b_-^opP~;JwyVWG@xoAL~5WqBB_7unTR2=L}Lb zSd94rWLv&vxD!0;2(Co%C?w@uNX#tpO))9mLi%(0m-?1Y9!AuQ;zGTH4iB6RT5Lc6 zOB)4ezJvn0T*3^(W8)UUj5i4R;9ME0i%A}SKwK=~($Os92M!idf99G{Xmf`kF@TR8 zP2^2L1Al-s#0{Kz`X8?T`J~v8mNOD`ZHMv^9xzxZN0f@?(P@Tn;jrHj9lms zZ~Pz!U`V$OPogBse-6DwhX-`G48bpeO~~^hsQ&{y73BLD4usp9At(uV@gY7r>rL1> zADz=Z^L5XD>-qO=;S18SIkFX%o<1{uL9;PM&t!*-^*h>P=5|7?%y>@?pQjGVqw(w;VvZc+$dT51?E$ z`f$zzC|37NCV2qmxXMK~q5)-FoDB4b#-8@lavtb?TXV4=-hv{r#-1}-?1xatet4%; z!S8p{HN6+?e+q$JS9+0yTZ{#`72L@Dp_TRkNj&S(8W?|QrQJjW;}5MI%rGvq>r~-E z08QJ^kZ{sm79K?OLwc2L!!-^)C|s8xg!5JM$OFv^^Hb8ei?=)l0rx@3!Vf+G)=d9K z#HF92awPdA+qORNz`~#uzZkKmd}gN{QGq3g#hF!Ge@74&7A2Md4iV3xQal|TNy0^C zW#U&#Oc7sv>j8?U7|WZ8jbJ`-WQ(S+w|)?4lQ)Ip__rQWB?Q_Z_u{{rzH)SQ@SY8$ z$>{oI+kLMfBVX{E7z?W9HDLv4~~rJ+jQ;P0l9kZ;K+vc>qZ8DfvVt-hF9LZYW=#=;gzdK zUyqO04BkI-&&uJ^dq(cMeeL>HYs|~L2Up*9fA{F<>U#!P-Mw=4y4SD1V`Px}G<@f# zb$5)QrqzSP$;ka91ej!SczFHr;)KSp>O4O4-c)8v%%}Gl_v`5O%C)QCuzKBH3HR!? zgBv#uj*Oy?o2d+7a`me9cMM*=VdbhdEAJW{xq4*uj;lw8S6w}L--h+Wqa#-hk5HLW ze=6Ic-%T2h=Kjqs_y4Ws{&!pMpVs#P?TrM8O~dOj+R^o|*Kh^+=*6nFgDZ#W**&Y* zZQ5|h%F#i&=6~*4eb+EOSvPp^>(O%p*y?p7qbt{quBNB@$=a2-53U`&Z*bM7(ZSbk zx}9pgYvsu6*RH;2_2_E{H>|z?rgiHEe+jKdHm#y59burYTzl`z`$yKVSxWeK|I*Ea z>qbZK-!MoBIlTIIs%0cKSDRO^-DIbG5CumVuS)b6(%&5VyM+Fp@#~ChE0b5P9@(&V z<^9R(dp4{cyoWwmIl6lNx@358l*T`JN3wFA%v-W)9YK9?)#%_IYwy2$m=JN*f7L(p z;#IdVynX&lZl6DY)$M~T7cKmmYwo=B_JxZE7Y@>!pZVz*t-5{D$~&*Q{pz)=Zy#Pc zeE-#itm{|t431ET*WJYv7zcIldg{y9sFPjvdpBmA(0uV?LdV66f1c3fPQoKIs#WVp z?!j7kJt4#5#el=e;>9--qzFS+f2_N6eg6GMAlBl=E`D8`FF`ZAY3(T0fyGTl8OAT~ zSPK^3;>GRjYJv*w5|by37r#*B?x{+G9aA&zeM(P9scWwrWrV&6*Fl^b49*xY}`Z3*Exq4sSzt+_4XMdL9I zsOox}UjF{aTIloK3F~+2UOGH%D*tiar;@Hy>AFJwThhPxtR5KwJtTx*OI6=?N1@K` zj?gc@xnt9YwX0Xrz)cByf3}t0O>xR>TDNB1`g_+=%S2z-jZ!W160>yChuymTN9h-R zS-p<>xcZLd_LU=p3$9t59HHlR=lRdAUN^enn&k4!lPi-G`khy-bKl)EFZ$_4$>rd2 zMXBGEap})bV0{k`4<`2xCU>n*PQ2&0#|T^QTz%IKgTz?xW+cS;e{UbWYxO$DF+v-n zN5e!hse5fi_uRE=f8Eeezvv|^P2WC5e=lIkGR&Q8MAY8R!)9cr+U%!E5oM8eiUkl**l9>nC?b?;Y^j6+%Sh;TX zs)<16c@I!Oe~aLA)E01XweH&{-S!y$LLPf3{bG)OyDYK^CU(RS)L|i%cMNVAz5Cwv z!)w+Pq7ECO%k$>zy33V1$>W~)y|T2~%DCF-?a1AOcK{ZH!xzd=SFIl&WOllGlqy+y z$I1=#J972lx=r^Cf;=*R{cqGS$Uavw{-=lDNz&}!f0fQA&9Y>Wy}ySrdNm0qZG{#& zEBhrL3+-Ni{G%gT+!f~~iwXFZ2(Xr0y^e3s&ZD0fi+lMZhhx2z{;s9JmuYyK=P#$f zS9qc^;C_jI?{c7vgErLf)uSU)?lKUS@KKS#g6q1yt58z%B*B=|wx(+qAR zy1bG!e}miC4ki$8L84C6w?FA{xK@s~s3w$Sd2M2jc56*Ih$(X}j`n~q|LZkb-7Xx{ zmiqy~ZPUo`)gUHouU6F*KmFpXg-2dF|Ed?g_^SC_`VJQB1#ZvOe*|uyQ6hzy`y(y)pI07J3UmLZmiNb6 z-v4vU`){gVpVIPv9boFEdw!27%ZHl|Kt6BSLX^NsNS*+)L_FDY4aLSbYf7ryQoj=C+xfK^ax2f z&i7Y)GCwXSe5KbeQ(rSx-r2 zS7SY`y4%`QKyA0tJK)7>QLN6PnV+$u24bThpIS6&a_cthKounksf1 zQ*Hv=3#q%{<6?X{MP;EYVa;HC?mga~lLpNA5ZvL zu^L!0D0(uDi^Oiio0ZhSx+@3oBdn!Y3F#mt?1;dV_3EnRwJ@$x(R=5ae_^6ZQg!Z! z28rI>PEz9L)#w9t#U0UA$t~-X4a4h62Os5+d4!|G>oXqegYUNv3paKGRQU4hl@^}LJ# zTV4u-cMzi9H(l_V-xJW*lLi1gqFZJMmFY8O?%s3{X$iUa`*j`KZgk7~^^8LnL+@U> zVZ-1$f-(k2|6fU{c^6OV9u8GqUOf8l!wxh7q;t*cMh zwUmWq05JJ!61iw4+(BfB=FHATLKN?3&QfF6zu79^-RB6aOf2nLB<@bZit-NQD8YAqtYhBjRVq%S0mM5` zq^AsGwb1lEH&f`dc@O1Hzw)ZRb>`{1Pc&WJD>eYT{a%`V|61L>o6$S{>~*F|L6|lS zde!R9s|f{ezdw1y;P84H^RM*^Pci%!G<+vLt5}>FaV+fMe=`Z&5cc*8?thwoeOngn z0Oe?A)=S}|y)tG~jgab!f+AEo- zF17;w%M#*kn^vxU*)3ESym`Yc(XY)n1I$yiO1I6D@hl%)N8?>(abou@!3hoQWW%Q0 zL5b}?#rQ1Ye|Ms%uM+K4zdbrjc&-3_;Qn7CkdF`@hQ9C4=`siY?(^kdw!bk*0G4lG z54hela@WmZz4UYxhKx~u`s($g%K%y;sdwms{@m!Di}dBI2u!b|nhcC`eYg&EjzOkN z3xG5@s2L4_n|b_n@8!p^q6G#h;lBS_`n!4ky*F-JfBU*kx6_)`b1h;cuOQ<6ePZ*N zNxud9y`)cM2m>3&vGp5Zl%N*!?L+?MSL^P0k^cQ@i%*R62I)O-l}&XM&xZ;s5tjb0|3z8Z7V^6X~%J3L3$^UuESrdNZw5f32|;GUJq$~!^d z!AMwRV9E*BLbA-t;bCF(_pID-mHiNs&%JlAf2Orh+=C>B;gze`g08H(dnF(}I6UIi zDS{9qKDD?OqQl508pd73@kw~Odo{#eh)ocs&@49tDNzeckR(~ezXP%f(VZ(7U3Js# zLy(F9XD#Zj)WqT{GZmYNzkpEjKg^BnD=bEHy>8Pzw-e_uw}T_ARuWwt!L$ajI)1j65a}v5)~#Rbbcfj*5KLEl z;W{WS`#T1&92&tgAkmDJ(HCF!B5f(Udeb_=Ar^Q~URL*R_r$(F-Ahl5k9+a&2WPX( znlE0gsV4qAr?utP)RVgh?@Q9xy>i8h)*)xTc(*6o{R=emd)D6}QvQjg?)`U9f2=%Z z=l)kc*>yAb4|%e)Fd%w2AyXAh0zCRxm`TV(JBF~I=q_5nw65c+;cgz*R)6{PanCAYax;?{_m@ALm zf6whi&WLZ^c_+*$G{Bv@p1t&o@_#;8OzBGvw;a6BGEp`Yu1pqOdHd?of2=20c}M7* zpK{uQM31?y{Df7g!-toCc%Z8U#u?vMY(<^5Ou zE?a)xil4pyh8tgf^J`xFx?6tk=WqSRU;1yi zt-O8J9fNnT9$K^Zo(&s^fAi&T(glBkN^-e7?~;=1)>GM$(M_B0z3=`vWX=54ysNH$ zel=Wmb#{FrH9f!9uYCRU9RJm4&h?*%>;+MwSSnZI>X|dOuI~DjsndF<&yd$MduPq= zn{&yfmnA%tXY^E_xsm{b_tMmvGt}7PmtK43%*$T>igPykBl;ire_Y^3LwT8gnuAXU z9fFIzccEkOT#)8JXc*7uKTny_+i9F=^t1cq{Y0a`=4bw+2Jt-pb0=FrY8|z+7Wlu` zQMUo`Khb|LKX3eh#eX6Er_rBz#ecQ+U%kBUJ@XTF?@{`@f&QxW_YCpq8|Km9Pto5` z(%%*I*H3>`_U9ere*`uIZlyo>*)P)HZLk%PJn`Nu#RxNx1d}~iis57Dl_HOrUsj86 z%kH1KQjApQ{`smBFS?4PkQXh=t2%@C!LMO8_Sx30UgbS^rN|_IUlIfR3!@L*C1#{6 z*)#*$=$fmp;g8m?zFl;J2d=6!{NAWHlAnhF21oHLWm}Y*e|m|Q!gNc=sU6JSR;@mn z`!}`R|C%R`@aF!lo;bgod*~8B)^cBS?qAw+pX&R`I3bvC{*Ug{^LD2hp&55n-Tz;4 zR{~sBb%yU*?)vtSedB=vUiSO8d*6Klf=fbzOu`}{B#?wGKp+VviGUWl31O_Vt1T2N z4Hj7yu&vSxe+pJXaS1RZqS#7s)HblRD|%$;}7J?H%AKmY%q z?f<`<_m6z1;b{BVV)8WaL$Pu7fq6%keAYZVe6{?sl~e4K*Uo3R?SFgK(4^OUEB*^R zoL}QJbl@}jAjzO&FwrJEnJJ73-=KZ0V6Hn}E6GKVf7+zdw!+&DuiGI^5-a0_P)M-zT$IB>~g)TsIDL<`Y(?w2>y$f31hJ)ISu+xI%3DI4^ z40MhTn1GGyu=_juH35^iAGEo-?F$x>(>RThw+V9`_3O3XkN;$&@Nu2k3SgoeO@Dfo200cr{=K)ae+ceg%1%EX!Wm zC;R1q9F!GVl|!=TmAziC&+GRFyg{$xRlOmv=97J1pU>y_1$;rD;!}MgpXQhSUcb-p z_Xqqzzv5T@A-@)o1Kxly;12`>!GID_e*>X_7L$hspr*)*SMe!+ zC7=WqMNyTIqN%d#Reh>o4X8m?QB^ghY9Tq~4f#U;P#_cxDIql!3TYZ)Q6tT3gtSJg zY2;B2eaFTal_sz|?9QrfU$VqK*6r08Cfe^0fjNE#%8UZX?`BM3`A^LkvSQMRe-X^N zFPcsgBEFp;Sx4%dYUeK@1Qsc#E@v?&4@+vA=ha6-45o=ijnT}ZqtPHiADIq4_iq%_ z?hYs>K*uauZww_$p;s}3TG4#7zL|GDdT&@ZsbnM=Ml}Pd@v7+$GJ~9vrX%foGTn78 z^=25R$p~f*!0-<$8c5boKYy5;d-{$u7C-#S&kg^kjeeM$*M3T> zo{76r$8B`2Z*5&}?iJRCoW_e;os9WHU^Go_ENwt~#h`RsWV}byjf3**2j$O-S|`tF-J3XT^-Sh@q&hX^ccg0JoF~hbo)`2f6{f2)UDJ^ zSAC;qz6jE+nKl-saXmaoqY`GjL`DT}x&%-kVXG1R^_WP4OoO8+Ki!%MBsi&=f#4p^ z+|x&C-yrWu$S;2}Sr6K%JJyu@H>4i*Pg6f(>VPx_uqno*k64!D5YGvM=#o+`N!D1K z({6KMCyI#~BF2LRHW4PFe`G!trh%dHZj_C3V6G(($jA$QU^m7*SMY20TYL@m zi%%?DzGmH{@{BvztlgNJ_BXrZ_K9DAlb2suIlJnq_qx`t-}K<#C!aZT;^e7U-hKar zeg?Z@GQ9ycTrj3|!tAc~B=e8Y969+)&*}F+V6e?@k$ItbE4IIaT+s-|*zqhmSpf@}={x_=Jke&%e0VuiKh__U=WyV`y_rYFgEb zdk-8ua`dbCg!G}sf8)!_@0?XR=iZf1op|HiU;942x}>0=*h{C+ zU)(xw^A>r-(Bsed^p};-s^A5Ob5#E2E6pwHn8I6%Hg3AsKXqRF%cstqee3PNU+ZVw zRl_?k;?CQI6wJ9g9=GfJgC2|Ci;@I@^Kk(42=E;5k|sG~fB0!U!l{yo1jHjc2CbMy z77p0s*f4VO9P8v~@Q{zQO~SXLTm-O-b6CSTZA6v32{(?=UuHWGp=7S}TQrl8vm}VI z)>vyJCvnN#Og@_}mU6Ha1LU>j;AGB%^v6lou)>Kr7qtnakpqq9Lqay&+3!je@?E*e z?HuON*W%92e@T|OUp&m_vjse~CyM$Xa@(x>o5@yI?`QRk*2^~3wGOFbM`f)3CqaKT zD}*F2Boqr)uFaB;X5pElzA7iR=#2T_TO^6sEipq{j)P?acrWZPM@)I-+_bA z276=fyMO)m@63-{Us-uwedW`KQ&M?Bvcx7RT6oXix84@jjhpuHQo-1U1sfi0sk(e+ z*4(Yze@1zxJ<`47cRP3QdE%L)FLD-ZTw1uWX!5Szuf5*QCnXObF}Co;N$kF9#7K`n z6fT)CanjUj)2WSB*VZ>IY+bfurnA}XZP=cr@8dFX2KER63(z-qsA9Y%f9P8@R4a&bJUa}fuwYyW-_GV^i5K~C z?orq(Dk#h*^VrHyDpmb9Kc6Q^9V4fdd4#O#sj&%S8BTZHYER-Nu0$9mwp$8s&f*GK ziJQy;)`?hs&D``7LDF~48D3djvYU2kTIkABfH)QenL=vaF{UdY;z$U7gZ)<2h8h314}eQT_BhM1(^*D)Tg zzQqx@dQ!H2E*B+Z*s(awg4K+EK64_Le=uC-x^3bZ{V$_AfTyu30oY;B!FAT@l71kR zX3N1MF=#hHR+KI+G_u28Rg$9$|P{#~s!G_I&N7MA29zP&W&$MF)?Zqz?W)oY@%pTIs#3Xd5Tiw0sS909hS#o!F%dYAixTiNK{p;Rb z=2~}fdw*~6TTr6_X@`xJ0|os)|8dE>?nKW=&*sK?v|o zAU&nR5*9^}h=E8(Ih&1^I)Gax#j!x9Ctf0JPncH50x2NDWB{Q?CId{jB_JIlV4-Q2 z6acX>o=g>C+7c;W9$SnsPfXExAp){Bd$3egg z09r(lic3ZJV@RxCiN|Yt*{5mVJGZ{U9cU74BQJpV5bk@I4l$52M@1?({Kn5z(KIX8QcO{ zun!dY81_Rkl)^UH1V!+^9IJob@KuI&rBG}i5z+_b5Z^KO5ynu_T($g|PSV>zvZh%B z?C*G0LW_o+W4c7_Zxd{S)IBW`M`AL4Rq4{CV)+&G#!j{Gl1Mk|I!#>%-lxWeykk1+ zH>mTn>1-(JtWUs;hOg_=p3-^QbM>de-paBc?88HLg8fb32?AK;)`4AQ&p>~$*jooS z0yN02gF~QL?iPIC-=)9KrC&}C3A8tczKvL3U|-O3wIM_^GSVj6L@9)f>`wG4Zei;g(0-)d5P*;DmWaV3DDs%7B=|(OM6|abiSkG4I3Ha?9Wk9c*|){4rhOV zTq|kvlsr8l1#17_GF|LDyOtT{7e~GWU&^OO-iG$_(AWHBuTh;u+PDsmMm$8yJxBcr zQF7Giw|%axrLDQbcZ7Dr+ELy+dWrq%{`1hhoi2%NP zbc6&AI=i9%)jAJ!DV~^gF`k_15L+Ejad>=J$R~RZgBp8C z@*()YaMWM!^87P@f+cz3^O>{@*qiUd-QInm1N|+DEz_)#^pRlS)n@_nE$H{QPZlFH zzTsQYplw0FCGxPIGvUjUPkRFKR6V!Hyk91sBw|UPN}IH_S8w_0*Ehlqx%Tz7@K8<} z^CINPyT(lPT+Y2=v>9kgE#8nUj)N;mS4lJP>Lzb_qi1ujF7~joso--upCnIlWR@WZ z!rF1KK$-pKxW0PKTq(y+{sF$ThfJ9#VD4IbURqZp{A@opYoBPj@gB*wBi}UuiP^K~ zQS5ps=lpdpoRwjIs>k_k8uzk!$m7>^v~QgMDp3DVZ~I4myPEn17Zj4G5~#l6eaQP% zB&dCt?Xe3Yz;J_yAW?oNGfH0a&M?DWu2qyDXC|3`RzIy-DCf(u^7Q2q@{EPv5TLg1 zF4Wt1E!+rj%|2l9R4~+WEk@FkDzC{3fl9gOl2PXE+-D}5-kbY~l=%B{aMJ7o;f(r2 z(yacfI^U&jV6Pm%^iO2ulS}&x3n8X}#pNXqt>KhHKopz0W0 zwZg%dx5iUGw#rBTYH25#zD=qFNlN3(TcelzuJDnEt{&vzKeKu?RLhY$Ii^onk(Ea0 zO7qr;^1pJz%`)GdW-iQIV>a+mBnk4lr3o~NnG_VQ8EGo#3cQ>OVsdMI3#rF(?nQp? z*UQFtuX-u!L^g;Lk_nV?a;v;%3aP0oe1;F0k8oz5`Z_zkeP*?n{5UVbv_VzloUUJf z#GlxDC*SO~h4Xpw=_1wXsL$R0gtcu<*__4OsVaNzpQ(zI_41vy9%jBK)gTvm;^a2) zL>?k{ZEk=)Up{4kO8dwS?Xa7}xdlRBGtgojwigIygN;sHk`BD}WTND7p_A>2ymw zbOD^T?=F2vb(X!XJQ_ikFYJz>zaQWv1?CD96Z6NTT^*2)@?cqWl(9cI-LeE)d&kWVzIP{j3|+JAATXk zC1EzX&nL^?M@n0`1kL0|mt(j+TjVoGCQt;5I~wFPg;rpnbMy?agOX2#(%7gItqj%t z9O@mO@s!I>_!_hW!@KO)Pn3&LXkYVLTOg^5)00UmxVnT+*C*9;;D|l0X06~{!parRLcwuQqzx$&2NaNFMRegslu`hz#%wtVKn zH}t*xVUR%!o$|Q{k@kN-1ks@75q1oqo!s)tUf3>w@g&08dmLdbY`2eU9EVgKvPytU zoH7JnGqS@7DMXdF0)Ww=B?vav6T+0L`gKI=${9z=K zmqQ^4wksR`;cds@K$a2$@}F_EKxJtQ7#a%K*@Xmn4z4TyU15P93fa3!5E7*YUKOYU zw^vW~B}iHoWuW1(4 zfswpGmHP8{uNVG&fAyw=4|PM$PTwpet4%C!7_@JzG4p)zM`q1m?2FZq4z;XT4z$49 zWvZuOpE^}1lGcOKXw>o9r1z-uc7%LwCYQ<&>-PMp8^(&~K|4)Guh;9;B-BiXPxyP8 zSwX@S+?J_r6j61fYF9x)#Jn_%NRw-G|G?LzLEf>->%7NPU8TnAoU$3Kx<&^p#{@jk z7WzP2C^O{&W1F(T98kFR_cP>fWj-q*mi{>_F}t+~uA8`5#xR)_6dHQN{Dz!t2@ zVZK2^KTbyl35&2UM`I$YF0gGbT!xM8aW3Q%$$1wRvP1b00TGs2@P_8sqXX{k ziVeyeYat4-Vgt*TVFL+0RY3RtpILPQ+=EBTkwO@ZgZCD>>LrkDY0^$=lk>Z&SG$lj zX{&qNnkH>)u|)My-QprZWa8lp(MOd=iYLN7#-JAQQFT=Yy_!wb(64qSFCbxSF-R;&<=Apva}P} zl0E8zo@{X$7@+F^7%Eml`{Xgfs@ z_mvrFW&hX#{VjGX{~RT)Q7UH%W&dR*E6c!BfCe_U5<;PvE!+peEUyyUDK|fa9RSrV zcNg@7PnC8Co%dCK#M5gW`L^ZPfJ+KHG73*H;3(*x+ky$VD!loY6Y(kU}(oNv^ z#P8@0Ad|)tDUQ(%lUnskh8_M%4>f$+Kz)@!Z!HQ<9SHbc9xK>SZ&OZ-l-CssiSQ{q zet?Fn*;fZ3IpkAbP8cZ8@`A*JG89b-Y0{@G?jU>|(kx>eU8B{?uLq$D@RPOd_$Ty| z<($E_W(LtL@-S?PJI$Y=q8&=_@y2&69dA-@uP|h^_Flyv9Hyun!%B|842~B6qYzCS z+UqDm#owVzlfR1xJ3VlI~F3g(5=D4fpof%ARBNWJflSI{{%7 z%@>@2dN62jFRZ)@B3XVF`Dc%^qY7dH_OLHc!e~mp@u%QzYL%aYRzzw}0fXsm!e=lZ zrYlvS!A1ejD&zmg9}&;8lr!)@t@sm&=2|KQ4QleQH>62gH}m)!qV|6dYmu_4`~^J* z!egb&ISA*u_SN(7Iy`23&O>boe}hpIp_xhu!KI~2S^sy46yP2^aS?{mG6KJXY9QEM zt0Uv@v0v)w60JSd@Xe(t@8^;&W`i%m{t&I0;-mCjWO9w(Q(9hzDV{D2Qr&J$vtg9r z!7+$ZrLhTvD1A(=dS&-_Q0s7MkUop9eZ|U#n=l`+ZXFA(CwDu&&92qcQlr_TTTS3V zsg?ksZfGV|5bA@a6C5EUU#|$F=1Yar- zL>x-*OKgAvPy1x9qxmmzm#Ptng&XlXC&<-4%_sNRY$IklUtdvL*K}IU9{5tHHN`Hp ziyZwc-P?rz#wPTO(tp?r5A00U;b0Tm{HlmG5p8rl#YF5uWE;yc;qxrogl(NX_x`}6 z5Rag5slD`8(7l0HkRi}p?=gOd$RhKKmCY8UvO1NO_+Up!Rn8JYsALa)@qM_Z6#C&u z7<`LgJB@_D7U6>PCa0&8adaTQ1h?3ZKx{?iWFYp06ea{=WUI<|Ng{wFmM#!x6|rRm zHm#f01Y)EzGYILzbc^*2#m|W7!!UwKbQn$zb<7veOH-8U1Ohd;+nS<$6oyBQP{GpM zHrw8-q`O{O-xhoD{k65{`>Xua4wnI*SPiQk5SK-Tgd@MI0WG7cu;6b{(gR9et^n7tUYQn&6M%Ba z7g2bfNJU3lbR)ai5qU-#9*qkC8`iV)F?bsC*!!_KpK@hjCw!G^lC(~E-BLmNr9e6f z*ZDi7GBOV5HA{thN`+TDV++e>%At<4=OL|Q`gp9dd_mh7tJ5V>#bS^?XJ5zT5X)`q zbDhy!EU60)v}|vZHA*E)K^JWN9f&~#3q2~y>Iy;YnI?5*M~t+$G^ zvfda;^5=SEkimhgbm~$9``|(kJW|LC2CCb>`DF~!^Vn3Zyfz3oG^K1pmgpWXFA#{D zBE}gNQmuzz28R?W;UVMD%Xk?gSm97~B}_NiJorChGiew~Q~>Q5hU49>WFe`XBr{$AQa$4+}nJJ~N| zaPNy+6et7r2cJmVzXS9sWf11ohbmDjqw1;-%?8O!0_$>UYwBw@+DsCqjYCa)8wQR3wl&d=ul} z#$cuGTR0QiIIA~Lo;7tmYx=q%V3O*UJ%2^2!yF6Q#xcaDzaa?tFK~yz11iMS$Z`6Q z5GZSk9N#X$A4%I6?;!nBr_{fLF94S2v(Af<=UuIvJy?XxDZ(vUjKN+x8|ieSE?kfb zSn*=arhMEn12;8=tYglJFZ{k(L+JpGX~mjyKLeuyX0WzP>3q&m1}(*l26&=8m5rl; zXvQiWWyD)dxtfoCc$FS5<4|{ysx?Nyh^QlrBw~S%Ol~gzo{{_ z=rYC7YxM0!4tsPFze8-0+4W1f)lqG(({_=HzC?=k&N5@*V_k$lwX=$BT9FiuHo+-af;z<{MHFT zhv_N+Rnt`fir4Vt{|dlwzs21D0>IO}K;qz00T{_@Zr~;jg^8@_CcdpfF@VK>Pe)Y6 zLf9dHVFcR}EVNQ$0|W__iy?v- zL$5zq`Uvgl6{@k15MzW>O3XmvuNI=Eql7jFq9?}*;Xcrye4j4-QfR)M4`!W|K^yH= zYG(N+F?hd0EQQ7CGbha$n>r(PuKF=|_I#aAR|!^~iRek99z;{7rO%n9GHG8a=`$v$ z&YrHjPUD_5{sU1n(V62@rcTln(U+>w$*QxUrYnf3H}SqWA?5k;b5fO-9%2;0VD^GZ zY(uy7$tJO#K1ZqB*{T+TkRVP5+0{|IYU4-?fiB+w7)Ed}(nH(W(oe zu69I2iB3$NGk13Cgg57=rq7r=f99mIZ_b`JZ~U}3CrwG8*E@aA^z=D{=1d{J8)TwL z^cqnE(K@0=qT@&pH@%kH+%2CI6^K?7<^1z$oVWX>&m%?i{L<%6nmIdtX8N4*)5fMw zq=B>Sgr_(){%7Lj{C6F+w_ej9L)44A6)dK-0w>(u+V*PTGN z(OX<+HF{WeFH!$Zn$$v+jqww0tcRZ%&Td*o3+v%4(vKc~qBpzmE55)ETE%CXY!(-= zJYO*iBcoWOSqx^sS;f}uU%p}x8*L%3-Jv9Dv4|dQgO6xseavEe-t54&MX^Oz(U1Mj zS8T_^e8m8^%_7G0fo|GdNj{=K^RN;h^^IY3%w&$L>PsJ*gTAcnhD8kIUp_3^DjL~l zs~D-V^yH&EeMqx&qHwm*Pn==`S{eT%vO9iao7k2XtImg-(M0*s#5ZS7OHCO+cam*# z>ZEBCZR4n~2aWl19`=mC*dctJqdAKx->%dd1gg}Dwh80sOiD~hvgNTQ{$h*RG8(qh z@ByNH_nmCRQ)kSL@6z4Yf%?ukR2^W|{^Dks&r$=#_aTt!1I0F`7^_tmNKDZzHc;%) z>Q!pC=1r2}mZnZfiJd)Z^0Y}Qb7M2vtU$3B9ASF`#aB!gUkwm}%p4@9`!1y>$I&VW zUCY)4iHie%qbA)6RcN&*%KxzNV6i{^rlbXnt9{{V<$k2N&kwsKvR%)L5pY5I`?KOT GzyAgN5E`xk delta 10770 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 diff --git a/x/wasm/keeper/testdata/ibc_reflect_send.wasm b/x/wasm/keeper/testdata/ibc_reflect_send.wasm index 75b503f22c10e917a9f4bbed45c30382ec014aff..580460c279568e41b8e427b99c1eef41717e5396 100644 GIT binary patch delta 14443 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 delta 14152 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 diff --git a/x/wasm/keeper/testdata/reflect.wasm b/x/wasm/keeper/testdata/reflect.wasm index 4875b21dffdf588048dead74df58477b01242d42..8e82d10a25c87f238b6a1e18977f9979fc6e7b6b 100644 GIT binary patch delta 8870 zcma($2Ut|s(mQh(SYTNeM9KoPG(klHyI5dV?24$-Sg|1jB1nlEOTdDPqL`zc`2N_5 zVk{wEP`sLczQc* z$Ddz87kP#2CXlsT@-DjpV{+We9y)mlht-S037;i3C|JH_`}M z^2W#KNL0 zPMu;>XPR=C5`?YZOU`fC1~7LiJJ5cF#=6ZQ`*lb*PZmV^XsnP1=GP&FU5r`*0W7iO zIQkyzxBz_Qex1l20@;8rQ|Wu4iywWjburP`FSf{YecqkXpi3;t-M|j?m_qVs+Vewmzp;F(CrFx_d}7{4 zPs)omvgdtT5}lB~c@QLT>-#=nO+J(Qk0JPo0gc(>{wCVLj(XMo{r#*P-=dS`XtXzT zaM>osWStf}(#+7Gg0I{$ZirBC(ZEH7sv;(YMaO4Cu)I4y9;8664U36)XFh{N2_$y# zk91zIA-kx5e8^%5l;ht^1ZtF_TG1RC77w~3g~W3cQos#KC@ye#F8Ib7RVIj1skG=w zJ#~r^jB3*(p&8W2$>k%;0H(>)Ml}caa^rx8AzF>25l!t==%XQ6+Mo|*BR2KLH+k~b zO)J5riPlCyoKsmqOa-iW$td`kZ7CT7&Mdy9C2Rg!AT*WZKkEv*XToMXTfp_r*v2iZ zVGXNT)R@KO#>$(vs)4pdE(l}ia&6e<()rd=MV^VB*mf0P<+1CFf(dq{9K5{*VLqEZ zD@Tsr6|RP2Iem8=Ft_Q=S*5&%-7aX(!oRG7ee7K85zKSrbvbtOI?2^yYerksWSG)3QmI&Inc%-#?#duMG2=WW6< zU#o;XDF!rS7qiFJ6O!$xi)dNRHs*G)-C*fX`y!lVt7Z`&WI}^_l5Wj3)3w%_io6rD z!;EPX%$H}+3I}LNaFOiB0t0(FyTm*SBN_X#`*V(3M?4v=pcZ7>*S>7yvIVN{M zLNQC~r;rM) zQ%=PT#XgdlPm10m0Rn_d)@bQ4I7akZvkhMav9n8iIGq(JNnK4OBcb$P7HekNED77a zVol40IKvkT@D6O*LZ@1$^kuDtglxB)F);m}aJiyzCg7WVHhjfQ%wNPVtQhG~V8yT3 z$sLOJNUjelel}65+No6LJInO6Kz_^i+E8ebl{IfAXeTRcZ6&t-t0E_>9fQS$d+mMW zDgtJxO4XJ&tI0=A3zo{ml>I=q2rW+K%D4-uK7Q&>MxcN|y z)}(b1OEtDBdXpS&+p8kWEM#$S_uQ$j=KU{-aJO-9?ehPGFx6XeD z-Q_L+S}MYE%L|3jm6cz(Oy4yZKY&=Kzw{gR-(G4v?Ssq5A&XeERmTNFp*{R;)Jn z{n(`I#bA=(T%QS2Pc6#JZ#4jU*)2DK-txxV`2f*!=-tmiSF@7N=V?)vz7hNR-cwpR zd*2o`pMm33$|^tNkv$|Y`S%Al62!58S9;U8e1sQ^c+{RKB|jPuUHQQX43euKeJ4R0 z+fzLOMl;VRr7(&eda{YT-iAbW{OQM*w5>g3&$hrcHf>aUmiasr`pI{n-vmN*?8O}@ zm3O=}&_F&`vk7P^<@FV@)ct?UNtiZo`cgmsO);%Mc+(W1l4D0!EyB0EP_TT~lWWT(E_clHUP3w$+U!y0T3B>W|A-DhC|k zJ-Yan23klUvGXh^=m|djpH46ge3b?|C<9%Y5M4tG5)VYeqnvk!V^}*$mnls)Q?|H5 zH}HCsN07F9y4-Du4Z2rBt9GPoay~~lXbr`@og1`;IAy9E3<8MXdZ;0V^+EiwI|SGd zA_B+lQv7ZC&DId8=skd}-HYdXLJc)BqsT2QIzxaWdqJS!^hr->#B&os!`~Qy(nfwW z30m{n-q5AqqCLOm4ZR_lhxxz?@a5n5z#jfpYjEMOZ-awfxgE(Yz={9V8oDVLeIXDn z6#W&05jy>u${c^7Jcb|ihs1gWG`w#BG3vw1n-POQ2Ea8E+n0erMr7bhW1wV)2Zz8h znym_fNowNZ#$fQ^2_2!Kk{bqxh@#Rp9D0D}V{vtopDRTX@L}E1z>C7ck4LtIctSP5 zB}^d1<|*4&G!@L>Z$%pPRd%%kJK$OU>1an=gDVVCuCxYOsJ5^zacple+B@kf$hh!7 zhC_csHLg1}hwN2!bfio#x;Sn^knc7^T&onv=8fSI58T2?B$LoXpJ zVkJTuMp)GF9?$MiR`On*l{|3=4`pwESSilfE6!rRr31~l{uoH2@l^)K!wPXCl6VEe zP=0VIVHjG6LD(55JJazqzGOy*HsH$Jdq9vfd>Bv+va-47ebPIz`C@o2n+Q5Jzxxts>{Zu_qZb*_MuEO7il zIu!6PqcKt0kpXi6;&{_cutr-YAroebsViBvQ(Tt~2WaMWHZ*TnEwThV3NW!wKyl?* z?a;~ANQ{VhL+Lk|u9%aFIEMBP^7+>3Fp7|&6uh$qd4kpWg13ZN7>J-R|XJ&-6h zp}=ijF(`LtQ)!}hyMZs73zHy0`E4%H+dM&W%Z2-NN%Q~BqoTxEWz{?qBaGu^^GUtq z6qf~50U>w!Wg&$GvW2dT%r^bWBD1?ZTm)-{IiFbqo_xa+2qQ@9_ZM?h7(^=lmO?B@ z2Cat27gDS}z6^9^u|F+?>4Yn;kb+n+zp^77F4Ml}lUb1|}&iDz#{=YMWVOZ+BAg zp8B~tc*pOe;9dT?C1?|zzcO)$C9-bYSqm(pA;GOybB7az{N-*!o~Ss;uups*RaD%w=utR2uAaSZ(z2SltQG!1eLIF z&0&iaY2H1WrVbsUsR=^U4SAn~P)@iU%c&A)VcCr9N5`GC>}@Q z8S<>tBqr|@bfihV#R<}WFpob8QT+Z1NCqE;`T+<@Jo_{RK$5~wQxGOCO+E_~fvnD6 zSlu~WQ3D{A>y5nP2TFK+mB@2cShO(fsgS_WicKWn(SpZy2Z>0`MUtG4uwL__z4)n% zbc$s1IlxFuz#hpdV8`*qoA3`!jR-P8q0a6Ww5uDj zyw;w4%q`ece3Oh|`fV61xuUG#CrAilO5B53(+HMrLj zH$#Q+22VuxQLM)noZfM+eC-o6pH)xD%Rz0HvZyMj`fU}i= z-$}Z}F%rif?>IIy{}(~kaeNid@@+5SL-GrIKJYa~r;#<_NODT5fuXeaEhV$Hf4(6)kf!|c2iyXEnhEH5y1L`7uEs|&nO_6+q~-z5NCgrDzpF-Z6VO4L@nJUDnjFGh6eG@sLy+2yq?d4h+6KdF zc{3E-q6qJ_DU7GvqR19$>YPZ(Niog&DtmfDSPko6_IQa7KuWqUjMIG0n5~Jg(qdq( zDr@b>L3yf0y2K1TMu#G9E!5#G8i6zRA~wm6sIqBML8UVh5zL(?@@MoIO%FZpo$Kto}y+=%K9jLLcGsUmH-|YL^U1DWidx`=XnY=Yw5n zpwM8RxU{?ZVGgbB_roFJt>}z6kY<$xe|#n|3=TvScx_!BNWXy?cyTZ$&{FFHNpUmBi?E z3mpA!ln{<9$m<@5la1Wrnh4^nlJ|+gY`PrjiF|>cZ>u8lstrt2=ogI6l!Eh}9k4sT z0k*DLBfj+oHs$@JFdw4%`!C5su_Ip8P?Br%ObGyH%rYpiI$|(A!?|BHe#|C3O;p@t z&>x{cZ{HP{Kq;T{A%;Pj^0+JgVnU^Jel-?*#yz6?ZgZ82s<~8%G^UvD(75jH>zQKu zrT$o-V!BX&Oexms`r{*oJfjC0h`+MG2kPjRt{m@)dnH}DsM&fO)u!VV4V&?0eUW04 zvZx>47O^~a0GSqP=YAYcBkc?yh~iDNeIR~LcgN6pETXIQemvei29j+u_%SNPoesPzr9gS zhUG6N=tmEuq>tikCSI;n1Yh$Z8tG_Xe~49B9!DZmjrMY;Y zxT>6sFOb?>d6=WFEkvu|6{3~od@Q6YG=I5>qT8E1rNd%u1jY!hod{H)pruZ4E8@^1^=Cf1kQ5rO{8otcuutRfeT*l` z^ou4&2qS?81WI(>k*!4JCqTRHs zOiiolTgh$Wl~-HQ9$+Aswvldpm66-9m4G5X%o#}4P82WkZoAA@OB_&MxeKc`1p1|d z@pjtkB@Ee}q)Hkm?DNiHrC{JZwiehoU%))?aLa`tOo9>`Rf_3XvSt$+Rr(e@ z`Xc5#KNfy<;V-IrbrEl?VU=?2D#?-8T*Ekiq5?g1?|vaI2FIWI?4Qw#|ItXY;~BTH z0bl+LZsU`$VG(b44I}FT{{tMexqlDIou^jd7{_;5KIL(@DXs@A8*bA*%J1I7Hk8wN z-^Nz>8}iNfu(4x^sN$h1D8&@QFWkdW2<30?VR!Cy7d@QcVcHCi%aKR+AsRdGVslbH zp$y};_i!B#x{EC-#tgfQ5&T94j-YHT{RS;2T}LA?zC}IxI{MT7Y@UT1G<)GXHs=Fs zd-i6xa!WCV@sb+iTvDW~$J zk&Y9>V{YM4a%m#jj32&*4e&53G52w^1SR}&CH>OvU5P(Ji9-DrKy9NcT&RJ^+>{DS zc<2jq&bz75hflA;vwZXKxRC2>&{v6lfvzIJm~Rrg*;Xl6UZGP%+J9ds`61!9bCD8= zy=qq}h%a@KI#U0bi}Wcq6J4dH5Tek^c|FMdaG(?jvT`p_3bTW+lm^YD89Hj0b&&jQ zsofDR`BF&bC%a2u6Z(a*lEeB@N#n8;Gsb04P98sD z`nasL_?*PdnS&CiQfIf!#7R>UCuB!Ok>s-zqoM{= z!;2nDjrfR%QjkOJjKm2!*@@zC1RlU2Kax7vk?PEcS4oNXf_d?$QI1tfBW-*;Q{RpL d#e5g~Z%6;)59q&<68%hCse{JKc~GAX`ag;W^tb>3 delta 8827 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©vV^zLTps!kmRTJ7zF>~^`-0Xq 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 delta 41821 zcmeFad3Y4X7B@UqGg&9ggd~ua^h^RIKp?CE+0v1H6A%zk5SJ^MAe)G&zyw7E5ePI= zQBi}UAPRzj0YweUCZeLEAcC?9ctyn(+^+BMoa&hj%k|#-eDC*s|9tY8>8`G>I(6#o zb*g&*lDJQwid(xwL@jhKaN<8#g!R5?6YCU0IQgG&Mp#L*r;F~a8)eh=i=+q0h@VJ;Q%0>N#Z96?Ho)JsLV)3vjw8UqSGJZchT|**{O5!Z26b?Ox`b_lLzH}@)3!*=|K%<;omaks&DMQVW7e(7S)R{?;WYO;O7Qo9qr`LEsz`2G{}2`K3Kky3ZN8(omr9FD4QHQ-KHqY%BpQ$l@gm+E@Kja4fA}k z>BH9Nb@DE$h*yTEj1kAJ-6>6DxCeS8+H=ebOT8th!kO+BF~V(5H-!;l&bq(aVTO6Q z)NM!%I|A5UklI32SZ}5F5=X80w7YOUC#@Txi+^O@ zB0jOkdebpce&c~lO7g8LZz9@z$J>P9lV&8rcg%A69t0&U@C}UKAsuc*n8LH&`o`A? zRa3LQUap!;RWYkF-_h9X!n+u;%$2#ma18L;?E7_tDJ2Hof1N!N0Qb)6hFM*lb1kmV z=1fLwqv|!#^)UP4==hO(!+2_(fvE{IzquDv6V6lPbQ>V_CUS`Gq22dt|85GJBrE&NSfWi4*fCVq(%+~6v96v`OGWp1!OYcdkE)xPPi zb!b*yV3Qn2yxYT5AbAS5G)==y?r& zoGaG~UleNJR4_;LL?w!;;C#WγfZ+n9+d|{1i)-H>nad(N013_O}<*=~Inl+3G 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 b$djT9P4X-BC{-7ha8ebGgmf>cqP)PrZY2`d From 310421b341f6c4f0253e86ca2c2a24cf05e25932 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Wed, 21 Jul 2021 22:15:49 +0200 Subject: [PATCH 21/90] Use _contract_address attribute in emitted events --- x/wasm/keeper/events.go | 2 +- x/wasm/keeper/events_test.go | 34 +++++++++++++++++----------------- x/wasm/keeper/keeper_test.go | 2 +- x/wasm/keeper/submsg_test.go | 2 +- x/wasm/module_test.go | 14 +++++++------- x/wasm/types/events.go | 2 +- 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/x/wasm/keeper/events.go b/x/wasm/keeper/events.go index 9c615d0ff6..7763db982d 100644 --- a/x/wasm/keeper/events.go +++ b/x/wasm/keeper/events.go @@ -50,7 +50,7 @@ func contractSDKEventAttributes(customAttributes []wasmvmtypes.EventAttribute, c attrs := []sdk.Attribute{sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddr.String())} // append attributes from wasm to the sdk.Event for _, l := range customAttributes { - // and reserve the contract_address key for our use (not contract) + // and reserve the _contract_address key for our use (not contract) if l.Key != types.AttributeKeyContractAddr { attrs = append(attrs, sdk.NewAttribute(l.Key, l.Value)) } diff --git a/x/wasm/keeper/events_test.go b/x/wasm/keeper/events_test.go index b8ff63c888..ba68dbba45 100644 --- a/x/wasm/keeper/events_test.go +++ b/x/wasm/keeper/events_test.go @@ -17,19 +17,19 @@ func TestHasWasmModuleEvent(t *testing.T) { }{ "event found": { srcEvents: []sdk.Event{ - sdk.NewEvent(types.WasmModuleEventType, sdk.NewAttribute("contract_address", myContractAddr.String())), + sdk.NewEvent(types.WasmModuleEventType, sdk.NewAttribute("_contract_address", myContractAddr.String())), }, exp: true, }, "different event: not found": { srcEvents: []sdk.Event{ - sdk.NewEvent(types.CustomContractEventPrefix, sdk.NewAttribute("contract_address", myContractAddr.String())), + sdk.NewEvent(types.CustomContractEventPrefix, sdk.NewAttribute("_contract_address", myContractAddr.String())), }, exp: false, }, "event with different address: not found": { srcEvents: []sdk.Event{ - sdk.NewEvent(types.WasmModuleEventType, sdk.NewAttribute("contract_address", RandomBech32AccountAddress(t))), + sdk.NewEvent(types.WasmModuleEventType, sdk.NewAttribute("_contract_address", RandomBech32AccountAddress(t))), }, exp: false, }, @@ -62,7 +62,7 @@ func TestNewCustomEvents(t *testing.T) { Attributes: []wasmvmtypes.EventAttribute{{Key: "myKey", Value: "myVal"}}, }}, exp: sdk.Events{sdk.NewEvent("wasm-foo", - sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("_contract_address", myContract.String()), sdk.NewAttribute("myKey", "myVal"))}, }, "multiple attributes": { @@ -72,7 +72,7 @@ func TestNewCustomEvents(t *testing.T) { {Key: "myOtherKey", Value: "myOtherVal"}}, }}, exp: sdk.Events{sdk.NewEvent("wasm-foo", - sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("_contract_address", myContract.String()), sdk.NewAttribute("myKey", "myVal"), sdk.NewAttribute("myOtherKey", "myOtherVal"))}, }, @@ -85,10 +85,10 @@ func TestNewCustomEvents(t *testing.T) { Attributes: []wasmvmtypes.EventAttribute{{Key: "otherKey", Value: "otherVal"}}, }}, exp: sdk.Events{sdk.NewEvent("wasm-foo", - sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("_contract_address", myContract.String()), sdk.NewAttribute("myKey", "myVal")), sdk.NewEvent("wasm-bar", - sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("_contract_address", myContract.String()), sdk.NewAttribute("otherKey", "otherVal"))}, }, "without attributes": { @@ -96,7 +96,7 @@ func TestNewCustomEvents(t *testing.T) { Type: "foo", }}, exp: sdk.Events{sdk.NewEvent("wasm-foo", - sdk.NewAttribute("contract_address", myContract.String()))}, + sdk.NewAttribute("_contract_address", myContract.String()))}, }, "min length not reached": { src: wasmvmtypes.Events{{ @@ -104,13 +104,13 @@ func TestNewCustomEvents(t *testing.T) { }}, exp: sdk.Events{}, }, - "overwrite contract_address": { + "overwrite _contract_address": { src: wasmvmtypes.Events{{ Type: "foo", - Attributes: []wasmvmtypes.EventAttribute{{Key: "contract_address", Value: RandomBech32AccountAddress(t)}}, + Attributes: []wasmvmtypes.EventAttribute{{Key: "_contract_address", Value: RandomBech32AccountAddress(t)}}, }}, exp: sdk.Events{sdk.NewEvent("wasm-foo", - sdk.NewAttribute("contract_address", myContract.String()))}, + sdk.NewAttribute("_contract_address", myContract.String()))}, }, } for name, spec := range specs { @@ -130,25 +130,25 @@ func TestNewWasmModuleEvent(t *testing.T) { "all good": { src: []wasmvmtypes.EventAttribute{{Key: "myKey", Value: "myVal"}}, exp: sdk.Events{sdk.NewEvent("wasm", - sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("_contract_address", myContract.String()), sdk.NewAttribute("myKey", "myVal"))}, }, "multiple attributes": { src: []wasmvmtypes.EventAttribute{{Key: "myKey", Value: "myVal"}, {Key: "myOtherKey", Value: "myOtherVal"}}, exp: sdk.Events{sdk.NewEvent("wasm", - sdk.NewAttribute("contract_address", myContract.String()), + sdk.NewAttribute("_contract_address", myContract.String()), sdk.NewAttribute("myKey", "myVal"), sdk.NewAttribute("myOtherKey", "myOtherVal"))}, }, "without attributes": { exp: sdk.Events{sdk.NewEvent("wasm", - sdk.NewAttribute("contract_address", myContract.String()))}, + sdk.NewAttribute("_contract_address", myContract.String()))}, }, - "overwrite contract_address": { - src: []wasmvmtypes.EventAttribute{{Key: "contract_address", Value: RandomBech32AccountAddress(t)}}, + "overwrite _contract_address": { + src: []wasmvmtypes.EventAttribute{{Key: "_contract_address", Value: RandomBech32AccountAddress(t)}}, exp: sdk.Events{sdk.NewEvent("wasm", - sdk.NewAttribute("contract_address", myContract.String()))}, + sdk.NewAttribute("_contract_address", myContract.String()))}, }, } for name, spec := range specs { diff --git a/x/wasm/keeper/keeper_test.go b/x/wasm/keeper/keeper_test.go index 53d06a566f..234ade0e5e 100644 --- a/x/wasm/keeper/keeper_test.go +++ b/x/wasm/keeper/keeper_test.go @@ -1059,7 +1059,7 @@ func TestMigrateWithDispatchedMessage(t *testing.T) { { "Type": "wasm", "Attr": []dict{ - {"contract_address": contractAddr}, + {"_contract_address": contractAddr}, {"action": "burn"}, {"payout": myPayoutAddr}, }, diff --git a/x/wasm/keeper/submsg_test.go b/x/wasm/keeper/submsg_test.go index 0ec6d3ed58..83001c4010 100644 --- a/x/wasm/keeper/submsg_test.go +++ b/x/wasm/keeper/submsg_test.go @@ -233,7 +233,7 @@ func TestDispatchSubMsgErrorHandling(t *testing.T) { // should get the events emitted on new contract event := response.Ok.Events[0] assert.Equal(t, event.Type, "wasm") - assert.Equal(t, event.Attributes[0].Key, "contract_address") + assert.Equal(t, event.Attributes[0].Key, "_contract_address") eventAddr := event.Attributes[0].Value assert.NotEqual(t, contract, eventAddr) diff --git a/x/wasm/module_test.go b/x/wasm/module_test.go index 376533c08f..3b52dd9d5f 100644 --- a/x/wasm/module_test.go +++ b/x/wasm/module_test.go @@ -183,7 +183,7 @@ func TestHandleInstantiate(t *testing.T) { // this should be standard x/wasm init event, nothing from contract require.Equal(t, 3, len(res.Events), prettyEvents(res.Events)) assert.Equal(t, "wasm", res.Events[0].Type) - assertAttribute(t, "contract_address", contractBech32Addr, res.Events[0].Attributes[0]) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[0].Attributes[0]) assertAttribute(t, "module", "wasm", res.Events[1].Attributes[0]) assert.Equal(t, "message", res.Events[1].Type) assert.Equal(t, "instantiate_contract", res.Events[2].Type) @@ -240,10 +240,10 @@ func TestHandleStoreAndInstantiate(t *testing.T) { assert.Equal(t, "store_code", res.Events[1].Type) assertAttribute(t, "code_id", "1", res.Events[1].Attributes[0]) assert.Equal(t, "wasm", res.Events[2].Type) - assertAttribute(t, "contract_address", contractBech32Addr, res.Events[2].Attributes[0]) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[2].Attributes[0]) assert.Equal(t, "instantiate_contract", res.Events[3].Type) assertAttribute(t, "code_id", "1", res.Events[3].Attributes[0]) - assertAttribute(t, "contract_address", contractBech32Addr, res.Events[3].Attributes[1]) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[3].Attributes[1]) assertCodeList(t, q, data.ctx, 1) assertCodeBytes(t, q, data.ctx, 1, testContract) @@ -417,7 +417,7 @@ func TestHandleExecute(t *testing.T) { require.Equal(t, 4, len(res.Events), prettyEvents(res.Events)) assert.Equal(t, "transfer", res.Events[0].Type) assert.Equal(t, "wasm", res.Events[1].Type) - assertAttribute(t, "contract_address", contractBech32Addr, res.Events[1].Attributes[0]) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[1].Attributes[0]) assert.Equal(t, "message", res.Events[2].Type) assertAttribute(t, "module", "wasm", res.Events[2].Attributes[0]) assert.Equal(t, "instantiate_contract", res.Events[3].Type) @@ -459,11 +459,11 @@ func TestHandleExecute(t *testing.T) { assertAttribute(t, "amount", "5000denom", res.Events[0].Attributes[2]) // custom contract event attribute assert.Equal(t, "wasm", res.Events[1].Type) - assertAttribute(t, "contract_address", contractBech32Addr, res.Events[1].Attributes[0]) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[1].Attributes[0]) assertAttribute(t, "action", "release", res.Events[1].Attributes[1]) // custom contract event assert.Equal(t, "wasm-hackatom", res.Events[2].Type) - assertAttribute(t, "contract_address", contractBech32Addr, res.Events[1].Attributes[0]) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[1].Attributes[0]) assertAttribute(t, "action", "release", res.Events[1].Attributes[1]) // second transfer (this without conflicting message) assert.Equal(t, "transfer", res.Events[3].Type) @@ -474,7 +474,7 @@ func TestHandleExecute(t *testing.T) { assert.Equal(t, "message", res.Events[4].Type) assertAttribute(t, "module", "wasm", res.Events[4].Attributes[0]) assert.Equal(t, "execute_contract", res.Events[5].Type) - assertAttribute(t, "contract_address", contractBech32Addr, res.Events[5].Attributes[0]) + assertAttribute(t, "_contract_address", contractBech32Addr, res.Events[5].Attributes[0]) // ensure bob now exists and got both payments released bobAcct = data.acctKeeper.GetAccount(data.ctx, bob) diff --git a/x/wasm/types/events.go b/x/wasm/types/events.go index 1419939a35..9bbf9ac42c 100644 --- a/x/wasm/types/events.go +++ b/x/wasm/types/events.go @@ -17,7 +17,7 @@ const ( ) const ( // event attributes - AttributeKeyContractAddr = "contract_address" + AttributeKeyContractAddr = "_contract_address" AttributeKeyCodeID = "code_id" AttributeKeySigner = "signer" AttributeResultDataHex = "result" From 72f7622b92af44ba8a83f10df79cd0d45a54a280 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 22 Jul 2021 10:00:26 +0200 Subject: [PATCH 22/90] Reserve all attributes that start with _ --- x/wasm/keeper/events.go | 6 ++++-- x/wasm/keeper/events_test.go | 34 ++++++++++++++++++++++++++++++---- x/wasm/types/events.go | 10 ++++++++-- 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/x/wasm/keeper/events.go b/x/wasm/keeper/events.go index 7763db982d..0a9588ba54 100644 --- a/x/wasm/keeper/events.go +++ b/x/wasm/keeper/events.go @@ -5,6 +5,7 @@ import ( "github.com/line/lbm-sdk/x/wasm/types" wasmvmtypes "github.com/line/wasmvm/types" sdk "github.com/line/lbm-sdk/types" + "strings" ) // newWasmModuleEvent creates with wasm module event for interacting with the given contract. Adds custom attributes @@ -50,8 +51,9 @@ func contractSDKEventAttributes(customAttributes []wasmvmtypes.EventAttribute, c attrs := []sdk.Attribute{sdk.NewAttribute(types.AttributeKeyContractAddr, contractAddr.String())} // append attributes from wasm to the sdk.Event for _, l := range customAttributes { - // and reserve the _contract_address key for our use (not contract) - if l.Key != types.AttributeKeyContractAddr { + // FIXME: do we want to error here on invalid events + // and reserve all _* keys for our use (not contract) + if len(l.Key) > 0 && len(l.Value) > 0 && !strings.HasPrefix(l.Key, types.AttributeReservedPrefix) { attrs = append(attrs, sdk.NewAttribute(l.Key, l.Value)) } } diff --git a/x/wasm/keeper/events_test.go b/x/wasm/keeper/events_test.go index ba68dbba45..b48c271e5f 100644 --- a/x/wasm/keeper/events_test.go +++ b/x/wasm/keeper/events_test.go @@ -84,12 +84,14 @@ func TestNewCustomEvents(t *testing.T) { Type: "bar", Attributes: []wasmvmtypes.EventAttribute{{Key: "otherKey", Value: "otherVal"}}, }}, - exp: sdk.Events{sdk.NewEvent("wasm-foo", - sdk.NewAttribute("_contract_address", myContract.String()), - sdk.NewAttribute("myKey", "myVal")), + exp: sdk.Events{ + sdk.NewEvent("wasm-foo", + sdk.NewAttribute("_contract_address", myContract.String()), + sdk.NewAttribute("myKey", "myVal")), sdk.NewEvent("wasm-bar", sdk.NewAttribute("_contract_address", myContract.String()), - sdk.NewAttribute("otherKey", "otherVal"))}, + sdk.NewAttribute("otherKey", "otherVal")), + }, }, "without attributes": { src: wasmvmtypes.Events{{ @@ -112,6 +114,30 @@ func TestNewCustomEvents(t *testing.T) { exp: sdk.Events{sdk.NewEvent("wasm-foo", sdk.NewAttribute("_contract_address", myContract.String()))}, }, + "ignore reserved prefix": { + src: wasmvmtypes.Events{{ + Type: "wasm", + Attributes: []wasmvmtypes.EventAttribute{ + {Key: "_reserved", Value: "is skipped"}, + {Key: "normal", Value: "is used"}}, + }}, + exp: sdk.Events{sdk.NewEvent("wasm-wasm", + sdk.NewAttribute("_contract_address", myContract.String()), + sdk.NewAttribute("normal", "is used"))}, + }, + "ignore empty attributes": { + src: wasmvmtypes.Events{{ + Type: "boom", + Attributes: []wasmvmtypes.EventAttribute{ + {Key: "some", Value: "data"}, + {Key: "key", Value: ""}, + {Key: "", Value: "value"}, + }, + }}, + exp: sdk.Events{sdk.NewEvent("wasm-boom", + sdk.NewAttribute("_contract_address", myContract.String()), + sdk.NewAttribute("some", "data"))}, + }, } for name, spec := range specs { t.Run(name, func(t *testing.T) { diff --git a/x/wasm/types/events.go b/x/wasm/types/events.go index 9bbf9ac42c..e5c8ff7561 100644 --- a/x/wasm/types/events.go +++ b/x/wasm/types/events.go @@ -16,8 +16,14 @@ const ( EventTypeUnpinCode = "unpin_code" ) -const ( // event attributes - AttributeKeyContractAddr = "_contract_address" +// event attributes returned from contract execution +const ( + AttributeReservedPrefix = "_" + AttributeKeyContractAddr = "_contract_address" +) + +// event attributes returned under "message" type - no prefix needed there +const ( AttributeKeyCodeID = "code_id" AttributeKeySigner = "signer" AttributeResultDataHex = "result" From a4f2ff22c3871618420fa315b8b2f4b26e92a3a7 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 22 Jul 2021 10:18:03 +0200 Subject: [PATCH 23/90] Test for events returned from IBC --- x/wasm/keeper/relay_test.go | 121 ++++++++++++++++++++++++------------ 1 file changed, 81 insertions(+), 40 deletions(-) diff --git a/x/wasm/keeper/relay_test.go b/x/wasm/keeper/relay_test.go index b538e3ce3c..430aadcf26 100644 --- a/x/wasm/keeper/relay_test.go +++ b/x/wasm/keeper/relay_test.go @@ -323,16 +323,18 @@ func TestOnRecvPacket(t *testing.T) { const myContractGas = 40 specs := map[string]struct { - contractAddr sdk.AccAddress - contractResp *wasmvmtypes.IBCReceiveResponse - contractErr error - overwriteMessenger *wasmtesting.MockMessageHandler - mockReplyFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) - expContractGas sdk.Gas - expAck []byte - expErr bool + contractAddr sdk.AccAddress + contractResp *wasmvmtypes.IBCReceiveResponse + contractErr error + overwriteMessenger *wasmtesting.MockMessageHandler + mockReplyFn func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) + expContractGas sdk.Gas + expAck []byte + expErr bool + // normally 0 on error, 1 on success, if we return custom events, this may be > 1 + expContractEvents int + // how many custom attributes are on the "wasm" event (not counting _contract_address) expContractEventAttrs int - expNoEvents bool }{ "consume contract gas": { contractAddr: example.Contract, @@ -340,12 +342,14 @@ func TestOnRecvPacket(t *testing.T) { contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), }, - expAck: []byte("myAck"), + expAck: []byte("myAck"), + expContractEvents: 1, }, "can return empty ack": { - contractAddr: example.Contract, - expContractGas: myContractGas, - contractResp: &wasmvmtypes.IBCReceiveResponse{}, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCReceiveResponse{}, + expContractEvents: 1, }, "consume gas on error, ignore events + messages": { contractAddr: example.Contract, @@ -357,7 +361,6 @@ func TestOnRecvPacket(t *testing.T) { }, contractErr: errors.New("test, ignore"), expErr: true, - expNoEvents: true, }, "dispatch contract messages on success": { contractAddr: example.Contract, @@ -366,15 +369,35 @@ func TestOnRecvPacket(t *testing.T) { Acknowledgement: []byte("myAck"), Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, }, - expAck: []byte("myAck"), + expContractEvents: 1, + expAck: []byte("myAck"), }, - "emit contract events on success": { + "emit contract attributes on success": { contractAddr: example.Contract, expContractGas: myContractGas + 10, contractResp: &wasmvmtypes.IBCReceiveResponse{ Acknowledgement: []byte("myAck"), Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, }, + expContractEvents: 1, + expContractEventAttrs: 1, + expAck: []byte("myAck"), + }, + "emit contract events on success": { + contractAddr: example.Contract, + expContractGas: myContractGas + 46, // charge or custom event as well + contractResp: &wasmvmtypes.IBCReceiveResponse{ + Acknowledgement: []byte("myAck"), + Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, + Events: []wasmvmtypes.Event{{ + Type: "custom", + Attributes: []wasmvmtypes.EventAttribute{{ + Key: "message", + Value: "to rudi", + }}, + }}, + }, + expContractEvents: 2, expContractEventAttrs: 1, expAck: []byte("myAck"), }, @@ -388,6 +411,7 @@ func TestOnRecvPacket(t *testing.T) { }, overwriteMessenger: wasmtesting.NewErroringMessageHandler(), expErr: true, + expContractEvents: 1, expContractEventAttrs: 1, }, "submessage reply can overwrite ack data": { @@ -400,12 +424,12 @@ func TestOnRecvPacket(t *testing.T) { mockReplyFn: func(codeID wasmvm.Checksum, env wasmvmtypes.Env, reply wasmvmtypes.Reply, store wasmvm.KVStore, goapi wasmvm.GoAPI, querier wasmvm.Querier, gasMeter wasmvm.GasMeter, gasLimit uint64, deserCost wasmvmtypes.UFraction) (*wasmvmtypes.Response, uint64, error) { return &wasmvmtypes.Response{Data: []byte("myBetterAck")}, 0, nil }, - expAck: []byte("myBetterAck"), + expAck: []byte("myBetterAck"), + expContractEvents: 1, }, "unknown contract address": { contractAddr: RandomAccountAddress(t), expErr: true, - expNoEvents: true, }, } for name, spec := range specs { @@ -441,10 +465,8 @@ func TestOnRecvPacket(t *testing.T) { if spec.expErr { require.Error(t, err) assert.Empty(t, capturedMsgs) // no messages captured on error - if spec.expNoEvents { - require.Len(t, events, 0) - } else { - require.Len(t, events, 1) + require.Len(t, events, spec.expContractEvents) + if spec.expContractEvents > 0 { assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) } return @@ -461,7 +483,7 @@ func TestOnRecvPacket(t *testing.T) { for i, m := range spec.contractResp.Messages { assert.Equal(t, (*capturedMsgs)[i], m.Msg) } - require.Len(t, events, 1) + require.Len(t, events, spec.expContractEvents) assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) }) } @@ -594,19 +616,22 @@ func TestOnTimeoutPacket(t *testing.T) { const myContractGas = 40 specs := map[string]struct { - contractAddr sdk.AccAddress - contractResp *wasmvmtypes.IBCBasicResponse - contractErr error - overwriteMessenger *wasmtesting.MockMessageHandler - expContractGas sdk.Gas - expErr bool + contractAddr sdk.AccAddress + contractResp *wasmvmtypes.IBCBasicResponse + contractErr error + overwriteMessenger *wasmtesting.MockMessageHandler + expContractGas sdk.Gas + expErr bool + // normally 0 on error, 1 on success, if we return custom events, this may be > 1 + expContractEvents int + // how many custom attributes are on the "wasm" event (not counting _contract_address) expContractEventAttrs int - expNoEvents bool }{ "consume contract gas": { - contractAddr: example.Contract, - expContractGas: myContractGas, - contractResp: &wasmvmtypes.IBCBasicResponse{}, + contractAddr: example.Contract, + expContractGas: myContractGas, + contractResp: &wasmvmtypes.IBCBasicResponse{}, + expContractEvents: 1, }, "consume gas on error, ignore events + messages": { contractAddr: example.Contract, @@ -617,7 +642,6 @@ func TestOnTimeoutPacket(t *testing.T) { }, contractErr: errors.New("test, ignore"), expErr: true, - expNoEvents: true, }, "dispatch contract messages on success": { contractAddr: example.Contract, @@ -626,15 +650,34 @@ func TestOnTimeoutPacket(t *testing.T) { contractResp: &wasmvmtypes.IBCBasicResponse{ Messages: []wasmvmtypes.SubMsg{{ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Bank: &wasmvmtypes.BankMsg{}}}, {ReplyOn: wasmvmtypes.ReplyNever, Msg: wasmvmtypes.CosmosMsg{Custom: json.RawMessage(`{"foo":"bar"}`)}}}, }, + expContractEvents: 1, + }, + "emit contract attributes on success": { + contractAddr: example.Contract, + expContractGas: myContractGas + 10, + contractResp: &wasmvmtypes.IBCBasicResponse{ + Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, + }, + expContractEvents: 1, + expContractEventAttrs: 1, }, "emit contract events on success": { contractAddr: example.Contract, expContractGas: myContractGas + 10, contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, + Events: []wasmvmtypes.Event{{ + Type: "custom", + Attributes: []wasmvmtypes.EventAttribute{{ + Key: "message", + Value: "to rudi", + }}, + }}, }, + expContractEvents: 2, expContractEventAttrs: 1, }, + // TODO: I am a bit confued this does return events on error... "messenger errors returned, events stored": { contractAddr: example.Contract, expContractGas: myContractGas + 10, @@ -644,12 +687,12 @@ func TestOnTimeoutPacket(t *testing.T) { }, overwriteMessenger: wasmtesting.NewErroringMessageHandler(), expErr: true, + expContractEvents: 1, expContractEventAttrs: 1, }, "unknown contract address": { contractAddr: RandomAccountAddress(t), expErr: true, - expNoEvents: true, }, } for name, spec := range specs { @@ -677,10 +720,8 @@ func TestOnTimeoutPacket(t *testing.T) { if spec.expErr { require.Error(t, err) assert.Empty(t, capturedMsgs) // no messages captured on error - if spec.expNoEvents { - require.Len(t, events, 0) - } else { - require.Len(t, events, 1) + require.Len(t, events, spec.expContractEvents) + if spec.expContractEvents > 0 { assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) } return @@ -695,7 +736,7 @@ func TestOnTimeoutPacket(t *testing.T) { for i, m := range spec.contractResp.Messages { assert.Equal(t, (*capturedMsgs)[i], m.Msg) } - require.Len(t, events, 1) + require.Len(t, events, spec.expContractEvents) assert.Len(t, events[0].Attributes, 1+spec.expContractEventAttrs) }) } From 3c57d5f3863af497bd22971f61818c092a401923 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 22 Jul 2021 10:20:08 +0200 Subject: [PATCH 24/90] Return custom events from IBC calls as well --- x/wasm/keeper/relay.go | 4 ++-- x/wasm/keeper/relay_test.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/x/wasm/keeper/relay.go b/x/wasm/keeper/relay.go index 79c684fae9..2a6bb83004 100644 --- a/x/wasm/keeper/relay.go +++ b/x/wasm/keeper/relay.go @@ -179,7 +179,7 @@ func (k Keeper) OnRecvPacket( return nil, sdkerrors.Wrap(types.ErrExecuteFailed, execErr.Error()) } // note submessage reply results can overwrite the `Acknowledgement` data - return k.handleContractResponse(ctx, contractAddr, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Acknowledgement, nil) + return k.handleContractResponse(ctx, contractAddr, contractInfo.IBCPortID, res.Messages, res.Attributes, res.Acknowledgement, res.Events) } // OnAckPacket calls the contract to handle the "acknowledgement" data which can contain success or failure of a packet @@ -247,6 +247,6 @@ func (k Keeper) OnTimeoutPacket( } func (k Keeper) handleIBCBasicContractResponse(ctx sdk.Context, addr sdk.AccAddress, id string, res *wasmvmtypes.IBCBasicResponse) error { - _, err := k.handleContractResponse(ctx, addr, id, res.Messages, res.Attributes, nil, nil) + _, err := k.handleContractResponse(ctx, addr, id, res.Messages, res.Attributes, nil, res.Events) return err } diff --git a/x/wasm/keeper/relay_test.go b/x/wasm/keeper/relay_test.go index 430aadcf26..a0b8ae822a 100644 --- a/x/wasm/keeper/relay_test.go +++ b/x/wasm/keeper/relay_test.go @@ -663,7 +663,7 @@ func TestOnTimeoutPacket(t *testing.T) { }, "emit contract events on success": { contractAddr: example.Contract, - expContractGas: myContractGas + 10, + expContractGas: myContractGas + 46, // cost for custom events contractResp: &wasmvmtypes.IBCBasicResponse{ Attributes: []wasmvmtypes.EventAttribute{{Key: "Foo", Value: "Bar"}}, Events: []wasmvmtypes.Event{{ From 7862abd730d61e00b287d05357209bd68cafc319 Mon Sep 17 00:00:00 2001 From: Ethan Frey Date: Thu, 22 Jul 2021 15:53:40 +0200 Subject: [PATCH 25/90] Contracts to v0.16.0-rc4, wasmvm to v0.16.0-rc2 --- go.mod | 2 +- go.sum | 4 ++-- x/wasm/ibc.go | 2 +- x/wasm/keeper/relay.go | 3 +-- x/wasm/keeper/testdata/burner.wasm | Bin 125206 -> 125206 bytes x/wasm/keeper/testdata/hackatom.wasm | Bin 177773 -> 177773 bytes x/wasm/keeper/testdata/hackatom.wasm.gzip | Bin 62309 -> 62350 bytes x/wasm/keeper/testdata/ibc_reflect.wasm | Bin 282305 -> 281043 bytes x/wasm/keeper/testdata/ibc_reflect_send.wasm | Bin 286907 -> 285724 bytes x/wasm/keeper/testdata/reflect.wasm | Bin 272031 -> 272031 bytes x/wasm/keeper/testdata/staking.wasm | Bin 232279 -> 233910 bytes x/wasm/types/exported_keepers.go | 2 +- 12 files changed, 6 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 3fc7889c39..bd1e89c6f3 100644 --- a/go.mod +++ b/go.mod @@ -30,7 +30,7 @@ require ( github.com/line/iavl/v2 v2.0.0-init.1.0.20211019080724-001e2272a25d github.com/line/ostracon v1.0.2 github.com/line/tm-db/v2 v2.0.0-init.1.0.20211202001648-945e88fd2edf - github.com/line/wasmvm v0.16.0-rc1-testing + github.com/line/wasmvm v0.16.0-rc2-testing github.com/magiconair/properties v1.8.5 github.com/mailru/easyjson v0.7.7 github.com/mattn/go-isatty v0.0.14 diff --git a/go.sum b/go.sum index 1d1d77f933..d22c120e9e 100644 --- a/go.sum +++ b/go.sum @@ -504,8 +504,8 @@ github.com/line/tm-db/v2 v2.0.0-init.1.0.20210413083915-5bb60e117524/go.mod h1:w github.com/line/tm-db/v2 v2.0.0-init.1.0.20210824011847-fcfa67dd3c70/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= github.com/line/tm-db/v2 v2.0.0-init.1.0.20211202001648-945e88fd2edf h1:Pg6wSHMii2zYusYbCHkaeozDgFqfJZWnkjjHPNG9BgA= github.com/line/tm-db/v2 v2.0.0-init.1.0.20211202001648-945e88fd2edf/go.mod h1:wmkyPabXjtVZ1dvRofmurjaceghywtCSYGqFuFS+TbI= -github.com/line/wasmvm v0.16.0-rc1-testing h1:5tj5xNjXCRSfuJ2tNxu6FeuyvlzRHWlBqCK0IAar0lo= -github.com/line/wasmvm v0.16.0-rc1-testing/go.mod h1:cgsILoCDigfQ2XplFI4rOo2ImOLEZH/OM8sulxGoKUA= +github.com/line/wasmvm v0.16.0-rc2-testing h1:8UnwA1xUKdeGJi9+bFbbRl3e5iQHxJhUYEI3XsjabtU= +github.com/line/wasmvm v0.16.0-rc2-testing/go.mod h1:cgsILoCDigfQ2XplFI4rOo2ImOLEZH/OM8sulxGoKUA= github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= diff --git a/x/wasm/ibc.go b/x/wasm/ibc.go index 84e5d420fa..01468b9f24 100644 --- a/x/wasm/ibc.go +++ b/x/wasm/ibc.go @@ -211,7 +211,7 @@ func (i IBCHandler) OnAcknowledgementPacket(ctx sdk.Context, packet channeltypes return nil, sdkerrors.Wrapf(err, "contract port id") } - err = i.keeper.OnAckPacket(ctx, contractAddr, wasmvmtypes.IBCAcknowledgementWithPacket{ + err = i.keeper.OnAckPacket(ctx, contractAddr, wasmvmtypes.IBCPacketAckMsg{ Acknowledgement: wasmvmtypes.IBCAcknowledgement{Data: acknowledgement}, OriginalPacket: newIBCPacket(packet), }) diff --git a/x/wasm/keeper/relay.go b/x/wasm/keeper/relay.go index 2a6bb83004..46c176d77b 100644 --- a/x/wasm/keeper/relay.go +++ b/x/wasm/keeper/relay.go @@ -192,7 +192,7 @@ func (k Keeper) OnRecvPacket( func (k Keeper) OnAckPacket( ctx sdk.Context, contractAddr sdk.AccAddress, - acknowledgement wasmvmtypes.IBCAcknowledgementWithPacket, + msg wasmvmtypes.IBCPacketAckMsg, ) error { defer telemetry.MeasureSince(time.Now(), "wasm", "contract", "ibc-ack-packet") contractInfo, codeInfo, prefixStore, err := k.contractInstance(ctx, contractAddr) @@ -202,7 +202,6 @@ func (k Keeper) OnAckPacket( env := types.NewEnv(ctx, contractAddr) querier := NewQueryHandler(ctx, k.wasmVMQueryHandler, contractAddr, k.getGasMultiplier(ctx)) - msg := wasmvmtypes.IBCPacketAckMsg{Ack: acknowledgement} gas := k.runtimeGasForContract(ctx) wasmStore := types.NewWasmStore(prefixStore) diff --git a/x/wasm/keeper/testdata/burner.wasm b/x/wasm/keeper/testdata/burner.wasm index fecb679837448866b4d34d19eebdd5f2ba5db0dc..204d59d7484e95d8a79a06d448009840b5e6a077 100644 GIT binary patch delta 1002 zcmYjPX-pGA6z-d)g&sf)wHguGu2mtF1cj_^Idl=h0~Ew7nrK9&P@@uzcOpha11KJk zSPwK5BD7XxWmKXGLj2>A7|(d1mOmbUyhywviE+9ZVUqX0dEdNy_xR)RTev}9&ZR_?59z8)+Gp#g0CDZOwT$6r(jy zYkC!ul2=QWctlLY;%T*Vjsja0>TN|VXtnLC%;ebPWURB7hmgiQwt-CaW{j1y^=2qh zn<-&ahLvv5JfUVy8}jajK{tIp_W~OM>k4Nw?tbA8f+a;UV|4%L7#um&LRwk$c`9>U zRg(?SNzd+EsUb%W&_9h?QRMV~nsug!m`p>lg1iW(BG@*X2scSWG{*1pu#|TMia9v=`tUZwl78 z^Dv27R(#&hqrN=_EgdqdRa#cY=#nPm&W>c5jDD|(uZP|+$vfo3{qqs9+MCQe_ItCL zuJ)Qy>(j`#hy^|#5?O_0IpK`;^tS(@itIZ~Pj;$-A)f3Mv5)=?QBSVyj=;#CT71xs(itHEUIej@D=pF~O>DKqyP-Mfi3LxJa@yGLvtZqu5 z1@FAbV7IWB%}je zmsy3?!O=AK-6nvwwC4S$C|HY;gI1dG{gaY0k%Nbntn}4pxEsZ=!x;@8L+O^Pjq9o$ zjt!fg4o6{yv&y|X07mzr0OYy11R%lP7l0jIuFJ55i?=Bh3L}#+CUz!MnS>57iSK%I I1?=g60p#;Ug8%>k delta 1062 zcmYjPYfMvF5bm7Y0+(w`d58}L?(MdSLL(~awgtqC_*k_o_&}pZvnmvd4}u!qY@#Ii z0+h|}7`rGa6p}%WKD90 zPVXpNv26LG=P=8>Wa;9f?CCRd%+g^Z(QfWE0XI!j<^wjUi)p0hG0>{8 zKL}`P44=mdf?OLE7T3eoQ486@`u)K%ISFRnT9#G>NjmG9GZlVRambaF{TsrB57sd=}c?-hOr5(`Uz5)#$Ml5lQ@B>Pobfj((EpFqV z9ufDrjc5x-K1>ja9OsZzu+@_WDcJ2P8vMVoBbaxrBLWQQ?nq<4+hgKMC_jKn!WWNE zVIm@HVZhvzMKGRGr9}i%rkCp#xV|k#Fqqh*A+p}VQkvRQAr-H;4zlp^t0FkjO*0UP}{VI7wA>0lkL>6@)$@PAKre5uIEUd|zf;ZFZ3 z8r#1KpoCUG+oXXKR1c)n~BGmB%UWM=7nauzI^{{yL8 BPM-h( diff --git a/x/wasm/keeper/testdata/hackatom.wasm b/x/wasm/keeper/testdata/hackatom.wasm index 1787fc84a6a429a9b1ba4d82b16fd2490a6b6096..24c75b40758283fee13f1584ebb67b86d8eb250c 100644 GIT binary patch delta 2219 zcmY*Z3s6}Q4`W6nnakRxpi8Bj+IDd#?eq?D~Xb%EuDZCwUy39=)QoK-kE#$K5MVF_c{BV zd&frY$42ctKY*LY#$aQup$D+mKpg>%hM$K&(|~`27Z^0si#20jctqqoEHGea@Bx^v z;zKN2%)ik1C47Jm46vY(*Ef_EZ!29?vLhn0{1mGV3^qmWMH8wks`8h#vR5{R#3zV4jZ+ATXk)!Bg1cxJBA>@-L*#(91<=bbofr5v+hZ8u_IBNHlKpl=Om5Jg zf?QyDUmYxvKRy%9w2xsIwQ<3#fB#-;2SHFL{LxF;8YB(V|ag#ByV%Bfq~oOs>mxW-t&G%2#DMIecH=Yh|=E zuPZjFv}uh0BWs$f#(DT^wX7Q1vbtr~^Ue01&ET8u#BXKTPnQVgpJhK`Y|8PP<(|sf zGULhkHE*izR8#%!MK5(N+_ZM(^qM->w(H<86V@M5`*<@qo+j>jHy9Smy9NJ&=X?8T zufuAi{t0T784l4*oz*ef|0-8CxtkN|f}Gs^DdU9|k?@g6Dh_Mtj6-X5))6*%|mkDiThf3OWlV>AnuM| zw_%Xq?hLaZno&eEEx-ElQd#=ZgqCV<{j^LwL%@)9?0N)}YUL*&?DMnkg!P@BV2G1F z%A}64?h9cU;y+&4$a}hVJf}Nq+O~E_;STTZHq*#@Xp~7k=hYoe_O@x^%%8iolwY~z zLf)NAqxvbesqRLtc^{*m%D?p80`={S%bs@7%WKyd^y7PpVS36KzJ6F;R{3Bno#Wvf zBl?jhiu*l@^Wp0&WX#v2I<(8cZ>BW*cJ+Gu&IzxUyNC7adJcUT1*Gu4@6(VX4L__? zw_Y@2a(&vH6QI*Qfnu|jAx@qi@zT;!emQy!?ABghcsG|mjzizM@UQRQ!~)rQkM7lg zG>v-$o;>~jDvFxMOQijS8Xe&c6MxpS$IU$dG0EhG$K@bR%j<^sa9d zJxQn(9TvE-^GuYjz@a(O*Ti)*-dBaLB0U-2b3#SpMj}SARUFGe7J`(~3>0Ag|30EN zHix`j)UAXCL4sIe;=xM1Cw^RiWL$hdMT#2>9 z#)3eHu$kXRfT~<-K`<7J0t?m)&lE%wJ2M4wO2#V0YFWckWnT{LK#m|MTJ*2MBb$b! zbYN!%-}1`{W#UDo+ls(^w1_Wr;lmr-(-pS@lrym+7ma8Xo%wJ@qw;MoQlQX(<6qCJ zS?eoN1orTV7_Gt|sAg9+^2s>Y;24?DYo_-~V1SbM1|`ED@zt9s5wGk*sMzrq`cW@_ zz6%RcujKARs!qi0f}`l#gZbE_{BaKs0u9Q`jo7ItdxgW(8V!Q1NqM#%8+7UlDv!fY zuR7v0EbkZj)yyF7Rk38zUdx=sa5ZxiaaGKuVmocKD+)_%GRroL8&xbwj8!rlaixm6 zI+m4hC@+kSU85RtyOPZp#VVnun)wS|6^jw?RxuCpsG6N~hSkiYowc^&U>$Q;25Z=) i&L@FD7kbs;a(ZLvRUcIppxmov{dxo|=ig>$gZ>MSTkE9& delta 2280 zcmZWp3s98T72faeF0Wm8mjv*^YlB!oSP(>f1!NJHmuRprCGu=-6_cPSFULetG=yj5 zmR__PokU~fgJLepUuFu@F|kpS#xG&7!3Ta8n0pwQd0KK?sAE-@vm>3+c~Z!&9+w(Z67`LN|st z!}bx5B4!SMUmLvS2;RbF78dcsi)&xnyeVcwX_K%!Rq?z=wth`S z(a+ZvmgN5=?j6LRz;Q&xwX=Q}$9;4&QOp&}kVb9-8#jJDSHzlvmoq)|s`CPfIsCW6|7_;pgpGUm&IY%R>?dmTbLq}; zF}LKZYX#e96>$iW9Tja_+QP^hy&G=G*zKDbJH)uC{ZN+g ztn=iZ&0p}VO@sK1x3r}2g-!cpbIWRAQ2xEu%>(xY3h}yp<5wl%qoTnt-KtHSqP4&e&G8-)S>kKPh~rccjT_QgAGV_!V(^8P+MjqD7KGWAT4`hny9?K)Wa z>~r(^rE@-nZk-!34ey~YPPOXn^^96BKRf?9sE6-gnBfVtymE!XbVJ=0+XQ3iYMWZt zmVrjv+qP@Nrn~B?3VssjLswJeg6kuCw8~jG9&1gl4HOQV6n;+b95Si(?7bZiWbpG} zW+FpczFMVz`ubs;??i77gLd~YO6?lUVtHcNUq{>ehmiwdwT*o3oqYOz_uls5*YA9a zK-u;6HZ`a1UI5_Fv+ggasO{b+>GjVVJ^Aa#{-R?I^}O&A$z<=NEg((Y(AsB|>5H(uNhC?}`1s&@_Wpp}nz)DwW^N!3p{+#q)D(7?oBDKdjFOZjm; zUZ8{`cL{uyPv;@j1B1sNB?9bU_2O|7a$T`eT6;+{HX+1MV|5-ubx@H9o!K5{Fu2?_ zDG*7ic$2k2oVH_{=v|6R@r@l@#o-hLh+C=f6=j5`e5d%S;d7Ckis{1YfKC+UF`c;e zF5HF90fWd*gT&8-pPD8wg~Z>aA^^)>$^V>!1kq(jn$bA1emfIkIryF-%ys94mfFL_ zsvLwPT-4^^d2urX^AI6?GHDphK^($_c{vhAVkYv$SDCPh4>GA`u~~$?vk2|VCR9L( zm{+n9B~DDjV_9f?;_u3S!igu>re%1>Fm}3MlfbNWyuySn8wsAwK-fpEiQ}V#E&}v{G^g-Y|XFs4a$5TJdo@{6vrg35ZdMR0L(&axBuZ2OUcNN_c{R zAdny~ejg9rA9T>BcMHDm^;l)>2gvfkZGJ~Yi)%&rk+_^s+nQMnJ48x88m86JrSt!{ zP#t)4#|mX`0k*KVgJxx43I6u9x?F7~)`QjU6C+jlfIj7PHQi}p!n+0s$aK~?J44P; zrC=**v0HqyjgHW6k^c&2i?Ww-5xc~~S1=R16mn(gDfIR(n(kKqxC^a7t&+DJ8%<;{ zam;W-tsrYtp5BjQy;?x!Aq1OLAWk9qqPSDVJcPNL`D)W%sua0Z%vYSMX0a-=iTr97 zCKgsRqqtekrmM8szpQ3~qN$3Ni0hTiBDPkuD0MntL{+g_;$by=PjuH%pk)V}rVP}u jaed$djq3rKPqD=O-el$L?d+ln5lT-B>kj)b;Zglb diff --git a/x/wasm/keeper/testdata/hackatom.wasm.gzip b/x/wasm/keeper/testdata/hackatom.wasm.gzip index 1aeac836c3cb641584c2f579b118bdac6f12b533..9ef3b02633705856370b01a06ae08aa15e572860 100644 GIT binary patch delta 59111 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 delta 59101 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