Documentation ¶
Overview ¶
24-host is an implementation of ICS 24.
The storage path supported are defined in ICS 24 (https://github.com/cosmos/ibc/blob/master/spec/core/ics-024-host-requirements#path-space).
Hostname validation is implemented as defined in ICS 24 (https://github.com/cosmos/ibc/tree/master/spec/core/ics-024-host-requirements).
Index ¶
- Constants
- Variables
- func ChannelCapabilityPath(portID, channelID string) string
- func ChannelCounterpartyUpgradeKey(portID, channelID string) []byte
- func ChannelIdentifierValidator(id string) error
- func ChannelKey(portID, channelID string) []byte
- func ChannelUpgradeErrorKey(portID, channelID string) []byte
- func ChannelUpgradeKey(portID, channelID string) []byte
- func ClientConnectionsKey(clientID string) []byte
- func ClientIdentifierValidator(id string) error
- func ClientStateKey() []byte
- func ConnectionIdentifierValidator(id string) error
- func ConnectionKey(connectionID string) []byte
- func ConsensusStateKey(height exported.Height) []byte
- func FullClientKey(clientID string, path []byte) []byte
- func FullClientStateKey(clientID string) []byte
- func FullConsensusStateKey(clientID string, height exported.Height) []byte
- func MustParseChannelPath(path string) (string, string)
- func MustParseClientStatePath(path string) string
- func MustParseConnectionPath(path string) string
- func NextSequenceAckKey(portID, channelID string) []byte
- func NextSequenceRecvKey(portID, channelID string) []byte
- func NextSequenceSendKey(portID, channelID string) []byte
- func PacketAcknowledgementKey(portID, channelID string, sequence uint64) []byte
- func PacketAcknowledgementPrefixKey(portID, channelID string) []byte
- func PacketCommitmentKey(portID, channelID string, sequence uint64) []byte
- func PacketCommitmentPrefixKey(portID, channelID string) []byte
- func PacketReceiptKey(portID, channelID string, sequence uint64) []byte
- func ParseChannelPath(path string) (string, string, error)
- func ParseConnectionPath(path string) (string, error)
- func ParseIdentifier(identifier, prefix string) (uint64, error)
- func PortIdentifierValidator(id string) error
- func PortPath(portID string) string
- func PrefixedClientStoreKey(prefix []byte) []byte
- func PruningSequenceStartKey(portID, channelID string) []byte
- func RecvStartSequenceKey(portID, channelID string) []byte
- type ValidateFn
Constants ¶
const ( KeyChannelEndPrefix = "channelEnds" KeyChannelPrefix = "channels" KeyChannelUpgradePrefix = "channelUpgrades" KeyUpgradePrefix = "upgrades" KeyUpgradeErrorPrefix = "upgradeError" KeyCounterpartyUpgrade = "counterpartyUpgrade" KeyChannelCapabilityPrefix = "capabilities" )
const ( KeyClientState = "clientState" KeyConsensusStatePrefix = "consensusStates" )
const ( KeySequencePrefix = "sequences" KeyNextSeqSendPrefix = "nextSequenceSend" KeyNextSeqRecvPrefix = "nextSequenceRecv" KeyNextSeqAckPrefix = "nextSequenceAck" KeyPacketCommitmentPrefix = "commitments" KeyPacketAckPrefix = "acks" KeyPacketReceiptPrefix = "receipts" KeyPruningSequenceStart = "pruningSequenceStart" KeyRecvStartSequence = "recvStartSequence" )
const DefaultMaxCharacterLength = 64
DefaultMaxCharacterLength defines the default maximum character length used in validation of identifiers including the client, connection, port and channel identifiers.
NOTE: this restriction is specific to this golang implementation of IBC. If your use case demands a higher limit, please open an issue and we will consider adjusting this restriction.
const KeyConnectionPrefix = "connections"
const (
KeyPortPrefix = "ports"
)
const SubModuleName = "host"
SubModuleName defines the ICS 24 host
Variables ¶
var ( ErrInvalidID = errorsmod.Register(SubModuleName, 2, "invalid identifier") ErrInvalidPath = errorsmod.Register(SubModuleName, 3, "invalid path") ErrInvalidPacket = errorsmod.Register(SubModuleName, 4, "invalid packet") )
IBC client sentinel errors
var DefaultMaxPortCharacterLength = 128
DefaultMaxPortCharacterLength defines the default maximum character length used in validation of port identifiers.
var IsValidID = regexp.MustCompile(`^[a-zA-Z0-9\.\_\+\-\#\[\]\<\>]+$`).MatchString
IsValidID defines regular expression to check if the string consist of characters in one of the following categories only: - Alphanumeric - `.`, `_`, `+`, `-`, `#` - `[`, `]`, `<`, `>`
var KeyClientStorePrefix = []byte("clients")
KeyClientStorePrefix defines the KVStore key prefix for IBC clients
Functions ¶
func ChannelCapabilityPath ¶
ChannelCapabilityPath defines the path under which capability keys associated with a channel are stored
func ChannelCounterpartyUpgradeKey ¶
ChannelCounterpartyUpgradeKey returns the store key for the upgrade used on the counterparty channel.
func ChannelIdentifierValidator ¶
ChannelIdentifierValidator is the default validator function for Channel identifiers. A valid Identifier must be between 8-64 characters and only contain alphanumeric and some allowed special characters (see IsValidID).
func ChannelKey ¶
ChannelKey returns the store key for a particular channel
func ChannelUpgradeErrorKey ¶
ChannelUpgradeErrorKey returns the store key for a particular channelEnd used to stor the ErrorReceipt in the case that a chain does not accept the proposed upgrade
func ChannelUpgradeKey ¶
ChannelUpgradeKey returns the store key for a particular channel upgrade attempt
func ClientConnectionsKey ¶
ClientConnectionsKey returns the store key for the connections of a given client
func ClientIdentifierValidator ¶
ClientIdentifierValidator is the default validator function for Client identifiers. A valid Identifier must be between 9-64 characters and only contain alphanumeric and some allowed special characters (see IsValidID).
func ClientStateKey ¶
func ClientStateKey() []byte
ClientStateKey returns a store key under which a particular client state is stored in a client prefixed store
func ConnectionIdentifierValidator ¶
ConnectionIdentifierValidator is the default validator function for Connection identifiers. A valid Identifier must be between 10-64 characters and only contain alphanumeric and some allowed special characters (see IsValidID).
func ConnectionKey ¶
ConnectionKey returns the store key for a particular connection
func ConsensusStateKey ¶
ConsensusStateKey returns the store key for a the consensus state of a particular client stored in a client prefixed store.
func FullClientKey ¶
FullClientKey returns the full path of specific client path in the format: "clients/{clientID}/{path}" as a byte array.
func FullClientStateKey ¶
FullClientStateKey takes a client identifier and returns a Key under which to store a particular client state.
func FullConsensusStateKey ¶
FullConsensusStateKey returns the store key for the consensus state of a particular client.
func MustParseChannelPath ¶
MustParseChannelPath returns the port and channel ID from a full path. Panics if the provided path is invalid.
func MustParseClientStatePath ¶
MustParseClientStatePath returns the client ID from a client state path. It panics if the provided path is invalid or if the clientID is empty.
func MustParseConnectionPath ¶
MustParseConnectionPath returns the connection ID from a full path. Panics if the provided path is invalid.
func NextSequenceAckKey ¶
NextSequenceAckKey returns the store key for the acknowledgement sequence of a particular channel binded to a specific port.
func NextSequenceRecvKey ¶
NextSequenceRecvKey returns the store key for the receive sequence of a particular channel binded to a specific port
func NextSequenceSendKey ¶
NextSequenceSendKey returns the store key for the send sequence of a particular channel binded to a specific port.
func PacketAcknowledgementKey ¶
PacketAcknowledgementKey returns the store key of under which a packet acknowledgement is stored
func PacketAcknowledgementPrefixKey ¶
PacketAcknowledgementPrefixKey defines the prefix for commitments to packet data fields store path.
func PacketCommitmentKey ¶
PacketCommitmentKey returns the store key of under which a packet commitment is stored
func PacketCommitmentPrefixKey ¶
PacketCommitmentPrefixKey defines the prefix for commitments to packet data fields store path.
func PacketReceiptKey ¶
PacketReceiptKey returns the store key of under which a packet receipt is stored
func ParseChannelPath ¶
ParseChannelPath returns the port and channel ID from a full path. It returns an error if the provided path is invalid.
func ParseConnectionPath ¶
ParseConnectionPath returns the connection ID from a full path. It returns an error if the provided path is invalid.
func ParseIdentifier ¶
ParseIdentifier parses the sequence from the identifier using the provided prefix. This function does not need to be used by counterparty chains. SDK generated connection and channel identifiers are required to use this format.
func PortIdentifierValidator ¶
PortIdentifierValidator is the default validator function for Port identifiers. A valid Identifier must be between 2-64 characters and only contain alphanumeric and some allowed special characters (see IsValidID).
func PortPath ¶
PortPath defines the path under which ports paths are stored on the capability module
func PrefixedClientStoreKey ¶
PrefixedClientStoreKey returns a key which can be used for prefixed key store iteration. The prefix may be a clientType, clientID, or any valid key prefix which may be concatenated with the client store constant.
func PruningSequenceStartKey ¶
PruningSequenceStartKey returns the store key for the pruning sequence start of a particular channel
func RecvStartSequenceKey ¶
RecvStartSequenceKey returns the store key for the recv start sequence of a particular channel
Types ¶
type ValidateFn ¶
ValidateFn function type to validate path and identifier bytestrings
func NewPathValidator ¶
func NewPathValidator(idValidator ValidateFn) ValidateFn
NewPathValidator takes in a Identifier Validator function and returns a Path Validator function which requires path to consist of `/`-separated valid identifiers, where a valid identifier is between 1-64 characters, contains only alphanumeric and some allowed special characters (see IsValidID), and satisfies the custom `idValidator` function.