diff --git a/x/wasm/keeper/cross_contract_call.go b/x/wasm/keeper/cross_contract_call.go index 9848fee764..1174aab71d 100644 --- a/x/wasm/keeper/cross_contract_call.go +++ b/x/wasm/keeper/cross_contract_call.go @@ -4,6 +4,7 @@ import ( "encoding/json" wasmvm "github.com/CosmWasm/wasmvm" sdk "github.com/okex/exchain/libs/cosmos-sdk/types" + "github.com/okex/exchain/x/wasm/types" ) var ( @@ -47,10 +48,7 @@ func getCallerInfo(ctx sdk.Context, keeper Keeper, contractAddress, storeAddress if err != nil { return nil, nil, nil, nil, err } - _, _, prefixStore, err = keeper.contractInstance(ctx, sAddr) - if err != nil { - return nil, nil, nil, nil, err - } + prefixStore = types.NewStoreAdapter(keeper.getStorageStore(ctx, sAddr)) queryHandler := keeper.newQueryHandler(ctx, sAddr) return codeInfo.CodeHash, prefixStore, queryHandler, keeper.gasMeter(ctx), nil } diff --git a/x/wasm/keeper/keeper.go b/x/wasm/keeper/keeper.go index 42bd93070b..caa5c02cbf 100644 --- a/x/wasm/keeper/keeper.go +++ b/x/wasm/keeper/keeper.go @@ -994,6 +994,12 @@ func (k Keeper) contractInstance(ctx sdk.Context, contractAddress sdk.WasmAddres return contractInfo, codeInfo, types.NewStoreAdapter(prefixStore), nil } +func (k Keeper) getStorageStore(ctx sdk.Context, acc sdk.WasmAddress) sdk.KVStore { + store := k.ada.NewStore(ctx, k.storeKey, nil) + prefixStoreKey := types.GetContractStorePrefix(acc) + return prefix.NewStore(store, prefixStoreKey) +} + func (k Keeper) GetContractInfo(ctx sdk.Context, contractAddress sdk.WasmAddress) *types.ContractInfo { store := k.ada.NewStore(ctx, k.storeKey, nil) var contract types.ContractInfo