Trait ibc_core_host::ValidationContext

source ·
pub trait ValidationContext {
    type V: ClientValidationContext;
    type HostClientState: ClientStateValidation<Self::V>;
    type HostConsensusState: ConsensusState;

Show 22 methods // Required methods fn get_client_validation_context(&self) -> &Self::V; fn host_height(&self) -> Result<Height, ContextError>; fn host_timestamp(&self) -> Result<Timestamp, ContextError>; fn host_consensus_state( &self, height: &Height ) -> Result<Self::HostConsensusState, ContextError>; fn client_counter(&self) -> Result<u64, ContextError>; fn connection_end( &self, conn_id: &ConnectionId ) -> Result<ConnectionEnd, ContextError>; fn validate_self_client( &self, client_state_of_host_on_counterparty: Self::HostClientState ) -> Result<(), ContextError>; fn commitment_prefix(&self) -> CommitmentPrefix; fn connection_counter(&self) -> Result<u64, ContextError>; fn channel_end( &self, channel_end_path: &ChannelEndPath ) -> Result<ChannelEnd, ContextError>; fn get_next_sequence_send( &self, seq_send_path: &SeqSendPath ) -> Result<Sequence, ContextError>; fn get_next_sequence_recv( &self, seq_recv_path: &SeqRecvPath ) -> Result<Sequence, ContextError>; fn get_next_sequence_ack( &self, seq_ack_path: &SeqAckPath ) -> Result<Sequence, ContextError>; fn get_packet_commitment( &self, commitment_path: &CommitmentPath ) -> Result<PacketCommitment, ContextError>; fn get_packet_receipt( &self, receipt_path: &ReceiptPath ) -> Result<Receipt, ContextError>; fn get_packet_acknowledgement( &self, ack_path: &AckPath ) -> Result<AcknowledgementCommitment, ContextError>; fn channel_counter(&self) -> Result<u64, ContextError>; fn max_expected_time_per_block(&self) -> Duration; fn validate_message_signer( &self, signer: &Signer ) -> Result<(), ContextError>; // Provided methods fn get_compatible_versions(&self) -> Vec<ConnectionVersion> { ... } fn pick_version( &self, counterparty_candidate_versions: &[ConnectionVersion] ) -> Result<ConnectionVersion, ContextError> { ... } fn block_delay(&self, delay_period_time: &Duration) -> u64 { ... }
}
Expand description

Context to be implemented by the host that provides all “read-only” methods.

Trait used for the top-level validate entrypoint in the ibc-core crate.

Required Associated Types§

source

type V: ClientValidationContext

source

type HostClientState: ClientStateValidation<Self::V>

The client state type for the host chain.

source

type HostConsensusState: ConsensusState

The consensus state type for the host chain.

Required Methods§

source

fn get_client_validation_context(&self) -> &Self::V

Retrieve the context that implements all clients’ ValidationContext.

source

fn host_height(&self) -> Result<Height, ContextError>

Returns the current height of the local chain.

source

fn host_timestamp(&self) -> Result<Timestamp, ContextError>

Returns the current timestamp of the local chain.

source

fn host_consensus_state( &self, height: &Height ) -> Result<Self::HostConsensusState, ContextError>

Returns the ConsensusState of the host (local) chain at a specific height.

source

fn client_counter(&self) -> Result<u64, ContextError>

Returns a natural number, counting how many clients have been created thus far. The value of this counter should increase only via method ExecutionContext::increase_client_counter.

source

fn connection_end( &self, conn_id: &ConnectionId ) -> Result<ConnectionEnd, ContextError>

Returns the ConnectionEnd for the given identifier conn_id.

source

fn validate_self_client( &self, client_state_of_host_on_counterparty: Self::HostClientState ) -> Result<(), ContextError>

Validates the ClientState of the host chain stored on the counterparty chain against the host’s internal state.

For more information on the specific requirements for validating the client state of a host chain, please refer to the ICS24 host requirements

Additionally, implementations specific to individual chains can be found in the ibc-core/ics24-host module.

source

fn commitment_prefix(&self) -> CommitmentPrefix

Returns the prefix that the local chain uses in the KV store.

source

fn connection_counter(&self) -> Result<u64, ContextError>

Returns a counter on how many connections have been created thus far.

source

fn channel_end( &self, channel_end_path: &ChannelEndPath ) -> Result<ChannelEnd, ContextError>

Returns the ChannelEnd for the given port_id and chan_id.

source

fn get_next_sequence_send( &self, seq_send_path: &SeqSendPath ) -> Result<Sequence, ContextError>

Returns the sequence number for the next packet to be sent for the given store path

source

fn get_next_sequence_recv( &self, seq_recv_path: &SeqRecvPath ) -> Result<Sequence, ContextError>

Returns the sequence number for the next packet to be received for the given store path

source

fn get_next_sequence_ack( &self, seq_ack_path: &SeqAckPath ) -> Result<Sequence, ContextError>

Returns the sequence number for the next packet to be acknowledged for the given store path

source

fn get_packet_commitment( &self, commitment_path: &CommitmentPath ) -> Result<PacketCommitment, ContextError>

Returns the packet commitment for the given store path

source

fn get_packet_receipt( &self, receipt_path: &ReceiptPath ) -> Result<Receipt, ContextError>

Returns the packet receipt for the given store path

source

fn get_packet_acknowledgement( &self, ack_path: &AckPath ) -> Result<AcknowledgementCommitment, ContextError>

Returns the packet acknowledgement for the given store path

source

fn channel_counter(&self) -> Result<u64, ContextError>

Returns a counter on the number of channel ids have been created thus far. The value of this counter should increase only via method ExecutionContext::increase_channel_counter.

source

fn max_expected_time_per_block(&self) -> Duration

Returns the maximum expected time per block

source

fn validate_message_signer(&self, signer: &Signer) -> Result<(), ContextError>

Validates the signer field of IBC messages, which represents the address of the user/relayer that signed the given message.

Provided Methods§

source

fn get_compatible_versions(&self) -> Vec<ConnectionVersion>

Function required by ICS-03. Returns the list of all possible versions that the connection handshake protocol supports.

source

fn pick_version( &self, counterparty_candidate_versions: &[ConnectionVersion] ) -> Result<ConnectionVersion, ContextError>

Function required by ICS-03. Returns one version out of the supplied list of versions, which the connection handshake protocol prefers.

source

fn block_delay(&self, delay_period_time: &Duration) -> u64

Calculates the block delay period using the connection’s delay period and the maximum expected time per block.

Object Safety§

This trait is not object safe.

Implementors§