/ Keeper defines the IBC app module keeper
type Keeper struct {
storeKey sdk.StoreKey
cdc codec.BinaryCodec
paramSpace paramtypes.Subspace
channelKeeper types.ChannelKeeper
portKeeper types.PortKeeper
scopedKeeper capabilitykeeper.ScopedKeeper
/ ... additional according to custom logic
}
/ NewKeeper creates a new IBC app module Keeper instance
func NewKeeper(
/ args
)
Keeper {
/ ...
return Keeper{
cdc: cdc,
storeKey: key,
paramSpace: paramSpace,
channelKeeper: channelKeeper,
portKeeper: portKeeper,
scopedKeeper: scopedKeeper,
/ ... additional according to custom logic
}
}
/ hasCapability checks if the IBC app module owns the port capability for the desired port
func (k Keeper)
hasCapability(ctx sdk.Context, portID string)
bool {
_, ok := k.scopedKeeper.GetCapability(ctx, host.PortPath(portID))
return ok
}
/ BindPort defines a wrapper function for the port Keeper's function in
/ order to expose it to module's InitGenesis function
func (k Keeper)
BindPort(ctx sdk.Context, portID string)
error {
cap := k.portKeeper.BindPort(ctx, portID)
return k.ClaimCapability(ctx, cap, host.PortPath(portID))
}
/ GetPort returns the portID for the IBC app module. Used in ExportGenesis
func (k Keeper)
GetPort(ctx sdk.Context)
string {
store := ctx.KVStore(k.storeKey)
return string(store.Get(types.PortKey))
}
/ SetPort sets the portID for the IBC app module. Used in InitGenesis
func (k Keeper)
SetPort(ctx sdk.Context, portID string) {
store := ctx.KVStore(k.storeKey)
store.Set(types.PortKey, []byte(portID))
}
/ AuthenticateCapability wraps the scopedKeeper's AuthenticateCapability function
func (k Keeper)
AuthenticateCapability(ctx sdk.Context, cap *capabilitytypes.Capability, name string)
bool {
return k.scopedKeeper.AuthenticateCapability(ctx, cap, name)
}
/ ClaimCapability allows the IBC app module to claim a capability that core IBC
/ passes to it
func (k Keeper)
ClaimCapability(ctx sdk.Context, cap *capabilitytypes.Capability, name string)
error {
return k.scopedKeeper.ClaimCapability(ctx, cap, name)
}
/ ... additional according to custom logic