README
¶
title: "StakeIBC" excerpt: "" category: 6392913957c533007128548e
The StakeIBC Module
The StakeIBC Module contains Stride's main app logic:
- it exposes core liquid staking entry points to the user (liquid staking and redeeming)
- it executes automated beginBlocker and endBlocker logic to stake funds on relevant host zones using Interchain Accounts
- it handles registering new host zones and adjusting host zone validator sets and weights
- it defines Stride's core data structures (e.g. hostZone)
- it defines all the callbacks used when issuing Interchain Account logic
Nearly all of Stride's functionality is built using interchain accounts (ICAs), which are a new functionality in Cosmos, and a critical component of IBC. ICAs allow accounts on Zone A to be controlled by Zone B. ICAs communicate with one another using Interchain Queries (ICQs), which involve Zone A querying Zone B for relevant information.
Two Zones communicate via a connection and channel. All communications between the Controller Zone (the chain that is querying) and the Host Zone (the chain that is being queried) is done through a dedicated IBC channel between the two chains, which is opened the first time the two chains interact.
For context, ICS standards define that each channel is associated with a particular connection, and a connection may have any number of associated channels.
Params
DepositInterval (default uint64 = 1)
DelegateInterval (default uint64 = 1)
ReinvestInterval (default uint64 = 1)
RewardsInterval (default uint64 = 1)
RedemptionRateInterval (default uint64 = 1)
StrideCommission (default uint64 = 10)
ICATimeoutNanos(default uint64 = 600000000000)
BufferSize (default uint64 = 5)
IbcTimeoutBlocks (default uint64 = 300)
FeeTransferTimeoutNanos (default uint64 = 1800000000000)
DefaultMinRedemptionRateThreshold (default uint64 = 90)
DefaultMaxRedemptionRateThreshold (default uint64 = 150)
MaxStakeICACallsPerEpoch (default uint64 = 100)
IBCTransferTimeoutNanos (default uint64 = 1800000000000)
MinRedemptionRates (default uint64 = 90)
MaxRedemptionRates (default uint64 = 150)
ValidatorSlashQueryThreshold (default uint64 = 1)
Keeper functions
LiquidStake()
RedeemStake()
ClaimUndelegatedTokens()
RebalanceValidators()
AddValidators()
ChangeValidatorWeight()
DeleteValidator()
RegisterHostZone()
ClearBalance()
RestoreInterchainAccount()
UpdateValidatorSharesExchRate()
State
Callbacks
SplitDelegation
DelegateCallback
ClaimCallback
ReinvestCallback
UndelegateCallback
RedemptionCallback
Rebalancing
RebalanceCallback
HostZone
HostZone
ICAAccount
MinValidatorRequirements
Host Zone Validators
Validator
ValidatorExchangeRate
Misc
GenesisState
EpochTracker
Delegation
Governance
AddValidatorsProposal
Queries
QueryInterchainAccountFromAddress
QueryParams
QueryGetValidators
QueryGetHostZone
QueryAllHostZone
QueryModuleAddress
QueryGetEpochTracker
QueryAllEpochTracker
QueryGetNextPacketSequence
Events
stakeibc
module emits the following events:
Type: Attribute Key → Attribute Value
registerHostZone: module → stakeibc registerHostZone: connectionId → connectionId registerHostZone: chainId → chainId submitHostZoneUnbonding: hostZone → chainId submitHostZoneUnbonding: newAmountUnbonding → totalAmtToUnbond stakeExistingDepositsOnHostZone: hostZone → chainId stakeExistingDepositsOnHostZone: newAmountStaked → amount onAckPacket (IBC): module → moduleName onAckPacket (IBC): ack → ackInfo
Documentation
¶
Index ¶
- func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState
- func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState)
- type AppModule
- func (am AppModule) BeginBlock(ctx context.Context) error
- func (AppModule) ConsensusVersion() uint64
- func (am AppModule) EndBlock(ctx context.Context) error
- func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage
- func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) []abci.ValidatorUpdate
- func (am AppModule) IsAppModule()
- func (am AppModule) IsOnePerModuleType()
- func (am AppModule) Name() string
- func (AppModule) QuerierRoute() string
- func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry)
- func (am AppModule) RegisterServices(cfg module.Configurator)
- type AppModuleBasic
- func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage
- func (AppModuleBasic) GetQueryCmd() *cobra.Command
- func (a AppModuleBasic) GetTxCmd() *cobra.Command
- func (AppModuleBasic) Name() string
- func (AppModuleBasic) RegisterCodec(cdc *codec.LegacyAmino)
- func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux)
- func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry)
- func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino)
- func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router)
- func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error
- type IBCMiddleware
- func (im IBCMiddleware) GetAppVersion(ctx sdk.Context, portID, channelID string) (string, bool)
- func (im IBCMiddleware) OnAcknowledgementPacket(ctx sdk.Context, packet channeltypes.Packet, acknowledgement []byte, ...) error
- func (im IBCMiddleware) OnChanCloseConfirm(ctx sdk.Context, portID, channelID string) error
- func (im IBCMiddleware) OnChanCloseInit(ctx sdk.Context, portID, channelID string) error
- func (im IBCMiddleware) OnChanOpenAck(ctx sdk.Context, portID, channelID string, counterpartyChannelID string, ...) error
- func (im IBCMiddleware) OnChanOpenConfirm(ctx sdk.Context, portID, channelID string) error
- func (im IBCMiddleware) OnChanOpenInit(ctx sdk.Context, order channeltypes.Order, connectionHops []string, ...) (string, error)
- func (im IBCMiddleware) OnChanOpenTry(ctx sdk.Context, order channeltypes.Order, connectionHops []string, ...) (string, error)
- func (im IBCMiddleware) OnRecvPacket(ctx sdk.Context, packet channeltypes.Packet, relayer sdk.AccAddress) ibcexported.Acknowledgement
- func (im IBCMiddleware) OnTimeoutPacket(ctx sdk.Context, packet channeltypes.Packet, relayer sdk.AccAddress) error
- func (im IBCMiddleware) SendPacket(ctx sdk.Context, chanCap *capabilitytypes.Capability, sourcePort string, ...) (sequence uint64, err error)
- func (im IBCMiddleware) WriteAcknowledgement(ctx sdk.Context, chanCap *capabilitytypes.Capability, ...) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ExportGenesis ¶
ExportGenesis returns the capability module's exported genesis.
func InitGenesis ¶
InitGenesis initializes the capability module's state from a provided genesis state.
Types ¶
type AppModule ¶
type AppModule struct { AppModuleBasic // contains filtered or unexported fields }
AppModule implements the AppModule interface for the capability module.
func NewAppModule ¶
func NewAppModule( cdc codec.Codec, keeper keeper.Keeper, accountKeeper types.AccountKeeper, bankKeeper types.BankKeeper, ) AppModule
func (AppModule) BeginBlock ¶
BeginBlock executes all ABCI BeginBlock logic respective to the capability module.
func (AppModule) ConsensusVersion ¶
ConsensusVersion implements ConsensusVersion.
func (AppModule) EndBlock ¶
EndBlock executes all ABCI EndBlock logic respective to the capability module. It returns no validator updates.
func (AppModule) ExportGenesis ¶
ExportGenesis returns the capability module's exported genesis state as raw JSON bytes.
func (AppModule) InitGenesis ¶
func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) []abci.ValidatorUpdate
InitGenesis performs the capability module's genesis initialization It returns no validator updates.
func (AppModule) IsAppModule ¶
func (am AppModule) IsAppModule()
func (AppModule) IsOnePerModuleType ¶
func (am AppModule) IsOnePerModuleType()
func (AppModule) QuerierRoute ¶
QuerierRoute returns the capability module's query routing key.
func (AppModule) RegisterInvariants ¶
func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry)
RegisterInvariants registers the capability module's invariants.
func (AppModule) RegisterServices ¶
func (am AppModule) RegisterServices(cfg module.Configurator)
RegisterServices registers a GRPC query service to respond to the module-specific GRPC queries.
type AppModuleBasic ¶
type AppModuleBasic struct {
// contains filtered or unexported fields
}
AppModuleBasic implements the AppModuleBasic interface for the capability module.
func NewAppModuleBasic ¶
func NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic
func (AppModuleBasic) DefaultGenesis ¶
func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage
DefaultGenesis returns the capability module's default genesis state.
func (AppModuleBasic) GetQueryCmd ¶
func (AppModuleBasic) GetQueryCmd() *cobra.Command
GetQueryCmd returns the capability module's root query command.
func (AppModuleBasic) GetTxCmd ¶
func (a AppModuleBasic) GetTxCmd() *cobra.Command
GetTxCmd returns the capability module's root tx command.
func (AppModuleBasic) Name ¶
func (AppModuleBasic) Name() string
Name returns the capability module's name.
func (AppModuleBasic) RegisterCodec ¶
func (AppModuleBasic) RegisterCodec(cdc *codec.LegacyAmino)
func (AppModuleBasic) RegisterGRPCGatewayRoutes ¶
func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux)
RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module.
func (AppModuleBasic) RegisterInterfaces ¶
func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry)
RegisterInterfaces registers the module's interface types
func (AppModuleBasic) RegisterLegacyAminoCodec ¶
func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino)
func (AppModuleBasic) RegisterRESTRoutes ¶
func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router)
RegisterRESTRoutes registers the capability module's REST service handlers.
func (AppModuleBasic) ValidateGenesis ¶
func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error
ValidateGenesis performs genesis state validation for the capability module.
type IBCMiddleware ¶
type IBCMiddleware struct {
// contains filtered or unexported fields
}
func NewIBCMiddleware ¶
func NewIBCMiddleware(app porttypes.IBCModule, k keeper.Keeper) IBCMiddleware
func (IBCMiddleware) GetAppVersion ¶
GetAppVersion implements the ICS4 Wrapper interface but is not utilized in the bottom of ICA stack
func (IBCMiddleware) OnAcknowledgementPacket ¶
func (im IBCMiddleware) OnAcknowledgementPacket( ctx sdk.Context, packet channeltypes.Packet, acknowledgement []byte, relayer sdk.AccAddress, ) error
OnAcknowledgementPacket simply passes down the to next middleware stack The Ack handling and routing is managed by icacallbacks
func (IBCMiddleware) OnChanCloseConfirm ¶
func (im IBCMiddleware) OnChanCloseConfirm( ctx sdk.Context, portID, channelID string, ) error
OnChanCloseConfirm simply passes down the to next middleware stack
func (IBCMiddleware) OnChanCloseInit ¶
func (im IBCMiddleware) OnChanCloseInit( ctx sdk.Context, portID, channelID string, ) error
OnChanCloseInit simply passes down the to next middleware stack
func (IBCMiddleware) OnChanOpenAck ¶
func (im IBCMiddleware) OnChanOpenAck( ctx sdk.Context, portID, channelID string, counterpartyChannelID string, counterpartyVersion string, ) error
OnChanOpenAck stores the new ICA acccount addresses on the host zone and then passes to the next middleware stack
func (IBCMiddleware) OnChanOpenConfirm ¶
func (im IBCMiddleware) OnChanOpenConfirm( ctx sdk.Context, portID, channelID string, ) error
OnChanOpenConfirm simply passes down the to next middleware stack
func (IBCMiddleware) OnChanOpenInit ¶
func (im IBCMiddleware) OnChanOpenInit( ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID string, channelID string, channelCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, version string, ) (string, error)
OnChanOpenInit simply passes down the to next middleware stack
func (IBCMiddleware) OnChanOpenTry ¶
func (im IBCMiddleware) OnChanOpenTry( ctx sdk.Context, order channeltypes.Order, connectionHops []string, portID, channelID string, chanCap *capabilitytypes.Capability, counterparty channeltypes.Counterparty, counterpartyVersion string, ) (string, error)
OnChanOpenTry simply passes down the to next middleware stack
func (IBCMiddleware) OnRecvPacket ¶
func (im IBCMiddleware) OnRecvPacket( ctx sdk.Context, packet channeltypes.Packet, relayer sdk.AccAddress, ) ibcexported.Acknowledgement
OnRecvPacket simply passes down the to next middleware stack
func (IBCMiddleware) OnTimeoutPacket ¶
func (im IBCMiddleware) OnTimeoutPacket( ctx sdk.Context, packet channeltypes.Packet, relayer sdk.AccAddress, ) error
OnTimeoutPacket simply passes down the to next middleware stack The Ack handling and routing is managed by icacallbacks
func (IBCMiddleware) SendPacket ¶
func (im IBCMiddleware) SendPacket( ctx sdk.Context, chanCap *capabilitytypes.Capability, sourcePort string, sourceChannel string, timeoutHeight clienttypes.Height, timeoutTimestamp uint64, data []byte, ) (sequence uint64, err error)
SendPacket implements the ICS4 Wrapper interface but is not utilized in the ICA stack
func (IBCMiddleware) WriteAcknowledgement ¶
func (im IBCMiddleware) WriteAcknowledgement( ctx sdk.Context, chanCap *capabilitytypes.Capability, packet ibcexported.PacketI, ack ibcexported.Acknowledgement, ) error
WriteAcknowledgement implements the ICS4 Wrapper interface but is not utilized in the bottom of ICA stack