From aa5bc01605e534acf5becdad487dbdb3e4156700 Mon Sep 17 00:00:00 2001 From: Ranadeep Biswas Date: Tue, 4 Feb 2025 15:52:58 +0100 Subject: [PATCH] test consistent packet commitment in cairo and rust --- .../src/tests/mod.rs | 1 + .../src/tests/packet_commitment.rs | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 relayer/crates/starknet-integration-tests/src/tests/packet_commitment.rs diff --git a/relayer/crates/starknet-integration-tests/src/tests/mod.rs b/relayer/crates/starknet-integration-tests/src/tests/mod.rs index ae131565..d0a7f839 100644 --- a/relayer/crates/starknet-integration-tests/src/tests/mod.rs +++ b/relayer/crates/starknet-integration-tests/src/tests/mod.rs @@ -1,4 +1,5 @@ pub mod erc20; pub mod ics20; pub mod light_client; +pub mod packet_commitment; pub mod update_clients; diff --git a/relayer/crates/starknet-integration-tests/src/tests/packet_commitment.rs b/relayer/crates/starknet-integration-tests/src/tests/packet_commitment.rs new file mode 100644 index 00000000..335d540f --- /dev/null +++ b/relayer/crates/starknet-integration-tests/src/tests/packet_commitment.rs @@ -0,0 +1,38 @@ +use ibc::core::channel::types::commitment::compute_packet_commitment; +use ibc::core::channel::types::timeout::{TimeoutHeight, TimeoutTimestamp}; +use ibc::core::client::types::Height; +use ibc::primitives::Timestamp; + +#[test] +fn test_cairo_packet_commitment() { + // https://github.com/informalsystems/ibc-starknet/blob/7967c8045ed6b4453030e01d0df12c47c2d77b37/cairo-contracts/packages/apps/src/transfer/types.cairo#L307 + // https://github.com/informalsystems/ibc-starknet/blob/7967c8045ed6b4453030e01d0df12c47c2d77b37/cairo-contracts/packages/core/src/tests/commitment.cairo#L52-L58 + + let timeout_height = TimeoutHeight::At(Height::new(0, 1000).expect("valid height")); + let timeout_timestamp = TimeoutTimestamp::At(Timestamp::from_nanoseconds(1000 * 1_000_000_000)); + + let packet_json_data: &str = + "{\"denom\":\"2087021424722619777119509474943472645767659996348769578120564519014510906823\",\"amount\":\"100\",\"sender\":\"1431520594\",\"receiver\":\"cosmos1wxeyh7zgn4tctjzs0vtqpc6p5cxq5t2muzl7ng\",\"memo\":\"\"}"; + + let expected: Vec = [ + 3458244073, 1576048754, 4210798310, 1002247062, 2365181318, 2763927782, 545147151, + 944653547, + ] + .to_vec(); + + let actual = compute_packet_commitment( + packet_json_data.as_ref(), + &timeout_height, + &timeout_timestamp, + ) + .into_vec() + .chunks(4) + .map(|chunk| { + let mut bytes = [0u8; 4]; + bytes.copy_from_slice(&chunk); + u32::from_be_bytes(bytes) + }) + .collect::>(); + + assert_eq!(expected, actual); +}