diff --git a/modules/core/02-client/keeper/keeper.go b/modules/core/02-client/keeper/keeper.go index cf114e9863f..b9e94cdf6ae 100644 --- a/modules/core/02-client/keeper/keeper.go +++ b/modules/core/02-client/keeper/keeper.go @@ -27,7 +27,6 @@ type Keeper struct { storeKey storetypes.StoreKey cdc codec.BinaryCodec router *types.Router - storeProvider exported.ClientStoreProvider consensusHost types.ConsensusHost legacySubspace types.ParamSubspace upgradeKeeper types.UpgradeKeeper @@ -36,7 +35,6 @@ type Keeper struct { // NewKeeper creates a new NewKeeper instance func NewKeeper(cdc codec.BinaryCodec, key storetypes.StoreKey, legacySubspace types.ParamSubspace, consensusHost types.ConsensusHost, uk types.UpgradeKeeper) *Keeper { router := types.NewRouter() - storeProvider := types.NewStoreProvider(key) localhostModule := localhost.NewLightClientModule(cdc, key) router.AddRoute(exported.Localhost, localhostModule) @@ -44,7 +42,6 @@ func NewKeeper(cdc codec.BinaryCodec, key storetypes.StoreKey, legacySubspace ty storeKey: key, cdc: cdc, router: router, - storeProvider: storeProvider, consensusHost: consensusHost, legacySubspace: legacySubspace, upgradeKeeper: uk, @@ -67,8 +64,8 @@ func (k *Keeper) GetRouter() *types.Router { } // GetStoreProvider returns the light client store provider. -func (k *Keeper) GetStoreProvider() exported.ClientStoreProvider { - return k.storeProvider +func (k *Keeper) GetStoreProvider() types.StoreProvider { + return types.NewStoreProvider(k.storeKey) } // Route returns the light client module for the given client identifier. diff --git a/modules/core/02-client/types/store.go b/modules/core/02-client/types/store.go index 87d17de9a21..446e6933d8a 100644 --- a/modules/core/02-client/types/store.go +++ b/modules/core/02-client/types/store.go @@ -9,30 +9,27 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" host "github.com/cosmos/ibc-go/v9/modules/core/24-host" - "github.com/cosmos/ibc-go/v9/modules/core/exported" ) -var _ exported.ClientStoreProvider = (*storeProvider)(nil) - -// storeProvider implements the api.ClientStoreProvider interface and encapsulates the IBC core store key. -type storeProvider struct { +// StoreProvider encapsulates the IBC core store key and offers convenience methods for LightClientModules. +type StoreProvider struct { storeKey storetypes.StoreKey } -// NewStoreProvider creates and returns a new ClientStoreProvider. -func NewStoreProvider(storeKey storetypes.StoreKey) exported.ClientStoreProvider { - return storeProvider{ +// NewStoreProvider creates and returns a new client StoreProvider. +func NewStoreProvider(storeKey storetypes.StoreKey) StoreProvider { + return StoreProvider{ storeKey: storeKey, } } // ClientStore returns isolated prefix store for each client so they can read/write in separate namespaces. -func (s storeProvider) ClientStore(ctx sdk.Context, clientID string) storetypes.KVStore { +func (s StoreProvider) ClientStore(ctx sdk.Context, clientID string) storetypes.KVStore { clientPrefix := []byte(fmt.Sprintf("%s/%s/", host.KeyClientStorePrefix, clientID)) return prefix.NewStore(ctx.KVStore(s.storeKey), clientPrefix) } // ClientModuleStore returns the module store for a provided client type. -func (s storeProvider) ClientModuleStore(ctx sdk.Context, clientType string) storetypes.KVStore { +func (s StoreProvider) ClientModuleStore(ctx sdk.Context, clientType string) storetypes.KVStore { return prefix.NewStore(ctx.KVStore(s.storeKey), host.PrefixedClientStoreKey([]byte(clientType))) } diff --git a/modules/core/exported/client.go b/modules/core/exported/client.go index 10fbe632c6e..fd6968c072b 100644 --- a/modules/core/exported/client.go +++ b/modules/core/exported/client.go @@ -3,8 +3,6 @@ package exported import ( "github.com/cosmos/gogoproto/proto" - storetypes "cosmossdk.io/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -43,14 +41,6 @@ const ( Unauthorized Status = "Unauthorized" ) -// ClientStoreProvider is an interface which gives access to the client prefixed stores. -// It is implemented by the 02-client keeper and may be called by a light client module -// to obtain a client prefixed store for the given client identifier. -type ClientStoreProvider interface { - // ClientStore will return a client prefixed store using the given client identifier - ClientStore(ctx sdk.Context, clientID string) storetypes.KVStore -} - // LightClientModule is an interface which core IBC uses to interact with light client modules. // Light client modules must implement this interface to integrate with core IBC. type LightClientModule interface { diff --git a/modules/light-clients/06-solomachine/light_client_module.go b/modules/light-clients/06-solomachine/light_client_module.go index 2a123b4fcbe..e7851b6b1d8 100644 --- a/modules/light-clients/06-solomachine/light_client_module.go +++ b/modules/light-clients/06-solomachine/light_client_module.go @@ -17,11 +17,11 @@ var _ exported.LightClientModule = (*LightClientModule)(nil) // LightClientModule implements the core IBC api.LightClientModule interface type LightClientModule struct { cdc codec.BinaryCodec - storeProvider exported.ClientStoreProvider + storeProvider clienttypes.StoreProvider } // NewLightClientModule creates and returns a new 06-solomachine LightClientModule. -func NewLightClientModule(cdc codec.BinaryCodec, storeProvider exported.ClientStoreProvider) LightClientModule { +func NewLightClientModule(cdc codec.BinaryCodec, storeProvider clienttypes.StoreProvider) LightClientModule { return LightClientModule{ cdc: cdc, storeProvider: storeProvider, diff --git a/modules/light-clients/07-tendermint/light_client_module.go b/modules/light-clients/07-tendermint/light_client_module.go index ce52c9c27cc..1248c23061c 100644 --- a/modules/light-clients/07-tendermint/light_client_module.go +++ b/modules/light-clients/07-tendermint/light_client_module.go @@ -19,11 +19,11 @@ var _ exported.LightClientModule = (*LightClientModule)(nil) // LightClientModule implements the core IBC api.LightClientModule interface. type LightClientModule struct { keeper keeper.Keeper - storeProvider exported.ClientStoreProvider + storeProvider clienttypes.StoreProvider } // NewLightClientModule creates and returns a new 07-tendermint LightClientModule. -func NewLightClientModule(cdc codec.BinaryCodec, storeProvider exported.ClientStoreProvider, authority string) LightClientModule { +func NewLightClientModule(cdc codec.BinaryCodec, storeProvider clienttypes.StoreProvider, authority string) LightClientModule { return LightClientModule{ keeper: keeper.NewKeeper(cdc, authority), storeProvider: storeProvider, diff --git a/modules/light-clients/08-wasm/light_client_module.go b/modules/light-clients/08-wasm/light_client_module.go index 799df530b28..ec0cc930579 100644 --- a/modules/light-clients/08-wasm/light_client_module.go +++ b/modules/light-clients/08-wasm/light_client_module.go @@ -24,11 +24,11 @@ var _ exported.LightClientModule = (*LightClientModule)(nil) // LightClientModule implements the core IBC api.LightClientModule interface. type LightClientModule struct { keeper wasmkeeper.Keeper - storeProvider exported.ClientStoreProvider + storeProvider clienttypes.StoreProvider } // NewLightClientModule creates and returns a new 08-wasm LightClientModule. -func NewLightClientModule(keeper wasmkeeper.Keeper, storeProvider exported.ClientStoreProvider) LightClientModule { +func NewLightClientModule(keeper wasmkeeper.Keeper, storeProvider clienttypes.StoreProvider) LightClientModule { return LightClientModule{ keeper: keeper, storeProvider: storeProvider,