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§
type V: ClientValidationContext
sourcetype HostClientState: ClientStateValidation<Self::V>
type HostClientState: ClientStateValidation<Self::V>
The client state type for the host chain.
sourcetype HostConsensusState: ConsensusState
type HostConsensusState: ConsensusState
The consensus state type for the host chain.
Required Methods§
sourcefn get_client_validation_context(&self) -> &Self::V
fn get_client_validation_context(&self) -> &Self::V
Retrieve the context that implements all clients’ ValidationContext
.
sourcefn host_height(&self) -> Result<Height, ContextError>
fn host_height(&self) -> Result<Height, ContextError>
Returns the current height of the local chain.
sourcefn host_timestamp(&self) -> Result<Timestamp, ContextError>
fn host_timestamp(&self) -> Result<Timestamp, ContextError>
Returns the current timestamp of the local chain.
sourcefn host_consensus_state(
&self,
height: &Height
) -> Result<Self::HostConsensusState, ContextError>
fn host_consensus_state( &self, height: &Height ) -> Result<Self::HostConsensusState, ContextError>
Returns the ConsensusState
of the host (local) chain at a specific height.
sourcefn client_counter(&self) -> Result<u64, ContextError>
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
.
sourcefn connection_end(
&self,
conn_id: &ConnectionId
) -> Result<ConnectionEnd, ContextError>
fn connection_end( &self, conn_id: &ConnectionId ) -> Result<ConnectionEnd, ContextError>
Returns the ConnectionEnd for the given identifier conn_id
.
sourcefn validate_self_client(
&self,
client_state_of_host_on_counterparty: Self::HostClientState
) -> Result<(), ContextError>
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.
sourcefn commitment_prefix(&self) -> CommitmentPrefix
fn commitment_prefix(&self) -> CommitmentPrefix
Returns the prefix that the local chain uses in the KV store.
sourcefn connection_counter(&self) -> Result<u64, ContextError>
fn connection_counter(&self) -> Result<u64, ContextError>
Returns a counter on how many connections have been created thus far.
sourcefn channel_end(
&self,
channel_end_path: &ChannelEndPath
) -> Result<ChannelEnd, ContextError>
fn channel_end( &self, channel_end_path: &ChannelEndPath ) -> Result<ChannelEnd, ContextError>
Returns the ChannelEnd
for the given port_id
and chan_id
.
sourcefn get_next_sequence_send(
&self,
seq_send_path: &SeqSendPath
) -> Result<Sequence, ContextError>
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
sourcefn get_next_sequence_recv(
&self,
seq_recv_path: &SeqRecvPath
) -> Result<Sequence, ContextError>
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
sourcefn get_next_sequence_ack(
&self,
seq_ack_path: &SeqAckPath
) -> Result<Sequence, ContextError>
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
sourcefn get_packet_commitment(
&self,
commitment_path: &CommitmentPath
) -> Result<PacketCommitment, ContextError>
fn get_packet_commitment( &self, commitment_path: &CommitmentPath ) -> Result<PacketCommitment, ContextError>
Returns the packet commitment for the given store path
sourcefn get_packet_receipt(
&self,
receipt_path: &ReceiptPath
) -> Result<Receipt, ContextError>
fn get_packet_receipt( &self, receipt_path: &ReceiptPath ) -> Result<Receipt, ContextError>
Returns the packet receipt for the given store path
sourcefn get_packet_acknowledgement(
&self,
ack_path: &AckPath
) -> Result<AcknowledgementCommitment, ContextError>
fn get_packet_acknowledgement( &self, ack_path: &AckPath ) -> Result<AcknowledgementCommitment, ContextError>
Returns the packet acknowledgement for the given store path
sourcefn channel_counter(&self) -> Result<u64, ContextError>
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
.
sourcefn max_expected_time_per_block(&self) -> Duration
fn max_expected_time_per_block(&self) -> Duration
Returns the maximum expected time per block
sourcefn validate_message_signer(&self, signer: &Signer) -> Result<(), ContextError>
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§
sourcefn get_compatible_versions(&self) -> Vec<ConnectionVersion>
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.
sourcefn pick_version(
&self,
counterparty_candidate_versions: &[ConnectionVersion]
) -> Result<ConnectionVersion, ContextError>
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.
sourcefn block_delay(&self, delay_period_time: &Duration) -> u64
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.