From 55556510c648539f18d4c755113318248171cbde Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Thu, 1 Jun 2023 16:55:33 -0700 Subject: [PATCH 01/14] Upgrade to tendermint v0.32 and ibc-proto-rs v0.31 --- crates/ibc/Cargo.toml | 16 ++++---- .../clients/ics07_tendermint/client_state.rs | 2 +- .../client_state/misbehaviour.rs | 2 +- .../client_state/update_client.rs | 2 +- .../events/channel_attributes.rs | 4 +- .../ics04_channel/events/packet_attributes.rs | 5 +-- .../core/ics04_channel/handler/recv_packet.rs | 2 +- .../ibc/src/core/ics23_commitment/merkle.rs | 2 +- crates/ibc/src/core/ics23_commitment/specs.rs | 40 +++++++------------ 9 files changed, 32 insertions(+), 43 deletions(-) diff --git a/crates/ibc/Cargo.toml b/crates/ibc/Cargo.toml index 18d3b44d5..535cb1c24 100644 --- a/crates/ibc/Cargo.toml +++ b/crates/ibc/Cargo.toml @@ -49,8 +49,8 @@ mocks-no-std = ["cfg-if"] [dependencies] # Proto definitions for all IBC-related interfaces, e.g., connections or channels. -ibc-proto = { version = "0.30.0", default-features = false, features = ["parity-scale-codec", "borsh"] } -ics23 = { version = "0.9.0", default-features = false, features = ["host-functions"] } +ibc-proto = { version = "0.31.0", default-features = false, features = ["parity-scale-codec", "borsh"] } +ics23 = { version = "0.10.1", default-features = false, features = ["host-functions"] } time = { version = ">=0.3.0, <0.3.22", default-features = false } serde_derive = { version = "1.0.104", default-features = false, optional = true } serde = { version = "1.0", default-features = false, optional = true } @@ -77,20 +77,20 @@ parking_lot = { version = "0.12.1", default-features = false, optional = true } cfg-if = { version = "1.0.0", optional = true } [dependencies.tendermint] -version = "0.31" +version = "0.32" default-features = false [dependencies.tendermint-proto] -version = "0.31" +version = "0.32" default-features = false [dependencies.tendermint-light-client-verifier] -version = "0.31" +version = "0.32" default-features = false features = ["rust-crypto"] [dependencies.tendermint-testgen] -version = "0.31" +version = "0.32" optional = true default-features = false @@ -99,7 +99,7 @@ env_logger = "0.10.0" rstest = "0.16.0" tracing-subscriber = { version = "0.3.14", features = ["fmt", "env-filter", "json"]} test-log = { version = "0.2.10", features = ["trace"] } -tendermint-rpc = { version = "0.31", features = ["http-client", "websocket-client"] } -tendermint-testgen = { version = "0.31" } # Needed for generating (synthetic) light blocks. +tendermint-rpc = { version = "0.32", features = ["http-client", "websocket-client"] } +tendermint-testgen = { version = "0.32" } # Needed for generating (synthetic) light blocks. parking_lot = { version = "0.12.1" } cfg-if = { version = "1.0.0" } diff --git a/crates/ibc/src/clients/ics07_tendermint/client_state.rs b/crates/ibc/src/clients/ics07_tendermint/client_state.rs index 770c93adb..a999fee99 100644 --- a/crates/ibc/src/clients/ics07_tendermint/client_state.rs +++ b/crates/ibc/src/clients/ics07_tendermint/client_state.rs @@ -52,7 +52,7 @@ const TENDERMINT_CLIENT_STATE_TYPE_URL: &str = "/ibc.lightclients.tendermint.v1. /// Contains the core implementation of the Tendermint light client #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq)] pub struct ClientState { pub chain_id: ChainId, pub trust_level: TrustThreshold, diff --git a/crates/ibc/src/clients/ics07_tendermint/client_state/misbehaviour.rs b/crates/ibc/src/clients/ics07_tendermint/client_state/misbehaviour.rs index 4636792c5..639d0c6b4 100644 --- a/crates/ibc/src/clients/ics07_tendermint/client_state/misbehaviour.rs +++ b/crates/ibc/src/clients/ics07_tendermint/client_state/misbehaviour.rs @@ -87,7 +87,7 @@ impl ClientState { })?; self.verifier - .verify(untrusted_state, trusted_state, &options, current_timestamp) + .verify_misbehaviour_header(untrusted_state, trusted_state, &options, current_timestamp) .into_result()?; Ok(()) diff --git a/crates/ibc/src/clients/ics07_tendermint/client_state/update_client.rs b/crates/ibc/src/clients/ics07_tendermint/client_state/update_client.rs index 8001f2461..00633a135 100644 --- a/crates/ibc/src/clients/ics07_tendermint/client_state/update_client.rs +++ b/crates/ibc/src/clients/ics07_tendermint/client_state/update_client.rs @@ -71,7 +71,7 @@ impl ClientState { // main header verification, delegated to the tendermint-light-client crate. self.verifier - .verify(untrusted_state, trusted_state, &options, now) + .verify_update_header(untrusted_state, trusted_state, &options, now) .into_result()?; } diff --git a/crates/ibc/src/core/ics04_channel/events/channel_attributes.rs b/crates/ibc/src/core/ics04_channel/events/channel_attributes.rs index e858527bb..dad056755 100644 --- a/crates/ibc/src/core/ics04_channel/events/channel_attributes.rs +++ b/crates/ibc/src/core/ics04_channel/events/channel_attributes.rs @@ -1,5 +1,5 @@ -///! This module holds all the abci event attributes for IBC events emitted -///! during the channel handshake. +//! This module holds all the abci event attributes for IBC events emitted +//! during the channel handshake. use derive_more::From; use tendermint::abci; diff --git a/crates/ibc/src/core/ics04_channel/events/packet_attributes.rs b/crates/ibc/src/core/ics04_channel/events/packet_attributes.rs index e60f563d6..1aecc0fc9 100644 --- a/crates/ibc/src/core/ics04_channel/events/packet_attributes.rs +++ b/crates/ibc/src/core/ics04_channel/events/packet_attributes.rs @@ -1,3 +1,5 @@ +//! This module holds all the abci event attributes for IBC events emitted +//! during packet-related datagrams. use crate::core::timestamp::Timestamp; use crate::prelude::*; @@ -16,9 +18,6 @@ use tendermint::abci; use core::str; -///! This module holds all the abci event attributes for IBC events emitted -///! during packet-related datagrams. - const PKT_SEQ_ATTRIBUTE_KEY: &str = "packet_sequence"; const PKT_DATA_ATTRIBUTE_KEY: &str = "packet_data"; const PKT_DATA_HEX_ATTRIBUTE_KEY: &str = "packet_data_hex"; diff --git a/crates/ibc/src/core/ics04_channel/handler/recv_packet.rs b/crates/ibc/src/core/ics04_channel/handler/recv_packet.rs index d622122f1..2f2ed955b 100644 --- a/crates/ibc/src/core/ics04_channel/handler/recv_packet.rs +++ b/crates/ibc/src/core/ics04_channel/handler/recv_packet.rs @@ -51,7 +51,7 @@ where // Note: ibc-go doesn't make the check for `Order::None` channels Order::None => false, Order::Unordered => { - let packet = msg.packet.clone(); + let packet = &msg.packet; let receipt_path_on_b = ReceiptPath::new(&packet.port_id_on_b, &packet.chan_id_on_b, packet.seq_on_a); ctx_b.get_packet_receipt(&receipt_path_on_b).is_ok() diff --git a/crates/ibc/src/core/ics23_commitment/merkle.rs b/crates/ibc/src/core/ics23_commitment/merkle.rs index 03fbf1a5a..a317190c8 100644 --- a/crates/ibc/src/core/ics23_commitment/merkle.rs +++ b/crates/ibc/src/core/ics23_commitment/merkle.rs @@ -29,7 +29,7 @@ impl From for MerkleRoot { } } -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq)] pub struct MerkleProof { pub proofs: Vec, } diff --git a/crates/ibc/src/core/ics23_commitment/specs.rs b/crates/ibc/src/core/ics23_commitment/specs.rs index 45cf1b08d..c10495e90 100644 --- a/crates/ibc/src/core/ics23_commitment/specs.rs +++ b/crates/ibc/src/core/ics23_commitment/specs.rs @@ -1,9 +1,9 @@ //! Defines proof specs, which encode the structure of proofs use crate::prelude::*; -use ibc_proto::ics23::{InnerSpec as IbcInnerSpec, LeafOp as IbcLeafOp, ProofSpec as IbcProofSpec}; -use ics23::{InnerSpec as Ics23InnerSpec, LeafOp as Ics23LeafOp, ProofSpec as Ics23ProofSpec}; - +use ibc_proto::ics23::{ + InnerSpec as Ics23InnerSpec, LeafOp as Ics23LeafOp, ProofSpec as Ics23ProofSpec, +}; /// An array of proof specifications. /// /// This type encapsulates different types of proof specifications, mostly predefined, e.g., for @@ -12,7 +12,7 @@ use ics23::{InnerSpec as Ics23InnerSpec, LeafOp as Ics23LeafOp, ProofSpec as Ics /// into proof specifications as represented in the `ibc_proto` type; see the /// `From` trait(s) below. #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug, PartialEq, Eq)] +#[derive(Clone, Debug, PartialEq)] pub struct ProofSpecs(Vec); impl ProofSpecs { @@ -36,12 +36,6 @@ impl Default for ProofSpecs { } } -impl From> for ProofSpecs { - fn from(ibc_specs: Vec) -> Self { - Self(ibc_specs.into_iter().map(ProofSpec).collect()) - } -} - impl From> for ProofSpecs { fn from(ics23_specs: Vec) -> Self { Self( @@ -59,23 +53,18 @@ impl From for Vec { } } -impl From for Vec { - fn from(specs: ProofSpecs) -> Self { - specs.0.into_iter().map(|spec| spec.0).collect() - } -} - #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug, PartialEq, Eq)] -struct ProofSpec(IbcProofSpec); +#[derive(Clone, Debug, PartialEq)] +struct ProofSpec(Ics23ProofSpec); impl From for ProofSpec { fn from(spec: Ics23ProofSpec) -> Self { - Self(IbcProofSpec { + Self(Ics23ProofSpec { leaf_spec: spec.leaf_spec.map(|lop| LeafOp::from(lop).0), inner_spec: spec.inner_spec.map(|ispec| InnerSpec::from(ispec).0), max_depth: spec.max_depth, min_depth: spec.min_depth, + prehash_key_before_comparison: spec.prehash_key_before_comparison, }) } } @@ -88,17 +77,18 @@ impl From for Ics23ProofSpec { inner_spec: spec.inner_spec.map(|ispec| InnerSpec(ispec).into()), max_depth: spec.max_depth, min_depth: spec.min_depth, + prehash_key_before_comparison: spec.prehash_key_before_comparison, } } } #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug, PartialEq, Eq)] -struct LeafOp(IbcLeafOp); +#[derive(Clone, Debug, PartialEq)] +struct LeafOp(Ics23LeafOp); impl From for LeafOp { fn from(leaf_op: Ics23LeafOp) -> Self { - Self(IbcLeafOp { + Self(Ics23LeafOp { hash: leaf_op.hash, prehash_key: leaf_op.prehash_key, prehash_value: leaf_op.prehash_value, @@ -122,12 +112,12 @@ impl From for Ics23LeafOp { } #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] -#[derive(Clone, Debug, PartialEq, Eq)] -struct InnerSpec(IbcInnerSpec); +#[derive(Clone, Debug, PartialEq)] +struct InnerSpec(Ics23InnerSpec); impl From for InnerSpec { fn from(inner_spec: Ics23InnerSpec) -> Self { - Self(IbcInnerSpec { + Self(Ics23InnerSpec { child_order: inner_spec.child_order, child_size: inner_spec.child_size, min_prefix_length: inner_spec.min_prefix_length, From 3d671d3d7f866ed1f1b6dc04991bdf818b05dae0 Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Fri, 2 Jun 2023 08:47:12 -0700 Subject: [PATCH 02/14] Fix clippy catches --- crates/ibc/src/core/ics04_channel/handler/recv_packet.rs | 2 +- crates/ibc/src/core/ics23_commitment/merkle.rs | 4 ++-- crates/ibc/src/mock/context.rs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/ibc/src/core/ics04_channel/handler/recv_packet.rs b/crates/ibc/src/core/ics04_channel/handler/recv_packet.rs index 2f2ed955b..63dd25445 100644 --- a/crates/ibc/src/core/ics04_channel/handler/recv_packet.rs +++ b/crates/ibc/src/core/ics04_channel/handler/recv_packet.rs @@ -388,7 +388,7 @@ mod tests { .. } = fixture; - let packet = msg.packet.clone(); + let packet = &msg.packet; let mut context = context .with_client(&ClientId::default(), client_height) .with_connection(ConnectionId::default(), conn_end_on_b) diff --git a/crates/ibc/src/core/ics23_commitment/merkle.rs b/crates/ibc/src/core/ics23_commitment/merkle.rs index a317190c8..5f6190e34 100644 --- a/crates/ibc/src/core/ics23_commitment/merkle.rs +++ b/crates/ibc/src/core/ics23_commitment/merkle.rs @@ -5,8 +5,8 @@ use crate::prelude::*; use ibc_proto::ibc::core::commitment::v1::MerklePath; use ibc_proto::ibc::core::commitment::v1::MerkleProof as RawMerkleProof; use ibc_proto::ibc::core::commitment::v1::MerkleRoot; -use ics23::commitment_proof::Proof; -use ics23::{ +use ibc_proto::ics23::commitment_proof::Proof; +use ibc_proto::ics23::{ calculate_existence_root, verify_membership, verify_non_membership, CommitmentProof, NonExistenceProof, }; diff --git a/crates/ibc/src/mock/context.rs b/crates/ibc/src/mock/context.rs index b60e9dbc8..03f204750 100644 --- a/crates/ibc/src/mock/context.rs +++ b/crates/ibc/src/mock/context.rs @@ -1824,7 +1824,7 @@ mod tests { ); ctx.add_route(ModuleId::new("foomodule".to_string()), FooModule::default()) .unwrap(); - ctx.add_route(ModuleId::new("barmodule".to_string()), BarModule::default()) + ctx.add_route(ModuleId::new("barmodule".to_string()), BarModule) .unwrap(); let mut on_recv_packet_result = |module_id: &'static str| { From fc529c832bde61df021edf684147b81939057220 Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Fri, 2 Jun 2023 10:18:45 -0700 Subject: [PATCH 03/14] Bump versions in ci/no-std-check --- ci/no-std-check/Cargo.lock | 177 ++++++++++++------------------------- ci/no-std-check/Cargo.toml | 8 +- 2 files changed, 60 insertions(+), 125 deletions(-) diff --git a/ci/no-std-check/Cargo.lock b/ci/no-std-check/Cargo.lock index 0a420fb46..053fdf7b9 100644 --- a/ci/no-std-check/Cargo.lock +++ b/ci/no-std-check/Cargo.lock @@ -288,9 +288,9 @@ dependencies = [ [[package]] name = "bounded-collections" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a071c348a5ef6da1d3a87166b408170b46002382b1dda83992b5c2208cefb370" +checksum = "07fbd1d11282a1eb134d3c3b7cf8ce213b5161c6e5f73fb1b98618482c606b64" dependencies = [ "log", "parity-scale-codec", @@ -409,9 +409,9 @@ dependencies = [ [[package]] name = "cranelift-entity" -version = "0.93.1" +version = "0.93.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cf583f7b093f291005f9fb1323e2c37f6ee4c7909e39ce016b2e8360d461705" +checksum = "f42ea692c7b450ad18b8c9889661505d51c09ec4380cf1c2d278dbb2da22cae1" dependencies = [ "serde", ] @@ -1061,7 +1061,7 @@ dependencies = [ "displaydoc", "dyn-clone", "erased-serde", - "ibc-proto 0.30.0", + "ibc-proto", "ics23", "num-traits", "primitive-types", @@ -1072,9 +1072,9 @@ dependencies = [ "serde_json", "sha2 0.10.6", "subtle-encoding", - "tendermint 0.31.1", - "tendermint-light-client-verifier 0.31.1", - "tendermint-proto 0.31.1", + "tendermint", + "tendermint-light-client-verifier", + "tendermint-proto", "time", "tracing", "uint", @@ -1082,51 +1082,36 @@ dependencies = [ [[package]] name = "ibc-proto" -version = "0.26.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9303a1308c886aea769ef0667c5caa422a78b01e9f8177fea8b91b08a4ff50c" -dependencies = [ - "base64 0.13.1", - "borsh", - "bytes", - "flex-error", - "parity-scale-codec", - "prost", - "scale-info", - "serde", - "subtle-encoding", - "tendermint-proto 0.29.1", -] - -[[package]] -name = "ibc-proto" -version = "0.30.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f844ebc1ddf70f2ad7cd5981a2feba261fff55e1ad6482c27551ee3c6cec7df4" +checksum = "dc198998f950ed48ffcd405a6b147e2a4ee7fc25ed9531857774d170e1562ea1" dependencies = [ "base64 0.21.0", "borsh", "bytes", "flex-error", + "ics23", "parity-scale-codec", "prost", "scale-info", "serde", "subtle-encoding", - "tendermint-proto 0.31.1", + "tendermint-proto", ] [[package]] name = "ics23" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca44b684ce1859cff746ff46f5765ab72e12e3c06f76a8356db8f9a2ecf43f17" +checksum = "af9e8f569c5cc88e08b8d076dc207e0748aa1f52d4b84910ec919c8f2bed6ea7" dependencies = [ "anyhow", "bytes", "hex", + "pbjson", "prost", "ripemd", + "serde", "sha2 0.10.6", "sha3", ] @@ -1248,9 +1233,9 @@ checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5" [[package]] name = "libm" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" +checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" [[package]] name = "libsecp256k1" @@ -1423,15 +1408,15 @@ name = "no-std-check" version = "0.1.0" dependencies = [ "ibc", - "ibc-proto 0.26.0", + "ibc-proto", "sp-core", "sp-io", "sp-runtime", "sp-std", "syn 2.0.18", - "tendermint 0.29.1", - "tendermint-light-client-verifier 0.29.1", - "tendermint-proto 0.29.1", + "tendermint", + "tendermint-light-client-verifier", + "tendermint-proto", ] [[package]] @@ -1614,6 +1599,16 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +[[package]] +name = "pbjson" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "048f9ac93c1eab514f9470c4bc8d97ca2a0a236b84f45cc19d69a59fc11467f6" +dependencies = [ + "base64 0.13.1", + "serde", +] + [[package]] name = "pbkdf2" version = "0.8.0" @@ -2665,38 +2660,9 @@ checksum = "8ae9980cab1db3fceee2f6c6f643d5d8de2997c58ee8d25fb0cc8a9e9e7348e5" [[package]] name = "tendermint" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda53c85447577769cdfc94c10a56f34afef2c00e4108badb57fce6b1a0c75eb" -dependencies = [ - "bytes", - "digest 0.10.6", - "ed25519 1.5.3", - "ed25519-consensus", - "flex-error", - "futures", - "num-traits", - "once_cell", - "prost", - "prost-types", - "serde", - "serde_bytes", - "serde_json", - "serde_repr", - "sha2 0.10.6", - "signature 1.6.4", - "subtle", - "subtle-encoding", - "tendermint-proto 0.29.1", - "time", - "zeroize", -] - -[[package]] -name = "tendermint" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b58bdb6c44a2621b8b6bd0585d5912ba32546317604130a42410bcc813ef16" +checksum = "a46ec6b25b028097ab682ffae11d09d64fe1e2535833b902f26a278a0f88a705" dependencies = [ "bytes", "digest 0.10.6", @@ -2716,60 +2682,29 @@ dependencies = [ "signature 2.1.0", "subtle", "subtle-encoding", - "tendermint-proto 0.31.1", + "tendermint-proto", "time", "zeroize", ] [[package]] name = "tendermint-light-client-verifier" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11c3dc3c75f7a5708ac0bf98374b2b1a2cf17b3a45ddfd5faab3c111aff7fc0e" -dependencies = [ - "derive_more", - "flex-error", - "serde", - "tendermint 0.29.1", - "time", -] - -[[package]] -name = "tendermint-light-client-verifier" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2b81d34aad90a344b0faebb733adbfcd0e1625a070ba5ad6d0dda44a558746" +checksum = "c4bc4c47cf36e740645e04128bd14ff5723aef86f5377fbd4d3b0149198dfc7e" dependencies = [ "derive_more", "flex-error", "serde", - "tendermint 0.31.1", + "tendermint", "time", ] [[package]] name = "tendermint-proto" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c943f78c929cdf14553842f705f2c30324bc35b9179caaa5c9b80620f60652e6" -dependencies = [ - "bytes", - "flex-error", - "num-derive", - "num-traits", - "prost", - "prost-types", - "serde", - "serde_bytes", - "subtle-encoding", - "time", -] - -[[package]] -name = "tendermint-proto" -version = "0.31.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f15666993e193fa4d2b2479aa1e4f1bbe41283c820812df8dd618f41ca3f7a" +checksum = "6ce23c8ff0e6634eb4c3c4aeed45076dc97dac91aac5501a905a67fa222e165b" dependencies = [ "bytes", "flex-error", @@ -3202,9 +3137,9 @@ dependencies = [ [[package]] name = "wasmtime" -version = "6.0.1" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e89f9819523447330ffd70367ef4a18d8c832e24e8150fe054d1d912841632" +checksum = "76a222f5fa1e14b2cefc286f1b68494d7a965f4bf57ec04c59bb62673d639af6" dependencies = [ "anyhow", "bincode", @@ -3227,18 +3162,18 @@ dependencies = [ [[package]] name = "wasmtime-asm-macros" -version = "6.0.1" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bd3a5e46c198032da934469f3a6e48649d1f9142438e4fd4617b68a35644b8a" +checksum = "4407a7246e7d2f3d8fb1cf0c72fda8dbafdb6dd34d555ae8bea0e5ae031089cc" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-environ" -version = "6.0.1" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a6db9fc52985ba06ca601f2ff0ff1f526c5d724c7ac267b47326304b0c97883" +checksum = "47b8b50962eae38ee319f7b24900b7cf371f03eebdc17400c1dc8575fc10c9a7" dependencies = [ "anyhow", "cranelift-entity", @@ -3255,9 +3190,9 @@ dependencies = [ [[package]] name = "wasmtime-jit" -version = "6.0.1" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b77e3a52cd84d0f7f18554afa8060cfe564ccac61e3b0802d3fd4084772fa5f6" +checksum = "ffaed4f9a234ba5225d8e64eac7b4a5d13b994aeb37353cde2cbeb3febda9eaa" dependencies = [ "addr2line 0.17.0", "anyhow", @@ -3278,18 +3213,18 @@ dependencies = [ [[package]] name = "wasmtime-jit-debug" -version = "6.0.1" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0245e8a9347017c7185a72e215218a802ff561545c242953c11ba00fccc930f" +checksum = "eed41cbcbf74ce3ff6f1d07d1b707888166dc408d1a880f651268f4f7c9194b2" dependencies = [ "once_cell", ] [[package]] name = "wasmtime-jit-icache-coherence" -version = "6.0.1" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67d412e9340ab1c83867051d8d1d7c90aa8c9afc91da086088068e2734e25064" +checksum = "43a28ae1e648461bfdbb79db3efdaee1bca5b940872e4175390f465593a2e54c" dependencies = [ "cfg-if", "libc", @@ -3298,9 +3233,9 @@ dependencies = [ [[package]] name = "wasmtime-runtime" -version = "6.0.1" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d594e791b5fdd4dbaf8cf7ae62f2e4ff85018ce90f483ca6f42947688e48827d" +checksum = "e704b126e4252788ccfc3526d4d4511d4b23c521bf123e447ac726c14545217b" dependencies = [ "anyhow", "cc", @@ -3322,9 +3257,9 @@ dependencies = [ [[package]] name = "wasmtime-types" -version = "6.0.1" +version = "6.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6688d6f96d4dbc1f89fab626c56c1778936d122b5f4ae7a57c2eb42b8d982e2" +checksum = "83e5572c5727c1ee7e8f28717aaa8400e4d22dcbd714ea5457d85b5005206568" dependencies = [ "cranelift-entity", "serde", diff --git a/ci/no-std-check/Cargo.toml b/ci/no-std-check/Cargo.toml index e381350de..cfda6a703 100644 --- a/ci/no-std-check/Cargo.toml +++ b/ci/no-std-check/Cargo.toml @@ -9,13 +9,13 @@ ibc = { path = "../../crates/ibc", default-features = false, features = [ "serde", "mocks-no-std", ] } -ibc-proto = { version = "0.26.0", default-features = false, features = [ +ibc-proto = { version = "0.31.0", default-features = false, features = [ "parity-scale-codec", "borsh", ] } -tendermint = { version = "0.29.0", default-features = false } -tendermint-proto = { version = "0.29.0", default-features = false } -tendermint-light-client-verifier = { version = "0.29.0", default-features = false, features = ["rust-crypto"] } +tendermint = { version = "0.32.0", default-features = false } +tendermint-proto = { version = "0.32.0", default-features = false } +tendermint-light-client-verifier = { version = "0.32.0", default-features = false, features = ["rust-crypto"] } sp-core = { version = "20.0.0", default-features = false, optional = true } sp-io = { version = "22.0.0", default-features = false, optional = true } From 6d67d0a4b150e1fbbd0785c00287a2b0c6ea072d Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Mon, 5 Jun 2023 06:44:37 -0700 Subject: [PATCH 04/14] Remove irrelevant docstring --- ci/no-std-check/Cargo.lock | 12 ------------ crates/ibc/src/core/ics23_commitment/specs.rs | 3 --- 2 files changed, 15 deletions(-) diff --git a/ci/no-std-check/Cargo.lock b/ci/no-std-check/Cargo.lock index 053fdf7b9..ad4a6640a 100644 --- a/ci/no-std-check/Cargo.lock +++ b/ci/no-std-check/Cargo.lock @@ -1108,10 +1108,8 @@ dependencies = [ "anyhow", "bytes", "hex", - "pbjson", "prost", "ripemd", - "serde", "sha2 0.10.6", "sha3", ] @@ -1599,16 +1597,6 @@ version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" -[[package]] -name = "pbjson" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "048f9ac93c1eab514f9470c4bc8d97ca2a0a236b84f45cc19d69a59fc11467f6" -dependencies = [ - "base64 0.13.1", - "serde", -] - [[package]] name = "pbkdf2" version = "0.8.0" diff --git a/crates/ibc/src/core/ics23_commitment/specs.rs b/crates/ibc/src/core/ics23_commitment/specs.rs index c10495e90..ff17783ef 100644 --- a/crates/ibc/src/core/ics23_commitment/specs.rs +++ b/crates/ibc/src/core/ics23_commitment/specs.rs @@ -8,9 +8,6 @@ use ibc_proto::ics23::{ /// /// This type encapsulates different types of proof specifications, mostly predefined, e.g., for /// Cosmos-SDK. -/// Additionally, this type also aids in the conversion from `ProofSpec` types from crate `ics23` -/// into proof specifications as represented in the `ibc_proto` type; see the -/// `From` trait(s) below. #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[derive(Clone, Debug, PartialEq)] pub struct ProofSpecs(Vec); From f97c422cc464a3e055e72609b313898c743faeb6 Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Mon, 5 Jun 2023 09:31:49 -0700 Subject: [PATCH 05/14] Discard serde & mocks-no-std features from no-std-check --- ci/no-std-check/Cargo.lock | 14 -------------- ci/no-std-check/Cargo.toml | 5 +---- crates/ibc/Cargo.toml | 6 ++---- crates/ibc/src/mock/header.rs | 20 +++++++++----------- 4 files changed, 12 insertions(+), 33 deletions(-) diff --git a/ci/no-std-check/Cargo.lock b/ci/no-std-check/Cargo.lock index ad4a6640a..c6dac5977 100644 --- a/ci/no-std-check/Cargo.lock +++ b/ci/no-std-check/Cargo.lock @@ -708,15 +708,6 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" -[[package]] -name = "erased-serde" -version = "0.3.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f2b0c2380453a92ea8b6c8e5f64ecaafccddde8ceab55ff7a8ac1029f894569" -dependencies = [ - "serde", -] - [[package]] name = "errno" version = "0.3.1" @@ -1056,20 +1047,15 @@ name = "ibc" version = "0.41.0" dependencies = [ "bytes", - "cfg-if", "derive_more", "displaydoc", "dyn-clone", - "erased-serde", "ibc-proto", "ics23", "num-traits", "primitive-types", "prost", "safe-regex", - "serde", - "serde_derive", - "serde_json", "sha2 0.10.6", "subtle-encoding", "tendermint", diff --git a/ci/no-std-check/Cargo.toml b/ci/no-std-check/Cargo.toml index cfda6a703..ab4fd838e 100644 --- a/ci/no-std-check/Cargo.toml +++ b/ci/no-std-check/Cargo.toml @@ -5,10 +5,7 @@ edition = "2021" resolver = "2" [dependencies] -ibc = { path = "../../crates/ibc", default-features = false, features = [ - "serde", - "mocks-no-std", -] } +ibc = { path = "../../crates/ibc", default-features = false } ibc-proto = { version = "0.31.0", default-features = false, features = [ "parity-scale-codec", "borsh", diff --git a/crates/ibc/Cargo.toml b/crates/ibc/Cargo.toml index 535cb1c24..e4d47d4b4 100644 --- a/crates/ibc/Cargo.toml +++ b/crates/ibc/Cargo.toml @@ -40,12 +40,11 @@ parity-scale-codec = ["dep:parity-scale-codec", "dep:scale-info"] borsh = ["dep:borsh"] # This feature is required for token transfer (ICS-20) -serde = ["dep:serde", "dep:serde_derive", "serde_json", "erased-serde"] +serde = ["dep:serde", "dep:serde_derive", "serde_json", "erased-serde", "ics23/serde"] # This feature grants access to development-time mocking libraries, such as `MockContext` or `MockHeader`. # Depends on the `testgen` suite for generating Tendermint light blocks. -mocks = ["tendermint-testgen", "tendermint/clock", "cfg-if", "parking_lot"] -mocks-no-std = ["cfg-if"] +mocks = ["tendermint-testgen", "tendermint/clock", "parking_lot"] [dependencies] # Proto definitions for all IBC-related interfaces, e.g., connections or channels. @@ -102,4 +101,3 @@ test-log = { version = "0.2.10", features = ["trace"] } tendermint-rpc = { version = "0.32", features = ["http-client", "websocket-client"] } tendermint-testgen = { version = "0.32" } # Needed for generating (synthetic) light blocks. parking_lot = { version = "0.12.1" } -cfg-if = { version = "1.0.0" } diff --git a/crates/ibc/src/mock/header.rs b/crates/ibc/src/mock/header.rs index aadfdf419..9bda4bec7 100644 --- a/crates/ibc/src/mock/header.rs +++ b/crates/ibc/src/mock/header.rs @@ -71,17 +71,15 @@ impl MockHeader { } pub fn new(height: Height) -> Self { - cfg_if::cfg_if! { - if #[cfg(any(test, feature = "std"))] { - Self { - height, - timestamp: Timestamp::now(), - } - } else { - Self { - height, - timestamp: Timestamp::none(), - } + if cfg!(any(test, feature = "std")) { + Self { + height, + timestamp: Timestamp::now(), + } + } else { + Self { + height, + timestamp: Timestamp::none(), } } } From 84a60e365b63c6a9d2dfde7492736ecbdc1c2d39 Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Mon, 12 Jun 2023 07:14:30 -0700 Subject: [PATCH 06/14] Add unclog --- ...et-prehash_key_before_comparison-available-for-ProofSpec.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/unreleased/features/640-get-prehash_key_before_comparison-available-for-ProofSpec.md diff --git a/.changelog/unreleased/features/640-get-prehash_key_before_comparison-available-for-ProofSpec.md b/.changelog/unreleased/features/640-get-prehash_key_before_comparison-available-for-ProofSpec.md new file mode 100644 index 000000000..3ff07bc28 --- /dev/null +++ b/.changelog/unreleased/features/640-get-prehash_key_before_comparison-available-for-ProofSpec.md @@ -0,0 +1,3 @@ +- Upgrade to tendermint v0.32, ibc-proto-rs v0.31, ics23 v0.10, and get + prehash_key_before_comparison field available for the `ProofSpec` + ([#640](https://github.com/cosmos/ibc-rs/issues/640)) From 4ea1cccbe77b040b1be1f1bf7e7f51cc24f7210c Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Mon, 12 Jun 2023 11:00:17 -0700 Subject: [PATCH 07/14] fix: remove ibc-proto features --- ci/no-std-check/Cargo.lock | 1 + crates/ibc/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/no-std-check/Cargo.lock b/ci/no-std-check/Cargo.lock index 6dfebc23e..4797b677a 100644 --- a/ci/no-std-check/Cargo.lock +++ b/ci/no-std-check/Cargo.lock @@ -1044,6 +1044,7 @@ dependencies = [ "ics23", "parity-scale-codec", "prost", + "scale-info", "serde", "subtle-encoding", "tendermint-proto", diff --git a/crates/ibc/Cargo.toml b/crates/ibc/Cargo.toml index 2010687e2..652b611dc 100644 --- a/crates/ibc/Cargo.toml +++ b/crates/ibc/Cargo.toml @@ -48,7 +48,7 @@ mocks = ["tendermint-testgen", "tendermint/clock", "parking_lot"] [dependencies] # Proto definitions for all IBC-related interfaces, e.g., connections or channels. -ibc-proto = { version = "0.31.0", default-features = false, features = ["parity-scale-codec", "borsh"] } +ibc-proto = { version = "0.31.0", default-features = false } ics23 = { version = "0.10.1", default-features = false, features = ["host-functions"] } time = { version = ">=0.3.0, <0.3.22", default-features = false } serde_derive = { version = "1.0.104", default-features = false, optional = true } From e9a9b2d0146a373e80f7d545ab0d09a7e876e7d5 Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Tue, 13 Jun 2023 09:41:43 -0700 Subject: [PATCH 08/14] imp: change ICS* aliases to Raw* for imported specs types --- crates/ibc/src/core/ics23_commitment/specs.rs | 46 +++++++++---------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/crates/ibc/src/core/ics23_commitment/specs.rs b/crates/ibc/src/core/ics23_commitment/specs.rs index ff17783ef..902a97315 100644 --- a/crates/ibc/src/core/ics23_commitment/specs.rs +++ b/crates/ibc/src/core/ics23_commitment/specs.rs @@ -1,9 +1,7 @@ //! Defines proof specs, which encode the structure of proofs use crate::prelude::*; -use ibc_proto::ics23::{ - InnerSpec as Ics23InnerSpec, LeafOp as Ics23LeafOp, ProofSpec as Ics23ProofSpec, -}; +use ibc_proto::ics23::{InnerSpec as RawInnerSpec, LeafOp as RawLeafOp, ProofSpec as RawProofSpec}; /// An array of proof specifications. /// /// This type encapsulates different types of proof specifications, mostly predefined, e.g., for @@ -33,8 +31,8 @@ impl Default for ProofSpecs { } } -impl From> for ProofSpecs { - fn from(ics23_specs: Vec) -> Self { +impl From> for ProofSpecs { + fn from(ics23_specs: Vec) -> Self { Self( ics23_specs .into_iter() @@ -44,7 +42,7 @@ impl From> for ProofSpecs { } } -impl From for Vec { +impl From for Vec { fn from(specs: ProofSpecs) -> Self { specs.0.into_iter().map(|spec| spec.into()).collect() } @@ -52,11 +50,11 @@ impl From for Vec { #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[derive(Clone, Debug, PartialEq)] -struct ProofSpec(Ics23ProofSpec); +struct ProofSpec(RawProofSpec); -impl From for ProofSpec { - fn from(spec: Ics23ProofSpec) -> Self { - Self(Ics23ProofSpec { +impl From for ProofSpec { + fn from(spec: RawProofSpec) -> Self { + Self(RawProofSpec { leaf_spec: spec.leaf_spec.map(|lop| LeafOp::from(lop).0), inner_spec: spec.inner_spec.map(|ispec| InnerSpec::from(ispec).0), max_depth: spec.max_depth, @@ -66,10 +64,10 @@ impl From for ProofSpec { } } -impl From for Ics23ProofSpec { +impl From for RawProofSpec { fn from(spec: ProofSpec) -> Self { let spec = spec.0; - Ics23ProofSpec { + RawProofSpec { leaf_spec: spec.leaf_spec.map(|lop| LeafOp(lop).into()), inner_spec: spec.inner_spec.map(|ispec| InnerSpec(ispec).into()), max_depth: spec.max_depth, @@ -81,11 +79,11 @@ impl From for Ics23ProofSpec { #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[derive(Clone, Debug, PartialEq)] -struct LeafOp(Ics23LeafOp); +struct LeafOp(RawLeafOp); -impl From for LeafOp { - fn from(leaf_op: Ics23LeafOp) -> Self { - Self(Ics23LeafOp { +impl From for LeafOp { + fn from(leaf_op: RawLeafOp) -> Self { + Self(RawLeafOp { hash: leaf_op.hash, prehash_key: leaf_op.prehash_key, prehash_value: leaf_op.prehash_value, @@ -95,10 +93,10 @@ impl From for LeafOp { } } -impl From for Ics23LeafOp { +impl From for RawLeafOp { fn from(leaf_op: LeafOp) -> Self { let leaf_op = leaf_op.0; - Ics23LeafOp { + RawLeafOp { hash: leaf_op.hash, prehash_key: leaf_op.prehash_key, prehash_value: leaf_op.prehash_value, @@ -110,11 +108,11 @@ impl From for Ics23LeafOp { #[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] #[derive(Clone, Debug, PartialEq)] -struct InnerSpec(Ics23InnerSpec); +struct InnerSpec(RawInnerSpec); -impl From for InnerSpec { - fn from(inner_spec: Ics23InnerSpec) -> Self { - Self(Ics23InnerSpec { +impl From for InnerSpec { + fn from(inner_spec: RawInnerSpec) -> Self { + Self(RawInnerSpec { child_order: inner_spec.child_order, child_size: inner_spec.child_size, min_prefix_length: inner_spec.min_prefix_length, @@ -125,10 +123,10 @@ impl From for InnerSpec { } } -impl From for Ics23InnerSpec { +impl From for RawInnerSpec { fn from(inner_spec: InnerSpec) -> Self { let inner_spec = inner_spec.0; - Ics23InnerSpec { + RawInnerSpec { child_order: inner_spec.child_order, child_size: inner_spec.child_size, min_prefix_length: inner_spec.min_prefix_length, From 4b540bc3173dd4d1cf33237274da7dc1dd7cd7fe Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Tue, 13 Jun 2023 09:45:49 -0700 Subject: [PATCH 09/14] fix: remove cfg-if dependency from cargo.toml --- crates/ibc/Cargo.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/ibc/Cargo.toml b/crates/ibc/Cargo.toml index 555a58dd5..63d0c4a18 100644 --- a/crates/ibc/Cargo.toml +++ b/crates/ibc/Cargo.toml @@ -73,7 +73,6 @@ scale-info = { version = "2.1.2", default-features = false, features = ["derive" ## for borsh encode or decode borsh = {version = "0.10.0", default-features = false, optional = true } parking_lot = { version = "0.12.1", default-features = false, optional = true } -cfg-if = { version = "1.0.0", optional = true } [dependencies.tendermint] version = "0.32" From d25ec5d8d903b21a0b7e19513caef3c59e93adf8 Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Wed, 14 Jun 2023 05:54:15 -0700 Subject: [PATCH 10/14] dep: bump ibc-proto-rs to 0.32.0 --- crates/ibc/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ibc/Cargo.toml b/crates/ibc/Cargo.toml index 63d0c4a18..38de3fd5b 100644 --- a/crates/ibc/Cargo.toml +++ b/crates/ibc/Cargo.toml @@ -48,7 +48,7 @@ mocks = ["tendermint-testgen", "tendermint/clock", "parking_lot"] [dependencies] # Proto definitions for all IBC-related interfaces, e.g., connections or channels. -ibc-proto = { version = "0.31.0", default-features = false } +ibc-proto = { version = "0.32.0", default-features = false } ics23 = { version = "0.10.1", default-features = false, features = ["host-functions"] } time = { version = ">=0.3.0, <0.3.23", default-features = false } serde_derive = { version = "1.0.104", default-features = false, optional = true } From 276ea9e8d0a3e929e1b450d26ea38a6d747462fb Mon Sep 17 00:00:00 2001 From: Farhad Shabani Date: Wed, 14 Jun 2023 05:57:47 -0700 Subject: [PATCH 11/14] fix: revert ibc-proto-rs upgrade --- crates/ibc/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/ibc/Cargo.toml b/crates/ibc/Cargo.toml index 38de3fd5b..63d0c4a18 100644 --- a/crates/ibc/Cargo.toml +++ b/crates/ibc/Cargo.toml @@ -48,7 +48,7 @@ mocks = ["tendermint-testgen", "tendermint/clock", "parking_lot"] [dependencies] # Proto definitions for all IBC-related interfaces, e.g., connections or channels. -ibc-proto = { version = "0.32.0", default-features = false } +ibc-proto = { version = "0.31.0", default-features = false } ics23 = { version = "0.10.1", default-features = false, features = ["host-functions"] } time = { version = ">=0.3.0, <0.3.23", default-features = false } serde_derive = { version = "1.0.104", default-features = false, optional = true } From d92b38902a5107b4a12078c29fb5d82bc8173796 Mon Sep 17 00:00:00 2001 From: Philippe Laferriere Date: Wed, 14 Jun 2023 10:15:10 -0400 Subject: [PATCH 12/14] update ibc-proto-rs to v0.32 --- ...prehash_key_before_comparison-available-for-ProofSpec.md | 2 +- crates/ibc/Cargo.toml | 4 ++-- crates/ibc/src/core/ics03_connection/connection.rs | 6 ++---- crates/ibc/src/core/timestamp.rs | 6 ++---- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/.changelog/unreleased/features/640-get-prehash_key_before_comparison-available-for-ProofSpec.md b/.changelog/unreleased/features/640-get-prehash_key_before_comparison-available-for-ProofSpec.md index 3ff07bc28..b3d780916 100644 --- a/.changelog/unreleased/features/640-get-prehash_key_before_comparison-available-for-ProofSpec.md +++ b/.changelog/unreleased/features/640-get-prehash_key_before_comparison-available-for-ProofSpec.md @@ -1,3 +1,3 @@ -- Upgrade to tendermint v0.32, ibc-proto-rs v0.31, ics23 v0.10, and get +- Upgrade to tendermint v0.32, ibc-proto-rs v0.32, ics23 v0.10, and get prehash_key_before_comparison field available for the `ProofSpec` ([#640](https://github.com/cosmos/ibc-rs/issues/640)) diff --git a/crates/ibc/Cargo.toml b/crates/ibc/Cargo.toml index 63d0c4a18..941206df1 100644 --- a/crates/ibc/Cargo.toml +++ b/crates/ibc/Cargo.toml @@ -48,7 +48,7 @@ mocks = ["tendermint-testgen", "tendermint/clock", "parking_lot"] [dependencies] # Proto definitions for all IBC-related interfaces, e.g., connections or channels. -ibc-proto = { version = "0.31.0", default-features = false } +ibc-proto = { version = "0.32.0", default-features = false } ics23 = { version = "0.10.1", default-features = false, features = ["host-functions"] } time = { version = ">=0.3.0, <0.3.23", default-features = false } serde_derive = { version = "1.0.104", default-features = false, optional = true } @@ -71,7 +71,7 @@ dyn-clone = "1.0.8" parity-scale-codec = { version = "3.0.0", default-features = false, features = ["full"], optional = true } scale-info = { version = "2.1.2", default-features = false, features = ["derive"], optional = true } ## for borsh encode or decode -borsh = {version = "0.10.0", default-features = false, optional = true } +borsh = {version = "0.9.0", default-features = false, optional = true } parking_lot = { version = "0.12.1", default-features = false, optional = true } [dependencies.tendermint] diff --git a/crates/ibc/src/core/ics03_connection/connection.rs b/crates/ibc/src/core/ics03_connection/connection.rs index 6ab1513ec..e70ae400c 100644 --- a/crates/ibc/src/core/ics03_connection/connection.rs +++ b/crates/ibc/src/core/ics03_connection/connection.rs @@ -167,10 +167,8 @@ mod sealed { #[cfg(feature = "borsh")] impl borsh::BorshDeserialize for ConnectionEnd { - fn deserialize_reader( - reader: &mut R, - ) -> borsh::maybestd::io::Result { - let inner_conn_end = InnerConnectionEnd::deserialize_reader(reader)?; + fn deserialize(reader: &mut &[u8]) -> borsh::maybestd::io::Result { + let inner_conn_end = InnerConnectionEnd::deserialize(reader)?; Ok(ConnectionEnd::from(inner_conn_end)) } } diff --git a/crates/ibc/src/core/timestamp.rs b/crates/ibc/src/core/timestamp.rs index 89562e825..fc0438572 100644 --- a/crates/ibc/src/core/timestamp.rs +++ b/crates/ibc/src/core/timestamp.rs @@ -41,10 +41,8 @@ impl borsh::BorshSerialize for Timestamp { #[cfg(feature = "borsh")] impl borsh::BorshDeserialize for Timestamp { - fn deserialize_reader( - reader: &mut R, - ) -> borsh::maybestd::io::Result { - let timestamp = u64::deserialize_reader(reader)?; + fn deserialize(reader: &mut &[u8]) -> borsh::maybestd::io::Result { + let timestamp = u64::deserialize(reader)?; Ok(Timestamp::from_nanoseconds(timestamp) .map_err(|_| borsh::maybestd::io::ErrorKind::Other)?) } From 2f4c108957d01c4f988fc92d973393024d0842b6 Mon Sep 17 00:00:00 2001 From: Philippe Laferriere Date: Wed, 14 Jun 2023 10:27:36 -0400 Subject: [PATCH 13/14] document serde feature not working in no_std --- crates/ibc/src/lib.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crates/ibc/src/lib.rs b/crates/ibc/src/lib.rs index 93312577f..ab761c374 100644 --- a/crates/ibc/src/lib.rs +++ b/crates/ibc/src/lib.rs @@ -33,6 +33,12 @@ //! (e.g. [`ExecutionContext`](core::ExecutionContext)) while processing `M`. If a transaction on your //! blockchain contains multiple messages, then typically the state modifications from all messages //! is expected to be rolled back as well. +//! +//! # Note +//! +//! Currently, the `serde` feature (required by the token transfer app) does not work in `no_std` environments. +//! See context [here](https://github.com/cosmos/ibc-proto-rs/pull/92). If this is a blocker for you, please +//! open a Github issue. //! //! [ibc-standard]: https://github.com/cosmos/ibc From cd887bf0aac79d6fa69232e52f7fadf37349c133 Mon Sep 17 00:00:00 2001 From: Philippe Laferriere Date: Wed, 14 Jun 2023 10:28:40 -0400 Subject: [PATCH 14/14] fmt --- crates/ibc/src/lib.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/ibc/src/lib.rs b/crates/ibc/src/lib.rs index ab761c374..a0e81c50a 100644 --- a/crates/ibc/src/lib.rs +++ b/crates/ibc/src/lib.rs @@ -33,10 +33,10 @@ //! (e.g. [`ExecutionContext`](core::ExecutionContext)) while processing `M`. If a transaction on your //! blockchain contains multiple messages, then typically the state modifications from all messages //! is expected to be rolled back as well. -//! +//! //! # Note -//! -//! Currently, the `serde` feature (required by the token transfer app) does not work in `no_std` environments. +//! +//! Currently, the `serde` feature (required by the token transfer app) does not work in `no_std` environments. //! See context [here](https://github.com/cosmos/ibc-proto-rs/pull/92). If this is a blocker for you, please //! open a Github issue. //!