diff --git a/Cargo.lock b/Cargo.lock index 118fbf6d42..8d46ea9a40 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -373,27 +373,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" -[[package]] -name = "bzip2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - [[package]] name = "camino" version = "1.0.9" @@ -1455,7 +1434,7 @@ dependencies = [ "flex-error", "ibc-proto", "ics23", - "modelator 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "modelator", "num-traits", "primitive-types", "prost", @@ -1472,7 +1451,7 @@ dependencies = [ "tendermint-rpc", "tendermint-testgen", "test-log", - "time 0.3.10", + "time", "tracing", "tracing-subscriber", "uint", @@ -1487,13 +1466,12 @@ dependencies = [ "ibc-relayer", "ibc-relayer-cli", "ibc-test-framework", - "modelator 0.4.2 (git+https://github.com/informalsystems/modelator)", "serde", "serde_json", "tempfile", "tendermint", "tendermint-rpc", - "time 0.3.10", + "time", ] [[package]] @@ -1958,31 +1936,6 @@ dependencies = [ "ureq", ] -[[package]] -name = "modelator" -version = "0.4.2" -source = "git+https://github.com/informalsystems/modelator#414fdeb192c165803639363808d88c14e6f972ad" -dependencies = [ - "clap", - "clap_complete", - "directories", - "hex", - "lazy_static", - "nom", - "once_cell", - "rayon", - "regex", - "serde", - "serde_json", - "sha2 0.10.2", - "tempfile", - "thiserror", - "tracing", - "tracing-subscriber", - "ureq", - "zip", -] - [[package]] name = "moka" version = "0.8.5" @@ -2335,12 +2288,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "pkg-config" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" - [[package]] name = "ppv-lite86" version = "0.2.16" @@ -2674,7 +2621,7 @@ dependencies = [ "serde_json", "sha1", "threadpool", - "time 0.3.10", + "time", "tiny_http", "url", ] @@ -3356,7 +3303,7 @@ dependencies = [ "subtle", "subtle-encoding", "tendermint-proto", - "time 0.3.10", + "time", "zeroize", ] @@ -3392,7 +3339,7 @@ dependencies = [ "tendermint", "tendermint-light-client-verifier", "tendermint-rpc", - "time 0.3.10", + "time", "tokio", ] @@ -3406,7 +3353,7 @@ dependencies = [ "flex-error", "serde", "tendermint", - "time 0.3.10", + "time", ] [[package]] @@ -3424,7 +3371,7 @@ dependencies = [ "serde", "serde_bytes", "subtle-encoding", - "time 0.3.10", + "time", ] [[package]] @@ -3453,7 +3400,7 @@ dependencies = [ "tendermint-config", "tendermint-proto", "thiserror", - "time 0.3.10", + "time", "tokio", "tracing", "url", @@ -3474,7 +3421,7 @@ dependencies = [ "simple-error", "tempfile", "tendermint", - "time 0.3.10", + "time", ] [[package]] @@ -3551,16 +3498,6 @@ dependencies = [ "num_cpus", ] -[[package]] -name = "time" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "time" version = "0.3.10" @@ -4334,17 +4271,3 @@ dependencies = [ "syn", "synstructure", ] - -[[package]] -name = "zip" -version = "0.5.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" -dependencies = [ - "byteorder", - "bzip2", - "crc32fast", - "flate2", - "thiserror", - "time 0.1.43", -] diff --git a/modules/src/applications/transfer/msgs/transfer.rs b/modules/src/applications/transfer/msgs/transfer.rs index ee9c8afd1f..bb52dbf414 100644 --- a/modules/src/applications/transfer/msgs/transfer.rs +++ b/modules/src/applications/transfer/msgs/transfer.rs @@ -36,8 +36,8 @@ pub struct MsgTransfer { /// the recipient address on the destination chain pub receiver: Signer, /// Timeout height relative to the current block height. - /// The timeout is disabled when set to 0. - pub timeout_height: Height, + /// The timeout is disabled when set to None. + pub timeout_height: Option, /// Timeout timestamp relative to the current block timestamp. /// The timeout is disabled when set to 0. pub timeout_timestamp: Timestamp, @@ -63,12 +63,13 @@ impl TryFrom for MsgTransfer { let timeout_timestamp = Timestamp::from_nanoseconds(raw_msg.timeout_timestamp) .map_err(|_| Error::invalid_packet_timeout_timestamp(raw_msg.timeout_timestamp))?; - let timeout_height = match raw_msg.timeout_height.clone() { - None => Height::zero(), - Some(raw_height) => raw_height.try_into().map_err(|e| { + let timeout_height: Option = raw_msg + .timeout_height + .map(|raw_height| raw_height.try_into()) + .transpose() + .map_err(|e| { Error::invalid_packet_timeout_height(format!("invalid timeout height {}", e)) - })?, - }; + })?; Ok(MsgTransfer { source_port: raw_msg @@ -96,7 +97,7 @@ impl From for RawMsgTransfer { token: Some(domain_msg.token), sender: domain_msg.sender.to_string(), receiver: domain_msg.receiver.to_string(), - timeout_height: Some(domain_msg.timeout_height.into()), + timeout_height: domain_msg.timeout_height.map(|height| height.into()), timeout_timestamp: domain_msg.timeout_timestamp.nanoseconds(), } } @@ -156,10 +157,10 @@ pub mod test_util { sender: address.clone(), receiver: address, timeout_timestamp: Timestamp::now().add(Duration::from_secs(10)).unwrap(), - timeout_height: Height { + timeout_height: Some(Height { revision_number: 0, revision_height: height, - }, + }), } } } diff --git a/modules/src/applications/transfer/relay/send_transfer.rs b/modules/src/applications/transfer/relay/send_transfer.rs index 6925c6776c..993f5ba927 100644 --- a/modules/src/applications/transfer/relay/send_transfer.rs +++ b/modules/src/applications/transfer/relay/send_transfer.rs @@ -4,6 +4,7 @@ use crate::applications::transfer::events::TransferEvent; use crate::applications::transfer::msgs::transfer::MsgTransfer; use crate::applications::transfer::packet::PacketData; use crate::applications::transfer::{is_sender_chain_source, Coin, PrefixedCoin}; +use crate::core::ics02_client::height::Height; use crate::core::ics04_channel::handler::send_packet::send_packet; use crate::core::ics04_channel::packet::Packet; use crate::events::ModuleEvent; @@ -80,7 +81,7 @@ where destination_port, destination_channel, data, - timeout_height: msg.timeout_height, + timeout_height: msg.timeout_height.unwrap_or_else(Height::zero), timeout_timestamp: msg.timeout_timestamp, }; diff --git a/modules/src/core/ics02_client/client_consensus.rs b/modules/src/core/ics02_client/client_consensus.rs index e1ee92eaac..a300b3d5f4 100644 --- a/modules/src/core/ics02_client/client_consensus.rs +++ b/modules/src/core/ics02_client/client_consensus.rs @@ -13,8 +13,6 @@ use crate::core::ics02_client::client_type::ClientType; use crate::core::ics02_client::error::Error; use crate::core::ics02_client::height::Height; use crate::core::ics23_commitment::commitment::CommitmentRoot; -use crate::core::ics24_host::identifier::ClientId; -use crate::events::WithBlockDataType; use crate::timestamp::Timestamp; #[cfg(any(test, feature = "mocks"))] @@ -166,12 +164,3 @@ impl ConsensusState for AnyConsensusState { self } } - -/// Query request for a single client event, identified by `event_id`, for `client_id`. -#[derive(Clone, Debug)] -pub struct QueryClientEventRequest { - pub height: crate::Height, - pub event_id: WithBlockDataType, - pub client_id: ClientId, - pub consensus_height: crate::Height, -} diff --git a/modules/src/core/ics04_channel/channel.rs b/modules/src/core/ics04_channel/channel.rs index 0e8087e291..bfdd6f5497 100644 --- a/modules/src/core/ics04_channel/channel.rs +++ b/modules/src/core/ics04_channel/channel.rs @@ -11,10 +11,8 @@ use ibc_proto::ibc::core::channel::v1::{ IdentifiedChannel as RawIdentifiedChannel, }; -use crate::core::ics02_client::height::Height; -use crate::core::ics04_channel::{error::Error, packet::Sequence, Version}; +use crate::core::ics04_channel::{error::Error, Version}; use crate::core::ics24_host::identifier::{ChannelId, ConnectionId, PortId}; -use crate::events::WithBlockDataType; #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct IdentifiedChannelEnd { @@ -409,19 +407,6 @@ impl core::fmt::Display for State { } } -/// Used to query a packet event, identified by `event_id`, for specific channel and sequences. -/// The query is preformed for the chain context at `height`. -#[derive(Clone, Debug)] -pub struct QueryPacketEventDataRequest { - pub event_id: WithBlockDataType, - pub source_channel_id: ChannelId, - pub source_port_id: PortId, - pub destination_channel_id: ChannelId, - pub destination_port_id: PortId, - pub sequences: Vec, - pub height: Height, -} - #[cfg(test)] pub mod test_util { use crate::core::ics24_host::identifier::{ChannelId, ConnectionId, PortId}; diff --git a/modules/src/core/ics26_routing/handler.rs b/modules/src/core/ics26_routing/handler.rs index b5d5362ec5..659eb877be 100644 --- a/modules/src/core/ics26_routing/handler.rs +++ b/modules/src/core/ics26_routing/handler.rs @@ -297,7 +297,8 @@ mod tests { let mut msg_to_on_close = MsgTimeoutOnClose::try_from(get_dummy_raw_msg_timeout_on_close(36, 5)).unwrap(); msg_to_on_close.packet.sequence = 2.into(); - msg_to_on_close.packet.timeout_height = msg_transfer_two.timeout_height; + msg_to_on_close.packet.timeout_height = + msg_transfer_two.timeout_height.unwrap_or_else(Height::zero); msg_to_on_close.packet.timeout_timestamp = msg_transfer_two.timeout_timestamp; let denom = msg_transfer_two.token.denom.clone(); diff --git a/modules/src/lib.rs b/modules/src/lib.rs index 758f180223..06331cd689 100644 --- a/modules/src/lib.rs +++ b/modules/src/lib.rs @@ -60,7 +60,6 @@ pub mod handler; pub mod keys; pub mod macros; pub mod proofs; -pub mod query; pub mod relayer; pub mod signer; pub mod timestamp; diff --git a/modules/src/query.rs b/modules/src/query.rs deleted file mode 100644 index 9b7f035c8d..0000000000 --- a/modules/src/query.rs +++ /dev/null @@ -1,20 +0,0 @@ -use tendermint::abci::transaction::Hash; - -use crate::core::ics02_client::client_consensus::QueryClientEventRequest; -use crate::core::ics04_channel::channel::QueryPacketEventDataRequest; - -/// Used for queries and not yet standardized in channel's query.proto -#[derive(Clone, Debug)] -pub enum QueryTxRequest { - Packet(QueryPacketEventDataRequest), - Client(QueryClientEventRequest), - Transaction(QueryTxHash), -} - -#[derive(Clone, Debug)] -pub enum QueryBlockRequest { - Packet(QueryPacketEventDataRequest), -} - -#[derive(Clone, Debug)] -pub struct QueryTxHash(pub Hash); diff --git a/relayer-cli/src/commands/create/channel.rs b/relayer-cli/src/commands/create/channel.rs index 0c34df61b3..df89ea5056 100644 --- a/relayer-cli/src/commands/create/channel.rs +++ b/relayer-cli/src/commands/create/channel.rs @@ -11,7 +11,7 @@ use ibc::core::ics04_channel::Version; use ibc::core::ics24_host::identifier::{ChainId, ConnectionId, PortId}; use ibc_relayer::chain::handle::ChainHandle; use ibc_relayer::chain::requests::{ - HeightQuery, IncludeProof, QueryClientStateRequest, QueryConnectionRequest, + IncludeProof, QueryClientStateRequest, QueryConnectionRequest, QueryHeight, }; use ibc_relayer::channel::Channel; use ibc_relayer::connection::Connection; @@ -191,7 +191,7 @@ impl CreateChannelCommand { .query_connection( QueryConnectionRequest { connection_id: connection_a.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -202,7 +202,7 @@ impl CreateChannelCommand { .query_client_state( QueryClientStateRequest { client_id: conn_end.client_id().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) diff --git a/relayer-cli/src/commands/create/connection.rs b/relayer-cli/src/commands/create/connection.rs index 7e90e1ef4d..86235840c9 100644 --- a/relayer-cli/src/commands/create/connection.rs +++ b/relayer-cli/src/commands/create/connection.rs @@ -6,7 +6,7 @@ use abscissa_core::{Command, Runnable}; use ibc::core::ics02_client::client_state::ClientState; use ibc::core::ics24_host::identifier::{ChainId, ClientId}; use ibc_relayer::chain::handle::ChainHandle; -use ibc_relayer::chain::requests::{HeightQuery, IncludeProof, QueryClientStateRequest}; +use ibc_relayer::chain::requests::{IncludeProof, QueryClientStateRequest, QueryHeight}; use ibc_relayer::connection::Connection; use ibc_relayer::foreign_client::ForeignClient; @@ -116,7 +116,7 @@ impl CreateConnectionCommand { let chain_b_id = match chain_a.query_client_state( QueryClientStateRequest { client_id: client_a_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) { diff --git a/relayer-cli/src/commands/misbehaviour.rs b/relayer-cli/src/commands/misbehaviour.rs index d0e9282df7..c5514f4155 100644 --- a/relayer-cli/src/commands/misbehaviour.rs +++ b/relayer-cli/src/commands/misbehaviour.rs @@ -4,7 +4,7 @@ use ibc::core::ics02_client::events::UpdateClient; use ibc::core::ics24_host::identifier::{ChainId, ClientId}; use ibc::events::IbcEvent; use ibc_relayer::chain::handle::ChainHandle; -use ibc_relayer::chain::requests::{HeightQuery, IncludeProof, QueryClientStateRequest}; +use ibc_relayer::chain::requests::{IncludeProof, QueryClientStateRequest, QueryHeight}; use ibc_relayer::config::Config; use ibc_relayer::foreign_client::{ForeignClient, MisbehaviourResults}; use std::ops::Deref; @@ -102,7 +102,7 @@ fn misbehaviour_handling( .query_client_state( QueryClientStateRequest { client_id: client_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) diff --git a/relayer-cli/src/commands/query/channel.rs b/relayer-cli/src/commands/query/channel.rs index dcb2356f6f..44e748d0f9 100644 --- a/relayer-cli/src/commands/query/channel.rs +++ b/relayer-cli/src/commands/query/channel.rs @@ -4,7 +4,7 @@ use ibc_relayer::chain::handle::ChainHandle; use ibc::core::ics24_host::identifier::ChainId; use ibc::core::ics24_host::identifier::{ChannelId, PortId}; -use ibc_relayer::chain::requests::{HeightQuery, IncludeProof, QueryChannelRequest}; +use ibc_relayer::chain::requests::{IncludeProof, QueryChannelRequest, QueryHeight}; use crate::cli_utils::spawn_chain_runtime; use crate::conclude::{exit_with_unrecoverable_error, Output}; @@ -39,8 +39,8 @@ impl Runnable for QueryChannelEndCmd { QueryChannelRequest { port_id: self.port_id.clone(), channel_id: self.channel_id, - height: self.height.map_or(HeightQuery::Latest, |revision_height| { - HeightQuery::Specific(ibc::Height::new(chain.id().version(), revision_height)) + height: self.height.map_or(QueryHeight::Latest, |revision_height| { + QueryHeight::Specific(ibc::Height::new(chain.id().version(), revision_height)) }), }, IncludeProof::No, diff --git a/relayer-cli/src/commands/query/channel_ends.rs b/relayer-cli/src/commands/query/channel_ends.rs index dd9e19b8c1..ecde0dc54c 100644 --- a/relayer-cli/src/commands/query/channel_ends.rs +++ b/relayer-cli/src/commands/query/channel_ends.rs @@ -10,7 +10,7 @@ use ibc::core::ics24_host::identifier::{ChannelId, ClientId, ConnectionId, PortI use ibc::Height; use ibc_relayer::chain::handle::{BaseChainHandle, ChainHandle}; use ibc_relayer::chain::requests::{ - HeightQuery, IncludeProof, QueryChannelRequest, QueryClientStateRequest, QueryConnectionRequest, + IncludeProof, QueryChannelRequest, QueryClientStateRequest, QueryConnectionRequest, QueryHeight, }; use ibc_relayer::registry::Registry; @@ -85,7 +85,7 @@ fn do_run(cmd: &QueryChannelEndsCmd) -> Result<(), Box(cmd: &QueryChannelEndsCmd) -> Result<(), Box(cmd: &QueryChannelEndsCmd) -> Result<(), Box(cmd: &QueryChannelEndsCmd) -> Result<(), Box( chain_id, port_id, channel_id, - HeightQuery::Specific(chain_height), + QueryHeight::Specific(chain_height), ); match channel_ends { @@ -123,7 +123,7 @@ fn query_channel_ends( chain_id: ChainId, port_id: PortId, channel_id: ChannelId, - chain_height_query: HeightQuery, + chain_height_query: QueryHeight, ) -> Result> { let (connection_end, _) = chain.query_connection( QueryConnectionRequest { @@ -177,7 +177,7 @@ fn query_channel_ends( let counterparty_chain = registry.get_or_spawn(&counterparty_chain_id)?; let counterparty_chain_height_query = - HeightQuery::Specific(counterparty_chain.query_latest_height()?); + QueryHeight::Specific(counterparty_chain.query_latest_height()?); let (counterparty_connection_end, _) = counterparty_chain.query_connection( QueryConnectionRequest { diff --git a/relayer-cli/src/commands/query/client.rs b/relayer-cli/src/commands/query/client.rs index 6c1a5ee68c..06628c0dc7 100644 --- a/relayer-cli/src/commands/query/client.rs +++ b/relayer-cli/src/commands/query/client.rs @@ -4,16 +4,15 @@ use tracing::debug; use ibc_relayer::chain::handle::ChainHandle; use ibc_relayer::chain::requests::{ - HeightQuery, IncludeProof, PageRequest, QueryClientConnectionsRequest, QueryClientStateRequest, - QueryConsensusStateRequest, QueryConsensusStatesRequest, + IncludeProof, PageRequest, QueryClientConnectionsRequest, QueryClientEventRequest, + QueryClientStateRequest, QueryConsensusStateRequest, QueryConsensusStatesRequest, QueryHeight, + QueryTxRequest, }; -use ibc::core::ics02_client::client_consensus::QueryClientEventRequest; use ibc::core::ics02_client::client_state::ClientState; use ibc::core::ics24_host::identifier::ChainId; use ibc::core::ics24_host::identifier::ClientId; use ibc::events::WithBlockDataType; -use ibc::query::QueryTxRequest; use ibc::Height; use crate::application::app_config; @@ -45,8 +44,8 @@ impl Runnable for QueryClientStateCmd { match chain.query_client_state( QueryClientStateRequest { client_id: self.client_id.clone(), - height: self.height.map_or(HeightQuery::Latest, |revision_height| { - HeightQuery::Specific(ibc::Height::new(chain.id().version(), revision_height)) + height: self.height.map_or(QueryHeight::Latest, |revision_height| { + QueryHeight::Specific(ibc::Height::new(chain.id().version(), revision_height)) }), }, IncludeProof::No, @@ -98,7 +97,7 @@ impl Runnable for QueryClientConsensusCmd { let counterparty_chain = match chain.query_client_state( QueryClientStateRequest { client_id: self.client_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) { @@ -120,9 +119,9 @@ impl Runnable for QueryClientConsensusCmd { client_id: self.client_id.clone(), consensus_height, query_height: self.height.map_or( - HeightQuery::Latest, + QueryHeight::Latest, |revision_height| { - HeightQuery::Specific(ibc::Height::new( + QueryHeight::Specific(ibc::Height::new( chain.id().version(), revision_height, )) @@ -189,7 +188,7 @@ impl Runnable for QueryClientHeaderCmd { let counterparty_chain = match chain.query_client_state( QueryClientStateRequest { client_id: self.client_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) { @@ -204,10 +203,15 @@ impl Runnable for QueryClientHeaderCmd { let consensus_height = ibc::Height::new(counterparty_chain.version(), self.consensus_height); - let height = ibc::Height::new(chain.id().version(), self.height.unwrap_or(0_u64)); + let query_height = match self.height { + Some(revision_height) => { + QueryHeight::Specific(Height::new(chain.id().version(), revision_height)) + } + None => QueryHeight::Latest, + }; let res = chain.query_txs(QueryTxRequest::Client(QueryClientEventRequest { - height, + query_height, event_id: WithBlockDataType::UpdateClient, client_id: self.client_id.clone(), consensus_height, diff --git a/relayer-cli/src/commands/query/connection.rs b/relayer-cli/src/commands/query/connection.rs index c4624d939c..eea467d227 100644 --- a/relayer-cli/src/commands/query/connection.rs +++ b/relayer-cli/src/commands/query/connection.rs @@ -2,7 +2,7 @@ use abscissa_core::clap::Parser; use abscissa_core::{Command, Runnable}; use ibc_relayer::chain::handle::ChainHandle; use ibc_relayer::chain::requests::{ - HeightQuery, IncludeProof, PageRequest, QueryConnectionChannelsRequest, QueryConnectionRequest, + IncludeProof, PageRequest, QueryConnectionChannelsRequest, QueryConnectionRequest, QueryHeight, }; use ibc::core::{ @@ -41,8 +41,8 @@ impl Runnable for QueryConnectionEndCmd { let res = chain.query_connection( QueryConnectionRequest { connection_id: self.connection_id.clone(), - height: self.height.map_or(HeightQuery::Latest, |revision_height| { - HeightQuery::Specific(ibc::Height::new(chain.id().version(), revision_height)) + height: self.height.map_or(QueryHeight::Latest, |revision_height| { + QueryHeight::Specific(ibc::Height::new(chain.id().version(), revision_height)) }), }, IncludeProof::No, diff --git a/relayer-cli/src/commands/query/packet/ack.rs b/relayer-cli/src/commands/query/packet/ack.rs index be921909eb..9aca45eb3f 100644 --- a/relayer-cli/src/commands/query/packet/ack.rs +++ b/relayer-cli/src/commands/query/packet/ack.rs @@ -1,6 +1,6 @@ use abscissa_core::clap::Parser; use abscissa_core::{Command, Runnable}; -use ibc_relayer::chain::requests::{HeightQuery, IncludeProof, QueryPacketAcknowledgementRequest}; +use ibc_relayer::chain::requests::{IncludeProof, QueryHeight, QueryPacketAcknowledgementRequest}; use subtle_encoding::{Encoding, Hex}; use ibc::core::ics04_channel::packet::Sequence; @@ -44,8 +44,8 @@ impl QueryPacketAcknowledgmentCmd { port_id: self.port_id.clone(), channel_id: self.channel_id, sequence: self.sequence, - height: self.height.map_or(HeightQuery::Latest, |revision_height| { - HeightQuery::Specific(ibc::Height::new( + height: self.height.map_or(QueryHeight::Latest, |revision_height| { + QueryHeight::Specific(ibc::Height::new( chain.id().version(), revision_height, )) diff --git a/relayer-cli/src/commands/query/packet/commitment.rs b/relayer-cli/src/commands/query/packet/commitment.rs index 61bfde4ea1..7c3178a243 100644 --- a/relayer-cli/src/commands/query/packet/commitment.rs +++ b/relayer-cli/src/commands/query/packet/commitment.rs @@ -1,6 +1,6 @@ use abscissa_core::clap::Parser; use abscissa_core::{Command, Runnable}; -use ibc_relayer::chain::requests::{HeightQuery, IncludeProof, QueryPacketCommitmentRequest}; +use ibc_relayer::chain::requests::{IncludeProof, QueryHeight, QueryPacketCommitmentRequest}; use serde::Serialize; use subtle_encoding::{Encoding, Hex}; @@ -52,8 +52,8 @@ impl QueryPacketCommitmentCmd { port_id: self.port_id.clone(), channel_id: self.channel_id, sequence: self.sequence, - height: self.height.map_or(HeightQuery::Latest, |revision_height| { - HeightQuery::Specific(ibc::Height::new( + height: self.height.map_or(QueryHeight::Latest, |revision_height| { + QueryHeight::Specific(ibc::Height::new( chain.id().version(), revision_height, )) diff --git a/relayer-cli/src/commands/query/tx/events.rs b/relayer-cli/src/commands/query/tx/events.rs index ed22017250..f7a1023136 100644 --- a/relayer-cli/src/commands/query/tx/events.rs +++ b/relayer-cli/src/commands/query/tx/events.rs @@ -7,9 +7,9 @@ use tracing::debug; use tendermint::abci::transaction::Hash; use ibc::core::ics24_host::identifier::ChainId; -use ibc::query::{QueryTxHash, QueryTxRequest}; use ibc_relayer::chain::handle::ChainHandle; +use ibc_relayer::chain::requests::{QueryTxHash, QueryTxRequest}; use crate::cli_utils::spawn_chain_runtime; use crate::conclude::{exit_with_unrecoverable_error, Output}; diff --git a/relayer-cli/src/commands/tx/channel.rs b/relayer-cli/src/commands/tx/channel.rs index 3bc8398627..ae670e0d84 100644 --- a/relayer-cli/src/commands/tx/channel.rs +++ b/relayer-cli/src/commands/tx/channel.rs @@ -6,7 +6,7 @@ use ibc::core::ics04_channel::channel::Order; use ibc::core::ics24_host::identifier::{ChainId, ChannelId, ClientId, ConnectionId, PortId}; use ibc::events::IbcEvent; use ibc_relayer::chain::handle::ChainHandle; -use ibc_relayer::chain::requests::{HeightQuery, IncludeProof, QueryConnectionRequest}; +use ibc_relayer::chain::requests::{IncludeProof, QueryConnectionRequest, QueryHeight}; use ibc_relayer::channel::{Channel, ChannelSide}; use crate::cli_utils::ChainHandlePair; @@ -28,7 +28,7 @@ macro_rules! tx_chan_cmd { let dst_connection = match chains.dst.query_connection( QueryConnectionRequest { connection_id: $self.dst_conn_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) { @@ -88,7 +88,7 @@ impl Runnable for TxRawChanOpenInitCmd { let dst_connection = match chains.dst.query_connection( QueryConnectionRequest { connection_id: self.dst_conn_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) { diff --git a/relayer-cli/src/commands/tx/client.rs b/relayer-cli/src/commands/tx/client.rs index 286293789a..246e1e8e45 100644 --- a/relayer-cli/src/commands/tx/client.rs +++ b/relayer-cli/src/commands/tx/client.rs @@ -9,7 +9,7 @@ use ibc::events::IbcEvent; use ibc::Height; use ibc_relayer::chain::handle::ChainHandle; use ibc_relayer::chain::requests::{ - HeightQuery, IncludeProof, PageRequest, QueryClientStateRequest, QueryClientStatesRequest, + IncludeProof, PageRequest, QueryClientStateRequest, QueryClientStatesRequest, QueryHeight, }; use ibc_relayer::config::Config; use ibc_relayer::foreign_client::{CreateOptions, ForeignClient}; @@ -121,7 +121,7 @@ impl Runnable for TxUpdateClientCmd { let src_chain_id = match dst_chain.query_client_state( QueryClientStateRequest { client_id: self.dst_client_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) { @@ -140,21 +140,19 @@ impl Runnable for TxUpdateClientCmd { Err(e) => Output::error(format!("{}", e)).exit(), }; - let height = match self.target_height { - Some(height) => ibc::Height::new(src_chain.id().version(), height), - None => ibc::Height::zero(), - }; + let target_height = self.target_height.map_or(QueryHeight::Latest, |height| { + QueryHeight::Specific(Height::new(src_chain.id().version(), height)) + }); - let trusted_height = match self.trusted_height { - Some(height) => ibc::Height::new(src_chain.id().version(), height), - None => ibc::Height::zero(), - }; + let trusted_height = self + .trusted_height + .map(|height| Height::new(src_chain.id().version(), height)); let client = ForeignClient::find(src_chain, dst_chain, &self.dst_client_id) .unwrap_or_else(exit_with_unrecoverable_error); let res = client - .build_update_client_and_send(height, trusted_height) + .build_update_client_and_send(target_height, trusted_height) .map_err(Error::foreign_client); match res { @@ -188,7 +186,7 @@ impl Runnable for TxUpgradeClientCmd { let src_chain_id = match dst_chain.query_client_state( QueryClientStateRequest { client_id: self.client_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) { diff --git a/relayer-cli/src/commands/tx/transfer.rs b/relayer-cli/src/commands/tx/transfer.rs index 7188de0dcb..ca85f60fc7 100644 --- a/relayer-cli/src/commands/tx/transfer.rs +++ b/relayer-cli/src/commands/tx/transfer.rs @@ -12,7 +12,7 @@ use ibc::{ }; use ibc_relayer::chain::handle::ChainHandle; use ibc_relayer::chain::requests::{ - HeightQuery, IncludeProof, QueryChannelRequest, QueryClientStateRequest, QueryConnectionRequest, + IncludeProof, QueryChannelRequest, QueryClientStateRequest, QueryConnectionRequest, QueryHeight, }; use ibc_relayer::{ config::Config, @@ -176,7 +176,7 @@ impl Runnable for TxIcs20MsgTransferCmd { QueryChannelRequest { port_id: opts.packet_src_port_id.clone(), channel_id: opts.packet_src_channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -208,7 +208,7 @@ impl Runnable for TxIcs20MsgTransferCmd { .query_connection( QueryConnectionRequest { connection_id: conn_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -221,7 +221,7 @@ impl Runnable for TxIcs20MsgTransferCmd { .query_client_state( QueryClientStateRequest { client_id: conn_end.client_id().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) diff --git a/relayer/src/chain/cosmos.rs b/relayer/src/chain/cosmos.rs index e4b5190f78..d1c6f3219a 100644 --- a/relayer/src/chain/cosmos.rs +++ b/relayer/src/chain/cosmos.rs @@ -31,9 +31,7 @@ use ibc::core::ics02_client::client_state::{AnyClientState, IdentifiedAnyClientS use ibc::core::ics02_client::client_type::ClientType; use ibc::core::ics02_client::error::Error as ClientError; use ibc::core::ics03_connection::connection::{ConnectionEnd, IdentifiedConnectionEnd}; -use ibc::core::ics04_channel::channel::{ - ChannelEnd, IdentifiedChannelEnd, QueryPacketEventDataRequest, -}; +use ibc::core::ics04_channel::channel::{ChannelEnd, IdentifiedChannelEnd}; use ibc::core::ics04_channel::events as ChannelEvents; use ibc::core::ics04_channel::packet::{Packet, Sequence}; use ibc::core::ics23_commitment::commitment::CommitmentPrefix; @@ -44,8 +42,6 @@ use ibc::core::ics24_host::path::{ }; use ibc::core::ics24_host::{ClientUpgradePath, Path, IBC_QUERY_PATH, SDK_UPGRADE_QUERY_PATH}; use ibc::events::IbcEvent; -use ibc::query::QueryBlockRequest; -use ibc::query::QueryTxRequest; use ibc::signer::Signer; use ibc::Height as ICSHeight; use ibc::{ @@ -81,14 +77,15 @@ use crate::light_client::tendermint::LightClient as TmLightClient; use crate::light_client::{LightClient, Verified}; use super::requests::{ - HeightQuery, IncludeProof, QueryChannelClientStateRequest, QueryChannelRequest, + IncludeProof, QueryBlockRequest, QueryChannelClientStateRequest, QueryChannelRequest, QueryChannelsRequest, QueryClientConnectionsRequest, QueryClientStateRequest, QueryClientStatesRequest, QueryConnectionChannelsRequest, QueryConnectionRequest, - QueryConnectionsRequest, QueryConsensusStateRequest, QueryConsensusStatesRequest, + QueryConnectionsRequest, QueryConsensusStateRequest, QueryConsensusStatesRequest, QueryHeight, QueryHostConsensusStateRequest, QueryNextSequenceReceiveRequest, QueryPacketAcknowledgementRequest, QueryPacketAcknowledgementsRequest, - QueryPacketCommitmentRequest, QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, - QueryUnreceivedAcksRequest, QueryUnreceivedPacketsRequest, QueryUpgradedClientStateRequest, + QueryPacketCommitmentRequest, QueryPacketCommitmentsRequest, QueryPacketEventDataRequest, + QueryPacketReceiptRequest, QueryTxRequest, QueryUnreceivedAcksRequest, + QueryUnreceivedPacketsRequest, QueryUpgradedClientStateRequest, QueryUpgradedConsensusStateRequest, }; @@ -289,7 +286,7 @@ impl CosmosSdkChain { fn query( &self, data: impl Into, - height_query: HeightQuery, + height_query: QueryHeight, prove: bool, ) -> Result { crate::time!("query"); @@ -984,7 +981,7 @@ impl ChainEndpoint for CosmosSdkChain { async fn do_query_connection( chain: &CosmosSdkChain, connection_id: &ConnectionId, - height_query: HeightQuery, + height_query: QueryHeight, ) -> Result { use ibc_proto::ibc::core::connection::v1 as connection; use tonic::IntoRequest; @@ -1485,8 +1482,10 @@ impl ChainEndpoint for CosmosSdkChain { let response_height = ICSHeight::new(self.id().version(), u64::from(block.header.height)); - if request.height != ICSHeight::zero() && response_height > request.height { - continue; + if let QueryHeight::Specific(query_height) = request.height { + if response_height > query_height { + continue; + } } let response = self @@ -1522,8 +1521,8 @@ impl ChainEndpoint for CosmosSdkChain { request: QueryHostConsensusStateRequest, ) -> Result { let height = match request.height { - HeightQuery::Latest => TmHeight::from(0u32), - HeightQuery::Specific(ibc_height) => { + QueryHeight::Latest => TmHeight::from(0u32), + QueryHeight::Specific(ibc_height) => { TmHeight::try_from(ibc_height.revision_height).map_err(Error::invalid_height)? } }; diff --git a/relayer/src/chain/cosmos/query.rs b/relayer/src/chain/cosmos/query.rs index acd68bb5e0..087f5d963b 100644 --- a/relayer/src/chain/cosmos/query.rs +++ b/relayer/src/chain/cosmos/query.rs @@ -1,10 +1,7 @@ use http::uri::Uri; -use ibc::core::ics02_client::client_consensus::QueryClientEventRequest; -use ibc::core::ics04_channel::channel::QueryPacketEventDataRequest; use ibc::core::ics04_channel::packet::Sequence; use ibc::core::ics23_commitment::merkle::{convert_tm_to_ics_merkle_proof, MerkleProof}; use ibc::core::ics24_host::identifier::ChainId; -use ibc::query::QueryTxHash; use ibc_proto::cosmos::base::tendermint::v1beta1::service_client::ServiceClient; use ibc_proto::cosmos::base::tendermint::v1beta1::GetNodeInfoRequest; use tendermint::abci::Path as TendermintABCIPath; @@ -13,6 +10,7 @@ use tendermint_rpc::query::Query; use tendermint_rpc::{Client, HttpClient, Url}; use crate::chain::cosmos::version::Specs; +use crate::chain::requests::{QueryClientEventRequest, QueryPacketEventDataRequest, QueryTxHash}; use crate::error::Error; pub mod account; diff --git a/relayer/src/chain/cosmos/query/tx.rs b/relayer/src/chain/cosmos/query/tx.rs index dab694a53c..500986bafb 100644 --- a/relayer/src/chain/cosmos/query/tx.rs +++ b/relayer/src/chain/cosmos/query/tx.rs @@ -1,17 +1,17 @@ -use ibc::core::ics02_client::client_consensus::QueryClientEventRequest; use ibc::core::ics02_client::events as ClientEvents; -use ibc::core::ics04_channel::channel::QueryPacketEventDataRequest; use ibc::core::ics04_channel::events as ChannelEvents; use ibc::core::ics04_channel::packet::{Packet, Sequence}; use ibc::core::ics24_host::identifier::ChainId; use ibc::events::{from_tx_response_event, IbcEvent}; -use ibc::query::QueryTxRequest; use ibc::Height as ICSHeight; use tendermint::abci::Event; use tendermint_rpc::endpoint::tx::Response as ResultTx; use tendermint_rpc::{Client, HttpClient, Order, Url}; use crate::chain::cosmos::query::{header_query, packet_query, tx_hash_query}; +use crate::chain::requests::{ + QueryClientEventRequest, QueryHeight, QueryPacketEventDataRequest, QueryTxRequest, +}; use crate::error::Error; /// This function queries transactions for events matching certain criteria. @@ -146,9 +146,12 @@ fn update_client_from_tx_search_response( response: ResultTx, ) -> Option { let height = ICSHeight::new(chain_id.version(), u64::from(response.height)); - if request.height != ICSHeight::zero() && height > request.height { - return None; - } + + if let QueryHeight::Specific(specific_query_height) = request.query_height { + if height > specific_query_height { + return None; + } + }; response .tx_result @@ -184,8 +187,10 @@ fn packet_from_tx_search_response( response: ResultTx, ) -> Option { let height = ICSHeight::new(chain_id.version(), u64::from(response.height)); - if request.height != ICSHeight::zero() && height > request.height { - return None; + if let QueryHeight::Specific(query_height) = request.height { + if height > query_height { + return None; + } } response diff --git a/relayer/src/chain/cosmos/wait.rs b/relayer/src/chain/cosmos/wait.rs index 953395fef2..c889835c01 100644 --- a/relayer/src/chain/cosmos/wait.rs +++ b/relayer/src/chain/cosmos/wait.rs @@ -1,7 +1,6 @@ use core::time::Duration; use ibc::core::ics24_host::identifier::ChainId; use ibc::events::IbcEvent; -use ibc::query::{QueryTxHash, QueryTxRequest}; use itertools::Itertools; use std::thread; use std::time::Instant; @@ -10,6 +9,7 @@ use tracing::{info, trace}; use crate::chain::cosmos::query::tx::query_txs; use crate::chain::cosmos::types::tx::TxSyncResult; +use crate::chain::requests::{QueryTxHash, QueryTxRequest}; use crate::error::Error; const WAIT_BACKOFF: Duration = Duration::from_millis(300); diff --git a/relayer/src/chain/counterparty.rs b/relayer/src/chain/counterparty.rs index ae248b4ce8..7a0892c4cf 100644 --- a/relayer/src/chain/counterparty.rs +++ b/relayer/src/chain/counterparty.rs @@ -13,7 +13,7 @@ use super::{ handle::ChainHandle, requests::{QueryConnectionChannelsRequest, QueryPacketCommitmentsRequest}, }; -use crate::chain::requests::HeightQuery; +use crate::chain::requests::QueryHeight; use crate::channel::ChannelError; use crate::path::PathIdentifiers; use crate::supervisor::Error; @@ -39,7 +39,7 @@ pub fn counterparty_chain_from_connection( .query_connection( QueryConnectionRequest { connection_id: src_connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -50,7 +50,7 @@ pub fn counterparty_chain_from_connection( .query_client_state( QueryClientStateRequest { client_id: client_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -79,7 +79,7 @@ fn connection_on_destination( .query_connection( QueryConnectionRequest { connection_id: counterparty_connection.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -104,7 +104,7 @@ pub fn connection_state_on_destination( .query_connection( QueryConnectionRequest { connection_id: remote_connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -162,7 +162,7 @@ pub fn channel_connection_client( QueryChannelRequest { port_id: port_id.clone(), channel_id: *channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -185,7 +185,7 @@ pub fn channel_connection_client( .query_connection( QueryConnectionRequest { connection_id: connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -204,7 +204,7 @@ pub fn channel_connection_client( .query_client_state( QueryClientStateRequest { client_id: client_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -273,7 +273,7 @@ pub fn channel_on_destination( QueryChannelRequest { port_id: channel.channel_end.counterparty().port_id().clone(), channel_id: *remote_channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -311,7 +311,7 @@ pub fn check_channel_counterparty( QueryChannelRequest { port_id: target_pchan.port_id.clone(), channel_id: target_pchan.channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) diff --git a/relayer/src/chain/endpoint.rs b/relayer/src/chain/endpoint.rs index 10ac924d53..bbeea6bb7b 100644 --- a/relayer/src/chain/endpoint.rs +++ b/relayer/src/chain/endpoint.rs @@ -19,7 +19,6 @@ use ibc::core::ics23_commitment::commitment::{CommitmentPrefix, CommitmentProofB use ibc::core::ics24_host::identifier::{ChainId, ChannelId, ClientId, ConnectionId, PortId}; use ibc::events::IbcEvent; use ibc::proofs::{ConsensusProof, Proofs}; -use ibc::query::{QueryBlockRequest, QueryTxRequest}; use ibc::signer::Signer; use ibc::timestamp::Timestamp; use ibc::Height as ICSHeight; @@ -46,8 +45,8 @@ use crate::keyring::{KeyEntry, KeyRing}; use crate::light_client::LightClient; use super::requests::{ - HeightQuery, IncludeProof, QueryPacketAcknowledgementRequest, QueryPacketCommitmentRequest, - QueryPacketReceiptRequest, + IncludeProof, QueryBlockRequest, QueryHeight, QueryPacketAcknowledgementRequest, + QueryPacketCommitmentRequest, QueryPacketReceiptRequest, QueryTxRequest, }; /// The result of a health check. @@ -362,7 +361,7 @@ pub trait ChainEndpoint: Sized { let (connection_end, maybe_connection_proof) = self.query_connection( QueryConnectionRequest { connection_id: connection_id.clone(), - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::Yes, )?; @@ -400,7 +399,7 @@ pub trait ChainEndpoint: Sized { let (client_state_value, maybe_client_state_proof) = self.query_client_state( QueryClientStateRequest { client_id: client_id.clone(), - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::Yes, )?; @@ -416,7 +415,7 @@ pub trait ChainEndpoint: Sized { QueryConsensusStateRequest { client_id: client_id.clone(), consensus_height: client_state_value.latest_height(), - query_height: HeightQuery::Specific(height), + query_height: QueryHeight::Specific(height), }, IncludeProof::Yes, )?; @@ -463,7 +462,7 @@ pub trait ChainEndpoint: Sized { QueryChannelRequest { port_id: port_id.clone(), channel_id: *channel_id, - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::Yes, )?; @@ -491,7 +490,7 @@ pub trait ChainEndpoint: Sized { port_id, channel_id, sequence, - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::Yes, )?; @@ -504,7 +503,7 @@ pub trait ChainEndpoint: Sized { port_id, channel_id, sequence, - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::Yes, )?; @@ -517,7 +516,7 @@ pub trait ChainEndpoint: Sized { port_id, channel_id, sequence, - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::Yes, )?; @@ -529,7 +528,7 @@ pub trait ChainEndpoint: Sized { QueryNextSequenceReceiveRequest { port_id, channel_id, - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::Yes, )?; @@ -542,7 +541,7 @@ pub trait ChainEndpoint: Sized { QueryChannelRequest { port_id: port_id.clone(), channel_id, - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::Yes, )?; @@ -557,7 +556,7 @@ pub trait ChainEndpoint: Sized { port_id, channel_id, sequence, - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::Yes, )?; diff --git a/relayer/src/chain/handle.rs b/relayer/src/chain/handle.rs index e5fc7535b3..8714cc3058 100644 --- a/relayer/src/chain/handle.rs +++ b/relayer/src/chain/handle.rs @@ -26,7 +26,6 @@ use ibc::{ }, events::IbcEvent, proofs::Proofs, - query::{QueryBlockRequest, QueryTxRequest}, signer::Signer, Height, }; @@ -45,15 +44,15 @@ use super::{ client::ClientSettings, endpoint::{ChainStatus, HealthCheck}, requests::{ - IncludeProof, QueryChannelClientStateRequest, QueryChannelRequest, QueryChannelsRequest, - QueryClientConnectionsRequest, QueryClientStateRequest, QueryClientStatesRequest, - QueryConnectionChannelsRequest, QueryConnectionRequest, QueryConnectionsRequest, - QueryConsensusStateRequest, QueryConsensusStatesRequest, QueryHostConsensusStateRequest, - QueryNextSequenceReceiveRequest, QueryPacketAcknowledgementRequest, - QueryPacketAcknowledgementsRequest, QueryPacketCommitmentRequest, - QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, QueryUnreceivedAcksRequest, - QueryUnreceivedPacketsRequest, QueryUpgradedClientStateRequest, - QueryUpgradedConsensusStateRequest, + IncludeProof, QueryBlockRequest, QueryChannelClientStateRequest, QueryChannelRequest, + QueryChannelsRequest, QueryClientConnectionsRequest, QueryClientStateRequest, + QueryClientStatesRequest, QueryConnectionChannelsRequest, QueryConnectionRequest, + QueryConnectionsRequest, QueryConsensusStateRequest, QueryConsensusStatesRequest, + QueryHostConsensusStateRequest, QueryNextSequenceReceiveRequest, + QueryPacketAcknowledgementRequest, QueryPacketAcknowledgementsRequest, + QueryPacketCommitmentRequest, QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, + QueryTxRequest, QueryUnreceivedAcksRequest, QueryUnreceivedPacketsRequest, + QueryUpgradedClientStateRequest, QueryUpgradedConsensusStateRequest, }, tracking::TrackedMsgs, }; diff --git a/relayer/src/chain/handle/base.rs b/relayer/src/chain/handle/base.rs index 4c87c3a9ca..05903f2db4 100644 --- a/relayer/src/chain/handle/base.rs +++ b/relayer/src/chain/handle/base.rs @@ -21,7 +21,6 @@ use ibc::{ }, events::IbcEvent, proofs::Proofs, - query::{QueryBlockRequest, QueryTxRequest}, signer::Signer, Height, }; @@ -32,14 +31,14 @@ use crate::{ client::ClientSettings, endpoint::ChainStatus, requests::{ - IncludeProof, QueryChannelClientStateRequest, QueryChannelRequest, + IncludeProof, QueryBlockRequest, QueryChannelClientStateRequest, QueryChannelRequest, QueryChannelsRequest, QueryClientConnectionsRequest, QueryClientStateRequest, QueryClientStatesRequest, QueryConnectionChannelsRequest, QueryConnectionRequest, QueryConnectionsRequest, QueryConsensusStateRequest, QueryConsensusStatesRequest, QueryHostConsensusStateRequest, QueryNextSequenceReceiveRequest, QueryPacketAcknowledgementRequest, QueryPacketAcknowledgementsRequest, QueryPacketCommitmentRequest, QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, - QueryUnreceivedAcksRequest, QueryUnreceivedPacketsRequest, + QueryTxRequest, QueryUnreceivedAcksRequest, QueryUnreceivedPacketsRequest, QueryUpgradedClientStateRequest, QueryUpgradedConsensusStateRequest, }, tracking::TrackedMsgs, diff --git a/relayer/src/chain/handle/cache.rs b/relayer/src/chain/handle/cache.rs index d065e2506a..157e4a986a 100644 --- a/relayer/src/chain/handle/cache.rs +++ b/relayer/src/chain/handle/cache.rs @@ -7,7 +7,6 @@ use ibc::core::ics03_connection::connection::IdentifiedConnectionEnd; use ibc::core::ics04_channel::channel::IdentifiedChannelEnd; use ibc::core::ics04_channel::packet::{PacketMsgType, Sequence}; use ibc::core::ics23_commitment::merkle::MerkleProof; -use ibc::query::QueryTxRequest; use ibc::{ core::ics02_client::header::AnyHeader, core::ics03_connection::connection::ConnectionEnd, @@ -19,7 +18,6 @@ use ibc::{ }, events::IbcEvent, proofs::Proofs, - query::QueryBlockRequest, signer::Signer, Height, }; @@ -31,15 +29,15 @@ use crate::chain::client::ClientSettings; use crate::chain::endpoint::{ChainStatus, HealthCheck}; use crate::chain::handle::{ChainHandle, ChainRequest, Subscription}; use crate::chain::requests::{ - HeightQuery, IncludeProof, QueryChannelClientStateRequest, QueryChannelRequest, + IncludeProof, QueryBlockRequest, QueryChannelClientStateRequest, QueryChannelRequest, QueryChannelsRequest, QueryClientConnectionsRequest, QueryClientStateRequest, QueryClientStatesRequest, QueryConnectionChannelsRequest, QueryConnectionRequest, - QueryConnectionsRequest, QueryConsensusStateRequest, QueryConsensusStatesRequest, + QueryConnectionsRequest, QueryConsensusStateRequest, QueryConsensusStatesRequest, QueryHeight, QueryHostConsensusStateRequest, QueryNextSequenceReceiveRequest, QueryPacketAcknowledgementRequest, QueryPacketAcknowledgementsRequest, QueryPacketCommitmentRequest, QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, - QueryUnreceivedAcksRequest, QueryUnreceivedPacketsRequest, QueryUpgradedClientStateRequest, - QueryUpgradedConsensusStateRequest, + QueryTxRequest, QueryUnreceivedAcksRequest, QueryUnreceivedPacketsRequest, + QueryUpgradedClientStateRequest, QueryUpgradedConsensusStateRequest, }; use crate::chain::tracking::TrackedMsgs; use crate::config::ChainConfig; @@ -176,7 +174,7 @@ impl ChainHandle for CachingChainHandle { match include_proof { IncludeProof::Yes => handle.query_client_state(request, IncludeProof::Yes), IncludeProof::No => { - if matches!(request.height, HeightQuery::Latest) { + if matches!(request.height, QueryHeight::Latest) { let (result, in_cache) = self.cache.get_or_try_insert_client_state_with( &request.client_id, || { @@ -251,7 +249,7 @@ impl ChainHandle for CachingChainHandle { match include_proof { IncludeProof::Yes => handle.query_connection(request, IncludeProof::Yes), IncludeProof::No => { - if matches!(request.height, HeightQuery::Latest) { + if matches!(request.height, QueryHeight::Latest) { let (result, in_cache) = self.cache.get_or_try_insert_connection_with( &request.connection_id, || { @@ -312,7 +310,7 @@ impl ChainHandle for CachingChainHandle { match include_proof { IncludeProof::Yes => handle.query_channel(request, IncludeProof::Yes), IncludeProof::No => { - if matches!(request.height, HeightQuery::Latest) { + if matches!(request.height, QueryHeight::Latest) { let (result, in_cache) = self.cache.get_or_try_insert_channel_with( &PortChannelId::new(request.channel_id, request.port_id.clone()), || { diff --git a/relayer/src/chain/handle/counting.rs b/relayer/src/chain/handle/counting.rs index 4261000988..21a6118879 100644 --- a/relayer/src/chain/handle/counting.rs +++ b/relayer/src/chain/handle/counting.rs @@ -7,7 +7,6 @@ use ibc::core::ics03_connection::connection::IdentifiedConnectionEnd; use ibc::core::ics04_channel::channel::IdentifiedChannelEnd; use ibc::core::ics04_channel::packet::{PacketMsgType, Sequence}; use ibc::core::ics23_commitment::merkle::MerkleProof; -use ibc::query::QueryTxRequest; use ibc::{ core::ics02_client::header::AnyHeader, core::ics03_connection::connection::ConnectionEnd, @@ -17,7 +16,6 @@ use ibc::{ core::ics24_host::identifier::{ChainId, ChannelId, ClientId, ConnectionId, PortId}, events::IbcEvent, proofs::Proofs, - query::QueryBlockRequest, signer::Signer, Height, }; @@ -31,15 +29,15 @@ use crate::chain::client::ClientSettings; use crate::chain::endpoint::{ChainStatus, HealthCheck}; use crate::chain::handle::{ChainHandle, ChainRequest, Subscription}; use crate::chain::requests::{ - IncludeProof, QueryChannelClientStateRequest, QueryChannelRequest, QueryChannelsRequest, - QueryClientConnectionsRequest, QueryClientStateRequest, QueryClientStatesRequest, - QueryConnectionChannelsRequest, QueryConnectionRequest, QueryConnectionsRequest, - QueryConsensusStateRequest, QueryConsensusStatesRequest, QueryHostConsensusStateRequest, - QueryNextSequenceReceiveRequest, QueryPacketAcknowledgementRequest, - QueryPacketAcknowledgementsRequest, QueryPacketCommitmentRequest, - QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, QueryUnreceivedAcksRequest, - QueryUnreceivedPacketsRequest, QueryUpgradedClientStateRequest, - QueryUpgradedConsensusStateRequest, + IncludeProof, QueryBlockRequest, QueryChannelClientStateRequest, QueryChannelRequest, + QueryChannelsRequest, QueryClientConnectionsRequest, QueryClientStateRequest, + QueryClientStatesRequest, QueryConnectionChannelsRequest, QueryConnectionRequest, + QueryConnectionsRequest, QueryConsensusStateRequest, QueryConsensusStatesRequest, + QueryHostConsensusStateRequest, QueryNextSequenceReceiveRequest, + QueryPacketAcknowledgementRequest, QueryPacketAcknowledgementsRequest, + QueryPacketCommitmentRequest, QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, + QueryTxRequest, QueryUnreceivedAcksRequest, QueryUnreceivedPacketsRequest, + QueryUpgradedClientStateRequest, QueryUpgradedConsensusStateRequest, }; use crate::chain::tracking::TrackedMsgs; use crate::config::ChainConfig; diff --git a/relayer/src/chain/mock.rs b/relayer/src/chain/mock.rs index 457cb76eba..1d930d86bb 100644 --- a/relayer/src/chain/mock.rs +++ b/relayer/src/chain/mock.rs @@ -23,7 +23,6 @@ use ibc::core::ics24_host::identifier::{ChainId, ConnectionId}; use ibc::events::IbcEvent; use ibc::mock::context::MockContext; use ibc::mock::host::HostType; -use ibc::query::{QueryBlockRequest, QueryTxRequest}; use ibc::relayer::ics18_relayer::context::Ics18Context; use ibc::signer::Signer; use ibc::test_utils::get_dummy_account_id; @@ -44,14 +43,14 @@ use crate::light_client::Verified; use crate::light_client::{mock::LightClient as MockLightClient, LightClient}; use super::requests::{ - IncludeProof, QueryChannelsRequest, QueryClientConnectionsRequest, QueryClientStateRequest, - QueryConnectionChannelsRequest, QueryConnectionRequest, QueryConnectionsRequest, - QueryConsensusStateRequest, QueryConsensusStatesRequest, QueryHostConsensusStateRequest, - QueryNextSequenceReceiveRequest, QueryPacketAcknowledgementRequest, - QueryPacketAcknowledgementsRequest, QueryPacketCommitmentRequest, - QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, QueryUnreceivedAcksRequest, - QueryUnreceivedPacketsRequest, QueryUpgradedClientStateRequest, - QueryUpgradedConsensusStateRequest, + IncludeProof, QueryBlockRequest, QueryChannelsRequest, QueryClientConnectionsRequest, + QueryClientStateRequest, QueryConnectionChannelsRequest, QueryConnectionRequest, + QueryConnectionsRequest, QueryConsensusStateRequest, QueryConsensusStatesRequest, + QueryHostConsensusStateRequest, QueryNextSequenceReceiveRequest, + QueryPacketAcknowledgementRequest, QueryPacketAcknowledgementsRequest, + QueryPacketCommitmentRequest, QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, + QueryTxRequest, QueryUnreceivedAcksRequest, QueryUnreceivedPacketsRequest, + QueryUpgradedClientStateRequest, QueryUpgradedConsensusStateRequest, }; use super::tracking::TrackedMsgs; diff --git a/relayer/src/chain/requests.rs b/relayer/src/chain/requests.rs index a06966cc0e..705e9d9935 100644 --- a/relayer/src/chain/requests.rs +++ b/relayer/src/chain/requests.rs @@ -4,6 +4,7 @@ use crate::error::Error; use ibc::core::ics04_channel::packet::Sequence; use ibc::core::ics24_host::identifier::{ChannelId, ClientId, ConnectionId, PortId}; +use ibc::events::WithBlockDataType; use ibc::Height; use ibc_proto::cosmos::base::query::v1beta1::PageRequest as RawPageRequest; use ibc_proto::ibc::core::channel::v1::{ @@ -26,6 +27,7 @@ use ibc_proto::ibc::core::connection::v1::{ }; use serde::{Deserialize, Serialize}; +use tendermint::abci::transaction::Hash as TxHash; use tendermint::block::Height as TMBlockHeight; use tonic::metadata::AsciiMetadataValue; @@ -33,42 +35,42 @@ use tonic::metadata::AsciiMetadataValue; /// case where the user wants to query at whatever the latest height is, as /// opposed to specifying a specific height. #[derive(Copy, Clone, Debug, Serialize, Deserialize)] -pub enum HeightQuery { +pub enum QueryHeight { Latest, Specific(Height), } -impl TryFrom for TMBlockHeight { +impl TryFrom for TMBlockHeight { type Error = Error; - fn try_from(height_query: HeightQuery) -> Result { + fn try_from(height_query: QueryHeight) -> Result { let height = match height_query { - HeightQuery::Latest => 0u64, - HeightQuery::Specific(height) => height.revision_height, + QueryHeight::Latest => 0u64, + QueryHeight::Specific(height) => height.revision_height, }; Self::try_from(height).map_err(Error::invalid_height) } } -impl TryFrom for AsciiMetadataValue { +impl TryFrom for AsciiMetadataValue { type Error = Error; - fn try_from(height_query: HeightQuery) -> Result { + fn try_from(height_query: QueryHeight) -> Result { let height = match height_query { - HeightQuery::Latest => 0u64, - HeightQuery::Specific(height) => height.revision_height, + QueryHeight::Latest => 0u64, + QueryHeight::Specific(height) => height.revision_height, }; str::parse(&height.to_string()).map_err(Error::invalid_metadata) } } -impl Display for HeightQuery { +impl Display for QueryHeight { fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { match self { - HeightQuery::Latest => write!(f, "latest height"), - HeightQuery::Specific(height) => write!(f, "{}", height), + QueryHeight::Latest => write!(f, "latest height"), + QueryHeight::Specific(height) => write!(f, "{}", height), } } } @@ -127,7 +129,7 @@ impl From for RawPageRequest { #[derive(Clone, Debug, Serialize, Deserialize)] pub struct QueryClientStateRequest { pub client_id: ClientId, - pub height: HeightQuery, + pub height: QueryHeight, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -147,7 +149,7 @@ impl From for RawQueryClientStatesRequest { pub struct QueryConsensusStateRequest { pub client_id: ClientId, pub consensus_height: Height, - pub query_height: HeightQuery, + pub query_height: QueryHeight, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -206,7 +208,7 @@ impl From for RawQueryClientConnectionsRequest { #[derive(Clone, Debug, Serialize, Deserialize)] pub struct QueryConnectionRequest { pub connection_id: ConnectionId, - pub height: HeightQuery, + pub height: QueryHeight, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -241,7 +243,7 @@ impl From for RawQueryChannelsRequest { pub struct QueryChannelRequest { pub port_id: PortId, pub channel_id: ChannelId, - pub height: HeightQuery, + pub height: QueryHeight, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -264,7 +266,7 @@ pub struct QueryPacketCommitmentRequest { pub port_id: PortId, pub channel_id: ChannelId, pub sequence: Sequence, - pub height: HeightQuery, + pub height: QueryHeight, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -289,7 +291,7 @@ pub struct QueryPacketReceiptRequest { pub port_id: PortId, pub channel_id: ChannelId, pub sequence: Sequence, - pub height: HeightQuery, + pub height: QueryHeight, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -318,7 +320,7 @@ pub struct QueryPacketAcknowledgementRequest { pub port_id: PortId, pub channel_id: ChannelId, pub sequence: Sequence, - pub height: HeightQuery, + pub height: QueryHeight, } #[derive(Clone, Debug, Serialize, Deserialize)] @@ -369,7 +371,7 @@ impl From for RawQueryUnreceivedAcksRequest { pub struct QueryNextSequenceReceiveRequest { pub port_id: PortId, pub channel_id: ChannelId, - pub height: HeightQuery, + pub height: QueryHeight, } impl From for RawQueryNextSequenceReceiveRequest { @@ -383,5 +385,43 @@ impl From for RawQueryNextSequenceReceiveReques #[derive(Clone, Debug, Serialize, Deserialize)] pub struct QueryHostConsensusStateRequest { - pub height: HeightQuery, + pub height: QueryHeight, +} + +/// Used for queries and not yet standardized in channel's query.proto +#[derive(Clone, Debug)] +pub enum QueryTxRequest { + Packet(QueryPacketEventDataRequest), + Client(QueryClientEventRequest), + Transaction(QueryTxHash), +} + +#[derive(Clone, Debug)] +pub struct QueryTxHash(pub TxHash); + +/// Used to query a packet event, identified by `event_id`, for specific channel and sequences. +/// The query is preformed for the chain context at `height`. +#[derive(Clone, Debug)] +pub struct QueryPacketEventDataRequest { + pub event_id: WithBlockDataType, + pub source_channel_id: ChannelId, + pub source_port_id: PortId, + pub destination_channel_id: ChannelId, + pub destination_port_id: PortId, + pub sequences: Vec, + pub height: QueryHeight, +} + +/// Query request for a single client event, identified by `event_id`, for `client_id`. +#[derive(Clone, Debug)] +pub struct QueryClientEventRequest { + pub query_height: QueryHeight, + pub event_id: WithBlockDataType, + pub client_id: ClientId, + pub consensus_height: Height, +} + +#[derive(Clone, Debug)] +pub enum QueryBlockRequest { + Packet(QueryPacketEventDataRequest), } diff --git a/relayer/src/chain/runtime.rs b/relayer/src/chain/runtime.rs index fac8d8c274..506ecdf2df 100644 --- a/relayer/src/chain/runtime.rs +++ b/relayer/src/chain/runtime.rs @@ -27,7 +27,6 @@ use ibc::{ }, events::IbcEvent, proofs::Proofs, - query::{QueryBlockRequest, QueryTxRequest}, signer::Signer, Height, }; @@ -51,15 +50,15 @@ use super::{ endpoint::{ChainEndpoint, ChainStatus, HealthCheck}, handle::{ChainHandle, ChainRequest, ReplyTo, Subscription}, requests::{ - IncludeProof, QueryChannelClientStateRequest, QueryChannelRequest, QueryChannelsRequest, - QueryClientConnectionsRequest, QueryClientStateRequest, QueryClientStatesRequest, - QueryConnectionChannelsRequest, QueryConnectionRequest, QueryConnectionsRequest, - QueryConsensusStateRequest, QueryConsensusStatesRequest, QueryHostConsensusStateRequest, - QueryNextSequenceReceiveRequest, QueryPacketAcknowledgementRequest, - QueryPacketAcknowledgementsRequest, QueryPacketCommitmentRequest, - QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, QueryUnreceivedAcksRequest, - QueryUnreceivedPacketsRequest, QueryUpgradedClientStateRequest, - QueryUpgradedConsensusStateRequest, + IncludeProof, QueryBlockRequest, QueryChannelClientStateRequest, QueryChannelRequest, + QueryChannelsRequest, QueryClientConnectionsRequest, QueryClientStateRequest, + QueryClientStatesRequest, QueryConnectionChannelsRequest, QueryConnectionRequest, + QueryConnectionsRequest, QueryConsensusStateRequest, QueryConsensusStatesRequest, + QueryHostConsensusStateRequest, QueryNextSequenceReceiveRequest, + QueryPacketAcknowledgementRequest, QueryPacketAcknowledgementsRequest, + QueryPacketCommitmentRequest, QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, + QueryTxRequest, QueryUnreceivedAcksRequest, QueryUnreceivedPacketsRequest, + QueryUpgradedClientStateRequest, QueryUpgradedConsensusStateRequest, }, tracking::TrackedMsgs, }; diff --git a/relayer/src/channel.rs b/relayer/src/channel.rs index 6fac2272ad..e6a173d902 100644 --- a/relayer/src/channel.rs +++ b/relayer/src/channel.rs @@ -23,8 +23,8 @@ use ibc::Height; use crate::chain::counterparty::{channel_connection_client, channel_state_on_destination}; use crate::chain::handle::ChainHandle; use crate::chain::requests::{ - HeightQuery, IncludeProof, PageRequest, QueryChannelRequest, QueryConnectionChannelsRequest, - QueryConnectionRequest, + IncludeProof, PageRequest, QueryChannelRequest, QueryConnectionChannelsRequest, + QueryConnectionRequest, QueryHeight, }; use crate::chain::tracking::TrackedMsgs; use crate::connection::Connection; @@ -211,7 +211,7 @@ impl Channel { .query_connection( QueryConnectionRequest { connection_id: connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -263,7 +263,7 @@ impl Channel { QueryChannelRequest { port_id: channel.src_port_id.clone(), channel_id: channel.src_channel_id, - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::No, ) @@ -280,7 +280,7 @@ impl Channel { .query_connection( QueryConnectionRequest { connection_id: a_connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -501,7 +501,7 @@ impl Channel { QueryChannelRequest { port_id: channel.src_port_id().clone(), channel_id: *src_channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -520,7 +520,7 @@ impl Channel { QueryChannelRequest { port_id: channel.dst_port_id().clone(), channel_id: *dst_channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -861,7 +861,7 @@ impl Channel { QueryChannelRequest { port_id: self.dst_port_id().clone(), channel_id: *dst_channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -895,7 +895,7 @@ impl Channel { QueryChannelRequest { port_id: self.src_port_id().clone(), channel_id: *src_channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -916,7 +916,7 @@ impl Channel { .query_connection( QueryConnectionRequest { connection_id: self.dst_connection_id().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -1022,7 +1022,7 @@ impl Channel { QueryChannelRequest { port_id: self.src_port_id().clone(), channel_id: *src_channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -1033,7 +1033,7 @@ impl Channel { .query_connection( QueryConnectionRequest { connection_id: self.dst_connection_id().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -1135,7 +1135,7 @@ impl Channel { QueryChannelRequest { port_id: self.src_port_id().clone(), channel_id: *src_channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -1146,7 +1146,7 @@ impl Channel { .query_connection( QueryConnectionRequest { connection_id: self.dst_connection_id().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -1236,7 +1236,7 @@ impl Channel { QueryChannelRequest { port_id: self.dst_port_id().clone(), channel_id: *dst_channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -1303,7 +1303,7 @@ impl Channel { QueryChannelRequest { port_id: self.src_port_id().clone(), channel_id: *src_channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -1314,7 +1314,7 @@ impl Channel { .query_connection( QueryConnectionRequest { connection_id: self.dst_connection_id().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) diff --git a/relayer/src/connection.rs b/relayer/src/connection.rs index 68b9acc05f..7259a6fdb2 100644 --- a/relayer/src/connection.rs +++ b/relayer/src/connection.rs @@ -20,7 +20,7 @@ use ibc::tx_msg::Msg; use crate::chain::counterparty::connection_state_on_destination; use crate::chain::handle::ChainHandle; use crate::chain::requests::{ - HeightQuery, IncludeProof, PageRequest, QueryConnectionRequest, QueryConnectionsRequest, + IncludeProof, PageRequest, QueryConnectionRequest, QueryConnectionsRequest, QueryHeight, }; use crate::chain::tracking::TrackedMsgs; use crate::foreign_client::{ForeignClient, HasExpiredOrFrozenError}; @@ -220,7 +220,7 @@ impl Connection { .query_connection( QueryConnectionRequest { connection_id: connection.src_connection_id.clone(), - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::No, ) @@ -398,7 +398,7 @@ impl Connection { .query_connection( QueryConnectionRequest { connection_id: id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -418,7 +418,7 @@ impl Connection { .query_connection( QueryConnectionRequest { connection_id: id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -686,7 +686,7 @@ impl Connection { .query_connection( QueryConnectionRequest { connection_id: connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -809,7 +809,7 @@ impl Connection { .query_connection( QueryConnectionRequest { connection_id: dst_connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -927,7 +927,7 @@ impl Connection { .query_connection( QueryConnectionRequest { connection_id: src_connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -1073,7 +1073,7 @@ impl Connection { .query_connection( QueryConnectionRequest { connection_id: src_connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -1184,7 +1184,7 @@ impl Connection { .query_connection( QueryConnectionRequest { connection_id: src_connection_id.clone(), - height: HeightQuery::Specific(query_height), + height: QueryHeight::Specific(query_height), }, IncludeProof::No, ) diff --git a/relayer/src/foreign_client.rs b/relayer/src/foreign_client.rs index 0faf2e9ce3..1805f10ccc 100644 --- a/relayer/src/foreign_client.rs +++ b/relayer/src/foreign_client.rs @@ -14,7 +14,7 @@ use tracing::{debug, error, info, span, trace, warn, Level}; use flex_error::define_error; use ibc::core::ics02_client::client_consensus::{ - AnyConsensusState, AnyConsensusStateWithHeight, ConsensusState, QueryClientEventRequest, + AnyConsensusState, AnyConsensusStateWithHeight, ConsensusState, }; use ibc::core::ics02_client::client_state::AnyClientState; use ibc::core::ics02_client::client_state::ClientState; @@ -30,7 +30,6 @@ use ibc::core::ics02_client::trust_threshold::TrustThreshold; use ibc::core::ics24_host::identifier::{ChainId, ClientId}; use ibc::downcast; use ibc::events::{IbcEvent, WithBlockDataType}; -use ibc::query::QueryTxRequest; use ibc::timestamp::{Timestamp, TimestampOverflowError}; use ibc::tx_msg::Msg; use ibc::Height; @@ -38,9 +37,9 @@ use ibc::Height; use crate::chain::client::ClientSettings; use crate::chain::handle::ChainHandle; use crate::chain::requests::{ - HeightQuery, IncludeProof, PageRequest, QueryClientStateRequest, QueryConsensusStateRequest, - QueryConsensusStatesRequest, QueryUpgradedClientStateRequest, - QueryUpgradedConsensusStateRequest, + IncludeProof, PageRequest, QueryClientEventRequest, QueryClientStateRequest, + QueryConsensusStateRequest, QueryConsensusStatesRequest, QueryHeight, QueryTxRequest, + QueryUpgradedClientStateRequest, QueryUpgradedConsensusStateRequest, }; use crate::chain::tracking::TrackedMsgs; use crate::error::Error as RelayerError; @@ -411,7 +410,7 @@ impl ForeignClient ForeignClient ForeignClient ForeignClient Result, ForeignClientError> { - self.wait_and_build_update_client_with_trusted(target_height, Height::zero()) + self.wait_and_build_update_client_with_trusted(target_height, None) } /// Returns a trusted height that is lower than the target height, so @@ -964,7 +963,7 @@ impl ForeignClient, ) -> Result, ForeignClientError> { let src_application_latest_height = || { self.src_chain().query_latest_height().map_err(|e| { @@ -987,16 +986,17 @@ impl ForeignClient, ) -> Result, ForeignClientError> { // Get the latest client state on destination. let (client_state, _) = self.validated_client_state()?; - let trusted_height = if trusted_height == Height::zero() { - self.solve_trusted_height(target_height, &client_state)? - } else { - self.validate_trusted_height(trusted_height, &client_state)?; - trusted_height + let trusted_height = match maybe_trusted_height { + Some(trusted_height) => { + self.validate_trusted_height(trusted_height, &client_state)?; + trusted_height + } + None => self.solve_trusted_height(target_height, &client_state)?, }; if trusted_height != client_state.latest_height() { @@ -1091,32 +1091,32 @@ impl ForeignClient Result, ForeignClientError> { - self.build_update_client_and_send(Height::zero(), Height::zero()) + self.build_update_client_and_send(QueryHeight::Latest, None) } pub fn build_update_client_and_send( &self, - height: Height, - trusted_height: Height, + target_query_height: QueryHeight, + trusted_height: Option, ) -> Result, ForeignClientError> { - let h = if height == Height::zero() { - self.src_chain.query_latest_height().map_err(|e| { + let target_height = match target_query_height { + QueryHeight::Latest => self.src_chain.query_latest_height().map_err(|e| { ForeignClientError::client_update( self.src_chain.id(), "failed while querying src chain ({}) for latest height".to_string(), e, ) - })? - } else { - height + })?, + QueryHeight::Specific(height) => height, }; - let new_msgs = self.wait_and_build_update_client_with_trusted(h, trusted_height)?; + let new_msgs = + self.wait_and_build_update_client_with_trusted(target_height, trusted_height)?; if new_msgs.is_empty() { return Err(ForeignClientError::client_already_up_to_date( self.id.clone(), self.src_chain.id(), - h, + target_height, )); } @@ -1159,7 +1159,7 @@ impl ForeignClient ForeignClient ForeignClient Link { QueryChannelRequest { port_id: opts.src_port_id.clone(), channel_id: opts.src_channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -108,7 +108,7 @@ impl Link { .query_connection( QueryConnectionRequest { connection_id: a_connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) diff --git a/relayer/src/link/operational_data.rs b/relayer/src/link/operational_data.rs index 955c53a48a..f136f17d89 100644 --- a/relayer/src/link/operational_data.rs +++ b/relayer/src/link/operational_data.rs @@ -11,9 +11,9 @@ use ibc::events::IbcEvent; use ibc::Height; use crate::chain::handle::ChainHandle; -use crate::chain::requests::HeightQuery; use crate::chain::requests::IncludeProof; use crate::chain::requests::QueryClientStateRequest; +use crate::chain::requests::QueryHeight; use crate::chain::tracking::TrackedMsgs; use crate::chain::tracking::TrackingId; use crate::link::error::LinkError; @@ -182,7 +182,7 @@ impl OperationalData { .query_client_state( QueryClientStateRequest { client_id: relay_path.src_client_id().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -193,7 +193,7 @@ impl OperationalData { .query_client_state( QueryClientStateRequest { client_id: relay_path.dst_client_id().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) diff --git a/relayer/src/link/packet_events.rs b/relayer/src/link/packet_events.rs index ba8ed36833..accce5b4d5 100644 --- a/relayer/src/link/packet_events.rs +++ b/relayer/src/link/packet_events.rs @@ -2,13 +2,14 @@ use tracing::{info, span, trace, warn, Level}; -use ibc::core::ics04_channel::channel::QueryPacketEventDataRequest; use ibc::core::ics04_channel::packet::Sequence; use ibc::events::{IbcEvent, WithBlockDataType}; -use ibc::query::{QueryBlockRequest, QueryTxRequest}; use ibc::Height; use crate::chain::handle::ChainHandle; +use crate::chain::requests::{ + QueryBlockRequest, QueryHeight, QueryPacketEventDataRequest, QueryTxRequest, +}; use crate::link::error::LinkError; use crate::path::PathIdentifiers; @@ -71,7 +72,7 @@ pub fn query_send_packet_events( destination_port_id: path.port_id.clone(), destination_channel_id: path.channel_id, sequences, - height: src_query_height, + height: QueryHeight::Specific(src_query_height), }; let tx_events = src_chain @@ -127,7 +128,7 @@ pub fn query_write_ack_events( destination_port_id: path.counterparty_port_id.clone(), destination_channel_id: path.counterparty_channel_id, sequences, - height: src_query_height, + height: QueryHeight::Specific(src_query_height), })) .map_err(|e| LinkError::query(src_chain.id(), e))?; diff --git a/relayer/src/link/pending.rs b/relayer/src/link/pending.rs index 9086877614..1755d60d48 100644 --- a/relayer/src/link/pending.rs +++ b/relayer/src/link/pending.rs @@ -6,8 +6,8 @@ use tracing::{debug, error, trace, trace_span}; use ibc::core::ics24_host::identifier::{ChainId, ChannelId, PortId}; use ibc::events::IbcEvent; -use ibc::query::{QueryTxHash, QueryTxRequest}; +use crate::chain::requests::{QueryTxHash, QueryTxRequest}; use crate::chain::tracking::TrackingId; use crate::error::Error as RelayerError; use crate::link::{error::LinkError, RelayPath}; diff --git a/relayer/src/link/relay_path.rs b/relayer/src/link/relay_path.rs index 52c1bfb00f..e658a23a94 100644 --- a/relayer/src/link/relay_path.rs +++ b/relayer/src/link/relay_path.rs @@ -11,12 +11,14 @@ use crate::chain::counterparty::unreceived_acknowledgements; use crate::chain::counterparty::unreceived_packets; use crate::chain::endpoint::ChainStatus; use crate::chain::handle::ChainHandle; -use crate::chain::requests::HeightQuery; use crate::chain::requests::IncludeProof; use crate::chain::requests::QueryChannelRequest; +use crate::chain::requests::QueryClientEventRequest; +use crate::chain::requests::QueryHeight; use crate::chain::requests::QueryHostConsensusStateRequest; use crate::chain::requests::QueryNextSequenceReceiveRequest; use crate::chain::requests::QueryPacketCommitmentRequest; +use crate::chain::requests::QueryTxRequest; use crate::chain::requests::QueryUnreceivedAcksRequest; use crate::chain::requests::QueryUnreceivedPacketsRequest; use crate::chain::tracking::TrackedMsgs; @@ -42,7 +44,6 @@ use crate::util::queue::Queue; use ibc::{ core::{ ics02_client::{ - client_consensus::QueryClientEventRequest, events::ClientMisbehaviour as ClientMisbehaviourEvent, events::UpdateClient as UpdateClientEvent, }, @@ -59,7 +60,6 @@ use ibc::{ ics24_host::identifier::{ChannelId, ClientId, ConnectionId, PortId}, }, events::{IbcEvent, PrettyEvents, WithBlockDataType}, - query::QueryTxRequest, signer::Signer, timestamp::Timestamp, tx_msg::Msg, @@ -201,7 +201,7 @@ impl RelayPath { &self.channel } - fn src_channel(&self, height_query: HeightQuery) -> Result { + fn src_channel(&self, height_query: QueryHeight) -> Result { self.src_chain() .query_channel( QueryChannelRequest { @@ -215,7 +215,7 @@ impl RelayPath { .map_err(|e| LinkError::channel(ChannelError::query(self.src_chain().id(), e))) } - fn dst_channel(&self, height_query: HeightQuery) -> Result { + fn dst_channel(&self, height_query: QueryHeight) -> Result { self.dst_chain() .query_channel( QueryChannelRequest { @@ -518,7 +518,7 @@ impl RelayPath { // to the counterparty. if self.ordered_channel() && self - .src_channel(HeightQuery::Specific(timeout_ev.height))? + .src_channel(QueryHeight::Specific(timeout_ev.height))? .state_matches(&ChannelState::Closed) { (Some(self.build_chan_close_confirm_from_event(event)?), None) @@ -539,7 +539,7 @@ impl RelayPath { } IbcEvent::WriteAcknowledgement(ref write_ack_ev) => { if self - .dst_channel(HeightQuery::Latest)? + .dst_channel(QueryHeight::Latest)? .state_matches(&ChannelState::Closed) { (None, None) @@ -790,7 +790,7 @@ impl RelayPath { port_id: self.src_port_id().clone(), channel_id: *self.src_channel_id(), sequence: packet.sequence, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -834,7 +834,7 @@ impl RelayPath { ) -> Result { let events = chain .query_txs(QueryTxRequest::Client(QueryClientEventRequest { - height: Height::zero(), + query_height: QueryHeight::Latest, event_id: WithBlockDataType::UpdateClient, client_id, consensus_height, @@ -889,7 +889,7 @@ impl RelayPath { ) -> Result { let chain_time = chain .query_host_consensus_state(QueryHostConsensusStateRequest { - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }) .map_err(LinkError::relayer)? .timestamp(); @@ -1198,7 +1198,7 @@ impl RelayPath { QueryNextSequenceReceiveRequest { port_id: self.dst_port_id().clone(), channel_id: *dst_channel_id, - height: HeightQuery::Specific(height), + height: QueryHeight::Specific(height), }, IncludeProof::No, ) @@ -1275,7 +1275,7 @@ impl RelayPath { ) -> Result, LinkError> { let packet = event.packet.clone(); if self - .dst_channel(HeightQuery::Specific(dst_info.height))? + .dst_channel(QueryHeight::Specific(dst_info.height))? .state_matches(&ChannelState::Closed) { Ok(self.build_timeout_on_close_packet(&event.packet, dst_info.height)?) diff --git a/relayer/src/object.rs b/relayer/src/object.rs index b25027bfd0..5ab8911595 100644 --- a/relayer/src/object.rs +++ b/relayer/src/object.rs @@ -16,7 +16,7 @@ use crate::chain::{ counterparty_chain_from_connection, }, handle::ChainHandle, - requests::{HeightQuery, IncludeProof, QueryClientStateRequest}, + requests::{IncludeProof, QueryClientStateRequest, QueryHeight}, }; use crate::error::Error as RelayerError; use crate::supervisor::Error as SupervisorError; @@ -304,7 +304,7 @@ impl Object { .query_client_state( QueryClientStateRequest { client_id: e.client_id().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) diff --git a/relayer/src/supervisor/client_state_filter.rs b/relayer/src/supervisor/client_state_filter.rs index 1a01627592..0e9e49de24 100644 --- a/relayer/src/supervisor/client_state_filter.rs +++ b/relayer/src/supervisor/client_state_filter.rs @@ -11,7 +11,7 @@ use ibc::core::ics24_host::identifier::{ChainId, ChannelId, ClientId, Connection use crate::chain::handle::ChainHandle; use crate::chain::requests::{ - HeightQuery, IncludeProof, QueryChannelRequest, QueryClientStateRequest, QueryConnectionRequest, + IncludeProof, QueryChannelRequest, QueryClientStateRequest, QueryConnectionRequest, QueryHeight, }; use crate::error::Error as RelayerError; use crate::object; @@ -115,7 +115,7 @@ impl FilterPolicy { .query_client_state( QueryClientStateRequest { client_id: counterparty_client_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -232,7 +232,7 @@ impl FilterPolicy { .query_client_state( QueryClientStateRequest { client_id: obj.dst_client_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -274,7 +274,7 @@ impl FilterPolicy { .query_connection( QueryConnectionRequest { connection_id: obj.src_connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -284,7 +284,7 @@ impl FilterPolicy { .query_client_state( QueryClientStateRequest { client_id: connection_end.client_id().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -328,7 +328,7 @@ impl FilterPolicy { QueryChannelRequest { port_id: port_id.clone(), channel_id: *channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -345,7 +345,7 @@ impl FilterPolicy { .query_connection( QueryConnectionRequest { connection_id: conn_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -355,7 +355,7 @@ impl FilterPolicy { .query_client_state( QueryClientStateRequest { client_id: connection_end.client_id().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) diff --git a/relayer/src/supervisor/scan.rs b/relayer/src/supervisor/scan.rs index 3046015fa6..d2c44d788e 100644 --- a/relayer/src/supervisor/scan.rs +++ b/relayer/src/supervisor/scan.rs @@ -19,9 +19,9 @@ use crate::{ counterparty::{channel_on_destination, connection_state_on_destination}, handle::ChainHandle, requests::{ - HeightQuery, IncludeProof, PageRequest, QueryChannelRequest, - QueryClientConnectionsRequest, QueryClientStateRequest, QueryClientStatesRequest, - QueryConnectionChannelsRequest, QueryConnectionRequest, + IncludeProof, PageRequest, QueryChannelRequest, QueryClientConnectionsRequest, + QueryClientStateRequest, QueryClientStatesRequest, QueryConnectionChannelsRequest, + QueryConnectionRequest, QueryHeight, }, }, config::{filter::ChannelFilters, ChainConfig, Config, PacketFilter}, @@ -698,7 +698,7 @@ fn query_client( .query_client_state( QueryClientStateRequest { client_id: client_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -717,7 +717,7 @@ fn query_channel( QueryChannelRequest { port_id: port_id.clone(), channel_id: *channel_id, - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) @@ -788,7 +788,7 @@ fn query_connection( .query_connection( QueryConnectionRequest { connection_id: connection_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) diff --git a/relayer/src/transfer.rs b/relayer/src/transfer.rs index e5f2ff6c29..041f2baa1e 100644 --- a/relayer/src/transfer.rs +++ b/relayer/src/transfer.rs @@ -65,7 +65,7 @@ define_error! { #[derive(Copy, Clone)] pub struct TransferTimeout { - pub timeout_height: Height, + pub timeout_height: Option, pub timeout_timestamp: Timestamp, } @@ -86,9 +86,9 @@ impl TransferTimeout { destination_chain_status: &ChainStatus, ) -> Result { let timeout_height = if timeout_height_offset == 0 { - Height::zero() + None } else { - destination_chain_status.height.add(timeout_height_offset) + Some(destination_chain_status.height.add(timeout_height_offset)) }; let timeout_timestamp = if timeout_duration == Duration::ZERO { @@ -124,7 +124,7 @@ pub fn build_transfer_message( denom: String, sender: Signer, receiver: Signer, - timeout_height: Height, + timeout_height: Option, timeout_timestamp: Timestamp, ) -> Any { let msg = MsgTransfer { diff --git a/relayer/src/upgrade_chain.rs b/relayer/src/upgrade_chain.rs index 9af2828090..6d0855c877 100644 --- a/relayer/src/upgrade_chain.rs +++ b/relayer/src/upgrade_chain.rs @@ -18,7 +18,7 @@ use ibc_proto::google::protobuf::Any; use ibc_proto::ibc::core::client::v1::UpgradeProposal; use crate::chain::handle::ChainHandle; -use crate::chain::requests::{HeightQuery, IncludeProof, QueryClientStateRequest}; +use crate::chain::requests::{IncludeProof, QueryClientStateRequest, QueryHeight}; use crate::chain::tracking::TrackedMsgs; use crate::config::ChainConfig; use crate::error::Error; @@ -78,7 +78,7 @@ pub fn build_and_send_ibc_upgrade_proposal( .query_client_state( QueryClientStateRequest { client_id: opts.src_client_id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, ) diff --git a/tools/integration-test/src/tests/client_settings.rs b/tools/integration-test/src/tests/client_settings.rs index a32e59a704..45ae234d01 100644 --- a/tools/integration-test/src/tests/client_settings.rs +++ b/tools/integration-test/src/tests/client_settings.rs @@ -4,7 +4,7 @@ use ibc::core::ics02_client::trust_threshold::TrustThreshold; use ibc::clients::ics07_tendermint::client_state::ClientState as TendermintClientState; use ibc::core::ics02_client::client_state::AnyClientState; -use ibc_relayer::chain::requests::{HeightQuery, IncludeProof, QueryClientStateRequest}; +use ibc_relayer::chain::requests::{IncludeProof, QueryClientStateRequest, QueryHeight}; use ibc_relayer::foreign_client::CreateOptions; use ibc_test_framework::prelude::*; @@ -108,7 +108,7 @@ fn query_client_state( let (state, _) = handle.query_client_state( QueryClientStateRequest { client_id: id.clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, )?; diff --git a/tools/test-framework/src/relayer/chain.rs b/tools/test-framework/src/relayer/chain.rs index 67fc4f1884..f63ecb437e 100644 --- a/tools/test-framework/src/relayer/chain.rs +++ b/tools/test-framework/src/relayer/chain.rs @@ -29,7 +29,6 @@ use ibc::core::ics03_connection::connection::IdentifiedConnectionEnd; use ibc::core::ics04_channel::channel::IdentifiedChannelEnd; use ibc::core::ics04_channel::packet::{PacketMsgType, Sequence}; use ibc::core::ics23_commitment::merkle::MerkleProof; -use ibc::query::QueryTxRequest; use ibc::{ core::ics02_client::header::AnyHeader, core::ics03_connection::connection::ConnectionEnd, @@ -41,7 +40,6 @@ use ibc::{ core::ics24_host::identifier::{ClientId, ConnectionId, PortId}, events::IbcEvent, proofs::Proofs, - query::QueryBlockRequest, signer::Signer, Height, }; @@ -50,15 +48,15 @@ use ibc_relayer::chain::client::ClientSettings; use ibc_relayer::chain::endpoint::{ChainStatus, HealthCheck}; use ibc_relayer::chain::handle::{ChainHandle, ChainRequest, Subscription}; use ibc_relayer::chain::requests::{ - IncludeProof, QueryChannelClientStateRequest, QueryChannelRequest, QueryChannelsRequest, - QueryClientConnectionsRequest, QueryClientStateRequest, QueryClientStatesRequest, - QueryConnectionChannelsRequest, QueryConnectionRequest, QueryConnectionsRequest, - QueryConsensusStateRequest, QueryConsensusStatesRequest, QueryHostConsensusStateRequest, - QueryNextSequenceReceiveRequest, QueryPacketAcknowledgementRequest, - QueryPacketAcknowledgementsRequest, QueryPacketCommitmentRequest, - QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, QueryUnreceivedAcksRequest, - QueryUnreceivedPacketsRequest, QueryUpgradedClientStateRequest, - QueryUpgradedConsensusStateRequest, + IncludeProof, QueryBlockRequest, QueryChannelClientStateRequest, QueryChannelRequest, + QueryChannelsRequest, QueryClientConnectionsRequest, QueryClientStateRequest, + QueryClientStatesRequest, QueryConnectionChannelsRequest, QueryConnectionRequest, + QueryConnectionsRequest, QueryConsensusStateRequest, QueryConsensusStatesRequest, + QueryHostConsensusStateRequest, QueryNextSequenceReceiveRequest, + QueryPacketAcknowledgementRequest, QueryPacketAcknowledgementsRequest, + QueryPacketCommitmentRequest, QueryPacketCommitmentsRequest, QueryPacketReceiptRequest, + QueryTxRequest, QueryUnreceivedAcksRequest, QueryUnreceivedPacketsRequest, + QueryUpgradedClientStateRequest, QueryUpgradedConsensusStateRequest, }; use ibc_relayer::chain::tracking::TrackedMsgs; use ibc_relayer::config::ChainConfig; diff --git a/tools/test-framework/src/relayer/channel.rs b/tools/test-framework/src/relayer/channel.rs index 760e43966a..41f0bd2ab8 100644 --- a/tools/test-framework/src/relayer/channel.rs +++ b/tools/test-framework/src/relayer/channel.rs @@ -3,7 +3,7 @@ use eyre::eyre; use ibc::core::ics04_channel::channel::State as ChannelState; use ibc::core::ics04_channel::channel::{ChannelEnd, IdentifiedChannelEnd, Order}; use ibc_relayer::chain::handle::ChainHandle; -use ibc_relayer::chain::requests::{HeightQuery, IncludeProof, QueryChannelRequest}; +use ibc_relayer::chain::requests::{IncludeProof, QueryChannelRequest, QueryHeight}; use ibc_relayer::channel::{extract_channel_id, Channel, ChannelSide}; use crate::error::Error; @@ -80,7 +80,7 @@ pub fn query_channel_end( QueryChannelRequest { port_id: port_id.into_value().clone(), channel_id: *channel_id.into_value(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, )?; @@ -97,7 +97,7 @@ pub fn query_identified_channel_end( QueryChannelRequest { port_id: port_id.into_value().clone(), channel_id: *channel_id.into_value(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, )?; diff --git a/tools/test-framework/src/relayer/connection.rs b/tools/test-framework/src/relayer/connection.rs index a2b7373972..738d9112fc 100644 --- a/tools/test-framework/src/relayer/connection.rs +++ b/tools/test-framework/src/relayer/connection.rs @@ -8,7 +8,7 @@ use ibc::core::ics03_connection::connection::State as ConnectionState; use ibc::core::ics03_connection::connection::{ConnectionEnd, IdentifiedConnectionEnd}; use ibc::timestamp::ZERO_DURATION; use ibc_relayer::chain::handle::ChainHandle; -use ibc_relayer::chain::requests::{HeightQuery, IncludeProof, QueryConnectionRequest}; +use ibc_relayer::chain::requests::{IncludeProof, QueryConnectionRequest, QueryHeight}; use ibc_relayer::connection::{extract_connection_id, Connection, ConnectionSide}; use crate::error::Error; @@ -91,7 +91,7 @@ pub fn query_connection_end( let (connection_end, _) = handle.query_connection( QueryConnectionRequest { connection_id: connection_id.into_value().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, )?; @@ -106,7 +106,7 @@ pub fn query_identified_connection_end( let (connection_end, _) = handle.query_connection( QueryConnectionRequest { connection_id: connection_id.into_value().clone(), - height: HeightQuery::Latest, + height: QueryHeight::Latest, }, IncludeProof::No, )?; diff --git a/tools/test-framework/src/relayer/transfer.rs b/tools/test-framework/src/relayer/transfer.rs index 3af20851a5..0eec47b973 100644 --- a/tools/test-framework/src/relayer/transfer.rs +++ b/tools/test-framework/src/relayer/transfer.rs @@ -8,7 +8,6 @@ use core::time::Duration; use ibc::applications::transfer::error::Error as Ics20Error; use ibc::timestamp::Timestamp; -use ibc::Height; use ibc_proto::google::protobuf::Any; use ibc_relayer::chain::cosmos::types::config::TxConfig; use ibc_relayer::transfer::build_transfer_message as raw_build_transfer_message; @@ -53,7 +52,7 @@ pub fn build_transfer_message( denom.to_string(), sender, receiver, - Height::zero(), + None, timeout_timestamp, )) }