Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions modules/core/02-client/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -36,15 +35,13 @@ 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)

return &Keeper{
storeKey: key,
cdc: cdc,
router: router,
storeProvider: storeProvider,
consensusHost: consensusHost,
legacySubspace: legacySubspace,
upgradeKeeper: uk,
Expand All @@ -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.
Expand Down
17 changes: 7 additions & 10 deletions modules/core/02-client/types/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)))
}
10 changes: 0 additions & 10 deletions modules/core/exported/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package exported
import (
"github.com/cosmos/gogoproto/proto"

storetypes "cosmossdk.io/store/types"

sdk "github.com/cosmos/cosmos-sdk/types"
)

Expand Down Expand Up @@ -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 {
Expand Down
4 changes: 2 additions & 2 deletions modules/light-clients/06-solomachine/light_client_module.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
4 changes: 2 additions & 2 deletions modules/light-clients/07-tendermint/light_client_module.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
4 changes: 2 additions & 2 deletions modules/light-clients/08-wasm/light_client_module.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down