From fa84fc0f5ea5b19cdb9d7fff24754854e49eaf87 Mon Sep 17 00:00:00 2001 From: Guy Garcia Date: Wed, 16 Oct 2024 19:23:04 -0400 Subject: [PATCH 1/3] Full project integration --- Cargo.lock | 1630 +++++++++++------ Cargo.toml | 2 +- artifacts/checksums.txt | 2 + artifacts/checksums_intermediate.txt | 2 + artifacts/demo_contract.wasm | Bin 0 -> 228464 bytes artifacts/ica_demo.wasm | Bin 0 -> 197318 bytes contracts/demo_contract/.cargo/config | 5 + contracts/demo_contract/Cargo.toml | 51 + contracts/demo_contract/src/bin/schema.rs | 1 + contracts/demo_contract/src/contract.rs | 50 + contracts/demo_contract/src/error.rs | 10 + contracts/demo_contract/src/lib.rs | 3 + contracts/demo_contract/src/msg.rs | 17 + contracts/ica-demo/.cargo/config | 5 + .../ica-demo/.github/workflows/Basic.yml | 83 + contracts/ica-demo/Cargo.toml | 56 + contracts/ica-demo/schema/ica-demo.json | 107 ++ contracts/ica-demo/schema/raw/execute.json | 60 + .../ica-demo/schema/raw/instantiate.json | 6 + contracts/ica-demo/schema/raw/query.json | 27 + .../schema/raw/response_to_ica_account.json | 5 + contracts/ica-demo/src/bin/schema.rs | 11 + contracts/ica-demo/src/contract.rs | 71 + contracts/ica-demo/src/error.rs | 19 + contracts/ica-demo/src/lib.rs | 7 + contracts/ica-demo/src/msg.rs | 72 + contracts/ica-demo/src/state.rs | 4 + contracts/ica-demo/src/sudo.rs | 108 ++ packages/ibc-testing/Cargo.toml | 14 + packages/ibc-testing/Dockerfile | 42 + packages/ibc-testing/README.md | 5 + packages/ibc-testing/scripts/gm.toml | 34 + packages/ibc-testing/scripts/init_network.sh | 27 + .../ibc-testing/scripts/relayer_config.toml | 185 ++ packages/ibc-testing/src/chain/client.rs | 67 + packages/ibc-testing/src/chain/info.rs | 16 + packages/ibc-testing/src/chain/mod.rs | 5 + packages/ibc-testing/src/ibc_runtime.rs | 170 ++ packages/ibc-testing/src/lib.rs | 186 ++ 39 files changed, 2577 insertions(+), 588 deletions(-) create mode 100644 artifacts/checksums.txt create mode 100644 artifacts/checksums_intermediate.txt create mode 100644 artifacts/demo_contract.wasm create mode 100644 artifacts/ica_demo.wasm create mode 100644 contracts/demo_contract/.cargo/config create mode 100644 contracts/demo_contract/Cargo.toml create mode 100644 contracts/demo_contract/src/bin/schema.rs create mode 100644 contracts/demo_contract/src/contract.rs create mode 100644 contracts/demo_contract/src/error.rs create mode 100644 contracts/demo_contract/src/lib.rs create mode 100644 contracts/demo_contract/src/msg.rs create mode 100644 contracts/ica-demo/.cargo/config create mode 100644 contracts/ica-demo/.github/workflows/Basic.yml create mode 100644 contracts/ica-demo/Cargo.toml create mode 100644 contracts/ica-demo/schema/ica-demo.json create mode 100644 contracts/ica-demo/schema/raw/execute.json create mode 100644 contracts/ica-demo/schema/raw/instantiate.json create mode 100644 contracts/ica-demo/schema/raw/query.json create mode 100644 contracts/ica-demo/schema/raw/response_to_ica_account.json create mode 100644 contracts/ica-demo/src/bin/schema.rs create mode 100644 contracts/ica-demo/src/contract.rs create mode 100644 contracts/ica-demo/src/error.rs create mode 100644 contracts/ica-demo/src/lib.rs create mode 100644 contracts/ica-demo/src/msg.rs create mode 100644 contracts/ica-demo/src/state.rs create mode 100644 contracts/ica-demo/src/sudo.rs create mode 100644 packages/ibc-testing/Cargo.toml create mode 100644 packages/ibc-testing/Dockerfile create mode 100644 packages/ibc-testing/README.md create mode 100644 packages/ibc-testing/scripts/gm.toml create mode 100644 packages/ibc-testing/scripts/init_network.sh create mode 100644 packages/ibc-testing/scripts/relayer_config.toml create mode 100644 packages/ibc-testing/src/chain/client.rs create mode 100644 packages/ibc-testing/src/chain/info.rs create mode 100644 packages/ibc-testing/src/chain/mod.rs create mode 100644 packages/ibc-testing/src/ibc_runtime.rs create mode 100644 packages/ibc-testing/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 0486957..bf71dad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" @@ -52,11 +52,73 @@ dependencies = [ "libc", ] +[[package]] +name = "anstream" +version = "0.6.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" + +[[package]] +name = "anstyle-parse" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" + +[[package]] +name = "archway-bindings" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6cd100a318332b448d19f0c87306f2170d98221c6fce2e92288351bc26bf24" +dependencies = [ + "cosmwasm-schema 1.5.8", + "cosmwasm-std", + "schemars", + "serde", + "thiserror", +] [[package]] name = "archway-proto" @@ -72,14 +134,37 @@ dependencies = [ "tonic 0.11.0", ] +[[package]] +name = "archway-proto" +version = "0.3.0" +source = "git+https://github.com/archway-network/arch3.rs.git?branch=fix/abstract-any-proto-encoding-fix#50952ecf06dc927344ca8354400bd910c15b67d2" +dependencies = [ + "pbjson", + "pbjson-types", + "prost", + "prost-types", + "serde", + "tendermint-proto 0.36.0", + "tonic 0.11.0", +] + +[[package]] +name = "archway-rpc" +version = "0.1.0" +source = "git+ssh://git@github.com/archway-network/archway-rs-rpc.git?rev=ade729d3#ade729d38146b63e01d42276b0f35dea34f6c386" +dependencies = [ + "cosmos-rpc", + "tokio", +] + [[package]] name = "archway_test_tube" version = "0.1.0" dependencies = [ - "archway-proto", - "base64", + "archway-proto 0.2.0", + "base64 0.21.7", "bindgen", - "cosmwasm-schema 2.0.4", + "cosmwasm-schema 2.1.4", "cosmwasm-std", "cw1-whitelist", "pbjson-types", @@ -92,9 +177,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -103,31 +188,31 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" @@ -140,9 +225,9 @@ dependencies = [ "bitflags 1.3.2", "bytes", "futures-util", - "http", - "http-body", - "hyper", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.31", "itoa", "matchit", "memchr", @@ -166,8 +251,8 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http", - "http-body", + "http 0.2.12", + "http-body 0.4.6", "mime", "rustversion", "tower-layer", @@ -176,17 +261,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -201,6 +286,12 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" version = "1.6.0" @@ -215,11 +306,11 @@ checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" [[package]] name = "bindgen" -version = "0.69.4" +version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cexpr", "clang-sys", "itertools 0.12.1", @@ -232,19 +323,21 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.66", + "syn 2.0.79", "which", ] [[package]] name = "bip32" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e141fb0f8be1c7b45887af94c88b182472b57c96b56773250ae00cd6a14a164" +checksum = "aa13fae8b6255872fd86f7faf4b41168661d7d78609f7bfe6771b85c6739a15b" dependencies = [ "bs58", "hmac", "k256", + "once_cell", + "pbkdf2", "rand_core 0.6.4", "ripemd", "sha2 0.10.8", @@ -260,9 +353,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block-buffer" @@ -288,6 +381,50 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56953345e39537a3e18bdaeba4cb0c58a78c1f61f361dc0fa7c5c7340ae87c5f" +[[package]] +name = "bollard" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d41711ad46fda47cd701f6908e59d1bd6b9a2b7464c0d0aeab95c6d37096ff8a" +dependencies = [ + "base64 0.22.1", + "bollard-stubs", + "bytes", + "futures-core", + "futures-util", + "hex", + "http 1.1.0", + "http-body-util", + "hyper 1.5.0", + "hyper-named-pipe", + "hyper-util", + "hyperlocal", + "log", + "pin-project-lite", + "serde", + "serde_derive", + "serde_json", + "serde_repr", + "serde_urlencoded", + "thiserror", + "tokio", + "tokio-util", + "tower-service", + "url", + "winapi", +] + +[[package]] +name = "bollard-stubs" +version = "1.45.0-rc.26.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7c5415e3a6bc6d3e99eff6268e488fd4ee25e7b28c10f08fa6760bd9de16e4" +dependencies = [ + "serde", + "serde_repr", + "serde_with", +] + [[package]] name = "bs58" version = "0.5.1" @@ -305,9 +442,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.16.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" [[package]] name = "byteorder" @@ -317,18 +454,21 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" dependencies = [ "serde", ] [[package]] name = "cc" -version = "1.0.99" +version = "1.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" +dependencies = [ + "shlex", +] [[package]] name = "cexpr" @@ -355,8 +495,9 @@ dependencies = [ "iana-time-zone", "js-sys", "num-traits", + "serde", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -370,12 +511,58 @@ dependencies = [ "libloading", ] +[[package]] +name = "clap" +version = "4.5.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "clap_lex" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" + [[package]] name = "color_quant" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +[[package]] +name = "colorchoice" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" + [[package]] name = "console" version = "0.15.8" @@ -407,9 +594,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" @@ -447,6 +634,27 @@ dependencies = [ "libc", ] +[[package]] +name = "cosmos-rpc" +version = "0.1.0" +source = "git+ssh://git@github.com/archway-network/archway-rs-rpc.git?rev=ade729d3#ade729d38146b63e01d42276b0f35dea34f6c386" +dependencies = [ + "archway-proto 0.3.0", + "async-trait", + "bip32", + "clap", + "cosmrs 0.16.0", + "k256", + "pbjson-types", + "prost", + "prost-types", + "serde", + "serde_json", + "tendermint-rpc 0.35.0", + "thiserror", + "tokio", +] + [[package]] name = "cosmos-sdk-proto" version = "0.20.0" @@ -458,6 +666,17 @@ dependencies = [ "tendermint-proto 0.34.1", ] +[[package]] +name = "cosmos-sdk-proto" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82e23f6ab56d5f031cde05b8b82a5fefd3a1a223595c79e32317a97189e612bc" +dependencies = [ + "prost", + "prost-types", + "tendermint-proto 0.35.0", +] + [[package]] name = "cosmrs" version = "0.15.0" @@ -465,7 +684,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47126f5364df9387b9d8559dcef62e99010e1d4098f39eb3f7ee4b5c254e40ea" dependencies = [ "bip32", - "cosmos-sdk-proto", + "cosmos-sdk-proto 0.20.0", "ecdsa", "eyre", "k256", @@ -474,19 +693,40 @@ dependencies = [ "serde_json", "signature", "subtle-encoding", - "tendermint", - "tendermint-rpc", + "tendermint 0.34.1", + "tendermint-rpc 0.34.1", "thiserror", ] +[[package]] +name = "cosmrs" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d184abb7b0039cc64f282dfa5b34165e4c5a7410ab46804636d53f4d09aee44" +dependencies = [ + "bip32", + "cosmos-sdk-proto 0.21.1", + "ecdsa", + "eyre", + "k256", + "rand_core 0.6.4", + "serde", + "serde_json", + "signature", + "subtle-encoding", + "tendermint 0.35.0", + "tendermint-rpc 0.35.0", + "thiserror", + "tokio", +] + [[package]] name = "cosmwasm-crypto" -version = "1.5.5" +version = "1.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd50718a2b6830ce9eb5d465de5a018a12e71729d66b70807ce97e6dd14f931d" +checksum = "58535cbcd599b3c193e3967c8292fe1dbbb5de7c2a2d87380661091dd4744044" dependencies = [ "digest 0.10.7", - "ecdsa", "ed25519-zebra", "k256", "rand_core 0.6.4", @@ -495,20 +735,20 @@ dependencies = [ [[package]] name = "cosmwasm-derive" -version = "1.5.5" +version = "1.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "242e98e7a231c122e08f300d9db3262d1007b51758a8732cd6210b3e9faa4f3a" +checksum = "a8e07de16c800ac82fd188d055ecdb923ead0cf33960d3350089260bb982c09f" dependencies = [ "syn 1.0.109", ] [[package]] name = "cosmwasm-schema" -version = "1.5.5" +version = "1.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7879036156092ad1c22fe0d7316efc5a5eceec2bc3906462a2560215f2a2f929" +checksum = "93d388adfa9cb449557a92e9318121ac1a481fc4f599213b03a5b62699b403b4" dependencies = [ - "cosmwasm-schema-derive 1.5.5", + "cosmwasm-schema-derive 1.5.8", "schemars", "serde", "serde_json", @@ -517,11 +757,11 @@ dependencies = [ [[package]] name = "cosmwasm-schema" -version = "2.0.4" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "101d0739564bd34cba9b84bf73665f0822487ae3b29b2dd59930608ed3aafd43" +checksum = "f86b4d949b6041519c58993a73f4bbfba8083ba14f7001eae704865a09065845" dependencies = [ - "cosmwasm-schema-derive 2.0.4", + "cosmwasm-schema-derive 2.1.4", "schemars", "serde", "serde_json", @@ -530,9 +770,9 @@ dependencies = [ [[package]] name = "cosmwasm-schema-derive" -version = "1.5.5" +version = "1.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb57855fbfc83327f8445ae0d413b1a05ac0d68c396ab4d122b2abd7bb82cb6" +checksum = "2411b389e56e6484f81ba955b758d02522d620c98fc960c4bd2251d48b7aa19f" dependencies = [ "proc-macro2", "quote", @@ -541,22 +781,22 @@ dependencies = [ [[package]] name = "cosmwasm-schema-derive" -version = "2.0.4" +version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4be75f60158478da2c5d319ed59295bca1687ad50c18215a0485aa91a995ea" +checksum = "c8ef1b5835a65fcca3ab8b9a02b4f4dacc78e233a5c2f20b270efb9db0666d12" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.79", ] [[package]] name = "cosmwasm-std" -version = "1.5.5" +version = "1.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c1556156fdf892a55cced6115968b961eaaadd6f724a2c2cb7d1e168e32dd3" +checksum = "c21fde95ccd20044a23c0ac6fd8c941f3e8c158169dc94b5aa6491a2d9551a8d" dependencies = [ - "base64", + "base64 0.21.7", "bech32", "bnum", "cosmwasm-crypto", @@ -572,11 +812,21 @@ dependencies = [ "thiserror", ] +[[package]] +name = "cosmwasm-storage" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66de2ab9db04757bcedef2b5984fbe536903ada4a8a9766717a4a71197ef34f6" +dependencies = [ + "cosmwasm-std", + "serde", +] + [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -612,16 +862,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "cstr" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68523903c8ae5aacfa32a0d9ae60cadeb764e1da14ee0d26b1f3089f13a54636" -dependencies = [ - "proc-macro2", - "quote", -] - [[package]] name = "curve25519-dalek" version = "3.2.0" @@ -665,7 +905,7 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c4a657e5caacc3a0d00ee96ca8618745d050b8f757c709babafb81208d4239c" dependencies = [ - "cosmwasm-schema 1.5.5", + "cosmwasm-schema 1.5.8", "cosmwasm-std", "cw2", "schemars", @@ -680,7 +920,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1605722190afd93bfea6384b88224d1cfe50ebf70d2e10641535da79fa70e83" dependencies = [ - "cosmwasm-schema 1.5.5", + "cosmwasm-schema 1.5.8", "cosmwasm-std", "schemars", "serde", @@ -692,7 +932,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81bb3e9dc87f4ff26547f4e27e0ba3c82034372f21b2f55527fb52b542637d8d" dependencies = [ - "cosmwasm-schema 1.5.5", + "cosmwasm-schema 1.5.8", "cosmwasm-std", "cw-storage-plus", "cw-utils", @@ -709,7 +949,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6c120b24fbbf5c3bedebb97f2cc85fbfa1c3287e09223428e7e597b5293c1fa" dependencies = [ - "cosmwasm-schema 1.5.5", + "cosmwasm-schema 1.5.8", "cosmwasm-std", "cw-storage-plus", "schemars", @@ -722,7 +962,7 @@ dependencies = [ name = "demo_contract" version = "0.1.0" dependencies = [ - "cosmwasm-schema 1.5.5", + "cosmwasm-schema 1.5.8", "cosmwasm-std", "cw-storage-plus", "schemars", @@ -747,6 +987,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", + "serde", ] [[package]] @@ -782,35 +1023,24 @@ dependencies = [ ] [[package]] -name = "dirs-next" -version = "2.0.0" +name = "dirs" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "cfg-if", - "dirs-sys-next", + "dirs-sys", ] [[package]] -name = "dirs-sys-next" -version = "0.1.2" +name = "dirs-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", + "option-ext", "redox_users", - "winapi", -] - -[[package]] -name = "displaydoc" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", + "windows-sys 0.48.0", ] [[package]] @@ -824,9 +1054,9 @@ dependencies = [ [[package]] name = "dwrote" -version = "0.11.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" +checksum = "70182709525a3632b2ba96b6569225467b18ecb4a77f46d255f713a6bebf05fd" dependencies = [ "lazy_static", "libc", @@ -908,9 +1138,9 @@ dependencies = [ [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "elliptic-curve" @@ -974,15 +1204,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" dependencies = [ "simd-adler32", ] @@ -1005,9 +1235,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "miniz_oxide", @@ -1037,16 +1267,16 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "font-kit" -version = "0.13.2" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2845a73bbd781e691ab7c2a028c579727cd254942e8ced57ff73e0eafd60de87" +checksum = "b64b34f4efd515f905952d91bc185039863705592c0c53ae6d979805dd154520" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "byteorder", "core-foundation", "core-graphics", "core-text", - "dirs-next", + "dirs", "dwrote", "float-ord", "freetype-sys", @@ -1078,7 +1308,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -1115,9 +1345,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1129,9 +1359,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1139,39 +1369,52 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-core", + "futures-macro", "futures-sink", "futures-task", "pin-project-lite", "pin-utils", + "slab", ] [[package]] @@ -1210,9 +1453,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" @@ -1242,8 +1485,8 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", - "indexmap 2.2.6", + "http 0.2.12", + "indexmap 2.6.0", "slab", "tokio", "tokio-util", @@ -1261,9 +1504,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] name = "heck" @@ -1318,6 +1561,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-body" version = "0.4.6" @@ -1325,15 +1579,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", "pin-project-lite", ] [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -1343,17 +1620,17 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", "h2", - "http", - "http-body", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", "itoa", @@ -1366,182 +1643,158 @@ dependencies = [ ] [[package]] -name = "hyper-rustls" -version = "0.24.2" +name = "hyper" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ + "bytes", + "futures-channel", "futures-util", - "http", - "hyper", - "rustls", + "http 1.1.0", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", "tokio", - "tokio-rustls", + "want", ] [[package]] -name = "hyper-timeout" -version = "0.4.1" +name = "hyper-named-pipe" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" dependencies = [ - "hyper", + "hex", + "hyper 1.5.0", + "hyper-util", "pin-project-lite", "tokio", - "tokio-io-timeout", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", + "tower-service", + "winapi", ] [[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" +name = "hyper-rustls" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ - "cc", + "futures-util", + "http 0.2.12", + "hyper 0.14.31", + "rustls", + "tokio", + "tokio-rustls", ] [[package]] -name = "icu_collections" -version = "1.5.0" +name = "hyper-timeout" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", + "hyper 0.14.31", + "pin-project-lite", + "tokio", + "tokio-io-timeout", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "hyper-util" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "hyper 1.5.0", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", ] [[package]] -name = "icu_locid_transform" -version = "1.5.0" +name = "hyperlocal" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", + "hex", + "http-body-util", + "hyper 1.5.0", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", ] [[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" +name = "iana-time-zone" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", ] [[package]] -name = "icu_normalizer_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" - -[[package]] -name = "icu_properties" -version = "1.5.0" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f8ac670d7422d7f76b32e17a5db556510825b29ec9154f235977c9caba61036" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", + "cc", ] [[package]] -name = "icu_properties_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" - -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +name = "ibc-testing" +version = "0.1.0" dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerovec", + "archway-rpc", + "bollard", + "ica-demo", + "tokio", ] [[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +name = "ica-demo" +version = "0.1.0" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", + "archway-bindings", + "archway-proto 0.3.0", + "cosmwasm-schema 1.5.8", + "cosmwasm-std", + "cosmwasm-storage", + "cw-storage-plus", + "cw2", + "pbjson-types", + "schemars", + "serde", + "thiserror", ] [[package]] name = "idna" -version = "1.0.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4716a3a0933a1d01c2f72450e89596eb51dd34ef3c211ccd875acdf1f8fe47ed" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ - "icu_normalizer", - "icu_properties", - "smallvec", - "utf8_iter", + "unicode-bidi", + "unicode-normalization", ] [[package]] @@ -1572,16 +1825,18 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] name = "indexmap" -version = "2.2.6" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.0", + "serde", ] [[package]] @@ -1608,9 +1863,15 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" @@ -1644,18 +1905,18 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.1" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -1667,9 +1928,9 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lazycell" @@ -1679,18 +1940,18 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -1699,7 +1960,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -1710,16 +1971,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] -name = "litemap" -version = "0.7.3" +name = "lock_api" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "matchit" @@ -1747,23 +2012,24 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", "simd-adler32", ] [[package]] name = "mio" -version = "0.8.11" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1800,22 +2066,23 @@ dependencies = [ ] [[package]] -name = "num-traits" -version = "0.2.19" +name = "num-derive" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ - "autocfg", + "proc-macro2", + "quote", + "syn 2.0.79", ] [[package]] -name = "num_cpus" -version = "1.16.0" +name = "num-traits" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ - "hermit-abi", - "libc", + "autocfg", ] [[package]] @@ -1826,18 +2093,18 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.0" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "opaque-debug" @@ -1851,6 +2118,35 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + [[package]] name = "paste" version = "1.0.15" @@ -1869,9 +2165,9 @@ dependencies = [ [[package]] name = "pathfinder_simd" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebf45976c56919841273f2a0fc684c28437e2f304e264557d9c72be5d5a718be" +checksum = "5cf07ef4804cfa9aea3b04a7bbdd5a40031dbb6b4f2cbaf2b011666c80c5b4f2" dependencies = [ "rustc_version", ] @@ -1882,7 +2178,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1030c719b0ec2a2d25a5df729d6cff1acf3cc230bf766f4f97833591f7577b90" dependencies = [ - "base64", + "base64 0.21.7", "serde", ] @@ -1913,11 +2209,21 @@ dependencies = [ "serde", ] +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac", +] + [[package]] name = "peg" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a625d12ad770914cbf7eff6f9314c3ef803bfe364a1b20bc36ddf56673e71e5" +checksum = "295283b02df346d1ef66052a757869b2876ac29a6bb0ac3f5f7cd44aebe40e8f" dependencies = [ "peg-macros", "peg-runtime", @@ -1925,9 +2231,9 @@ dependencies = [ [[package]] name = "peg-macros" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f241d42067ed3ab6a4fece1db720838e1418f36d868585a27931f95d6bc03582" +checksum = "bdad6a1d9cf116a059582ce415d5f5566aabcd4008646779dab7fdc2a9a9d426" dependencies = [ "peg-runtime", "proc-macro2", @@ -1953,27 +2259,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.6", + "indexmap 2.6.0", ] [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -2000,15 +2306,15 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plotters" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3" +checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" dependencies = [ "chrono", "font-kit", @@ -2026,15 +2332,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7" +checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" [[package]] name = "plotters-bitmap" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e7f6fb8302456d7c264a94dada86f76d76e1a03e2294ee86ca7da92983b0a6" +checksum = "72ce181e3f6bf82d6c1dc569103ca7b1bd964c60ba03d7e6cdfbb3e3eb7f7405" dependencies = [ "gif", "image", @@ -2043,18 +2349,18 @@ dependencies = [ [[package]] name = "plotters-svg" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705" +checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" dependencies = [ "plotters-backend", ] [[package]] name = "png" -version = "0.17.13" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -2065,9 +2371,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -2077,25 +2383,28 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "proc-macro2" -version = "1.0.85" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" dependencies = [ "unicode-ident", ] @@ -2127,7 +2436,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.66", + "syn 2.0.79", "tempfile", ] @@ -2141,7 +2450,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -2155,9 +2464,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2198,11 +2507,20 @@ dependencies = [ "getrandom", ] +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", @@ -2211,9 +2529,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.5" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", @@ -2223,9 +2541,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -2234,9 +2552,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" @@ -2244,15 +2562,15 @@ version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ - "base64", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", "futures-util", "h2", - "http", - "http-body", - "hyper", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.31", "hyper-rustls", "ipnet", "js-sys", @@ -2327,20 +2645,20 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver", ] [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -2377,7 +2695,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64", + "base64 0.21.7", ] [[package]] @@ -2392,9 +2710,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -2413,11 +2731,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2441,9 +2759,15 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.66", + "syn 2.0.79", ] +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + [[package]] name = "sct" version = "0.7.1" @@ -2470,11 +2794,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -2483,9 +2807,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -2499,9 +2823,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.203" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] @@ -2517,22 +2841,22 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.14" +version = "0.11.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" dependencies = [ "serde", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -2543,16 +2867,17 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -2565,7 +2890,16 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", ] [[package]] @@ -2580,6 +2914,23 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_with" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.6.0", + "serde", + "serde_derive", + "serde_json", + "time", +] + [[package]] name = "sha2" version = "0.9.9" @@ -2610,6 +2961,15 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + [[package]] name = "signature" version = "2.2.0" @@ -2667,23 +3027,23 @@ dependencies = [ "der", ] -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "subtle-encoding" @@ -2713,9 +3073,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -2728,17 +3088,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" -[[package]] -name = "synstructure" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", -] - [[package]] name = "system-configuration" version = "0.5.1" @@ -2762,14 +3111,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2803,6 +3153,37 @@ dependencies = [ "zeroize", ] +[[package]] +name = "tendermint" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f8a10105d0a7c4af0a242e23ed5a12519afe5cc0e68419da441bb5981a6802" +dependencies = [ + "bytes", + "digest 0.10.7", + "ed25519", + "ed25519-consensus", + "flex-error", + "futures", + "k256", + "num-traits", + "once_cell", + "prost", + "prost-types", + "ripemd", + "serde", + "serde_bytes", + "serde_json", + "serde_repr", + "sha2 0.10.8", + "signature", + "subtle", + "subtle-encoding", + "tendermint-proto 0.35.0", + "time", + "zeroize", +] + [[package]] name = "tendermint-config" version = "0.34.1" @@ -2812,8 +3193,22 @@ dependencies = [ "flex-error", "serde", "serde_json", - "tendermint", - "toml", + "tendermint 0.34.1", + "toml 0.5.11", + "url", +] + +[[package]] +name = "tendermint-config" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac6bf36c613bb113737c333e3c1d6dfd3c99f8ac679e84feb58dd6456d77fb2e" +dependencies = [ + "flex-error", + "serde", + "serde_json", + "tendermint 0.35.0", + "toml 0.8.19", "url", ] @@ -2825,7 +3220,25 @@ checksum = "b797dd3d2beaaee91d2f065e7bdf239dc8d80bba4a183a288bc1279dd5a69a1e" dependencies = [ "bytes", "flex-error", - "num-derive", + "num-derive 0.3.3", + "num-traits", + "prost", + "prost-types", + "serde", + "serde_bytes", + "subtle-encoding", + "time", +] + +[[package]] +name = "tendermint-proto" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff525d5540a9fc535c38dc0d92a98da3ee36fcdfbda99cecb9f3cce5cd4d41d7" +dependencies = [ + "bytes", + "flex-error", + "num-derive 0.4.2", "num-traits", "prost", "prost-types", @@ -2873,8 +3286,8 @@ dependencies = [ "serde_json", "subtle", "subtle-encoding", - "tendermint", - "tendermint-config", + "tendermint 0.34.1", + "tendermint-config 0.34.1", "tendermint-proto 0.34.1", "thiserror", "time", @@ -2885,14 +3298,47 @@ dependencies = [ "walkdir", ] +[[package]] +name = "tendermint-rpc" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d8fe61b1772cd50038bdeeadf53773bb37a09e639dd8e6d996668fd220ddb29" +dependencies = [ + "async-trait", + "bytes", + "flex-error", + "futures", + "getrandom", + "peg", + "pin-project", + "rand", + "reqwest", + "semver", + "serde", + "serde_bytes", + "serde_json", + "subtle", + "subtle-encoding", + "tendermint 0.35.0", + "tendermint-config 0.35.0", + "tendermint-proto 0.35.0", + "thiserror", + "time", + "tokio", + "tracing", + "url", + "uuid", + "walkdir", +] + [[package]] name = "test-tube" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "804bb9bda992b6cda6f883e7973cb999d4da90d21257fb918d6a693407148681" dependencies = [ - "base64", - "cosmrs", + "base64 0.21.7", + "cosmrs 0.15.0", "cosmwasm-std", "prost", "serde", @@ -2902,22 +3348,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -2927,6 +3373,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", + "itoa", "num-conv", "powerfmt", "serde", @@ -2951,30 +3398,36 @@ dependencies = [ ] [[package]] -name = "tinystr" -version = "0.7.6" +name = "tinyvec" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ - "displaydoc", - "zerovec", + "tinyvec_macros", ] +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" -version = "1.38.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", + "parking_lot", "pin-project-lite", + "signal-hook-registry", "socket2", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2989,13 +3442,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -3010,9 +3463,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -3021,9 +3474,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -3041,6 +3494,40 @@ dependencies = [ "serde", ] +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap 2.6.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + [[package]] name = "tonic" version = "0.10.2" @@ -3050,12 +3537,12 @@ dependencies = [ "async-stream", "async-trait", "axum", - "base64", + "base64 0.21.7", "bytes", "h2", - "http", - "http-body", - "hyper", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.31", "hyper-timeout", "percent-encoding", "pin-project", @@ -3077,12 +3564,12 @@ dependencies = [ "async-stream", "async-trait", "axum", - "base64", + "base64 0.21.7", "bytes", "h2", - "http", - "http-body", - "hyper", + "http 0.2.12", + "http-body 0.4.6", + "hyper 0.14.31", "hyper-timeout", "percent-encoding", "pin-project", @@ -3117,15 +3604,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -3146,7 +3633,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", ] [[package]] @@ -3176,17 +3663,32 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "unicode-bidi" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" + [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "untrusted" @@ -3196,9 +3698,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.1" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -3206,28 +3708,22 @@ dependencies = [ ] [[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[package]] -name = "utf8_iter" -version = "1.0.4" +name = "utf8parse" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" @@ -3256,34 +3752,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -3293,9 +3790,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3303,28 +3800,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -3366,11 +3863,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3385,7 +3882,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3403,7 +3900,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -3423,18 +3929,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -3445,9 +3951,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -3457,9 +3963,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -3469,15 +3975,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -3487,9 +3993,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -3499,9 +4005,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -3511,9 +4017,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -3523,9 +4029,18 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +dependencies = [ + "memchr", +] [[package]] name = "winreg" @@ -3546,73 +4061,36 @@ dependencies = [ "winapi", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - [[package]] name = "yeslogic-fontconfig-sys" -version = "5.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb6b23999a8b1a997bf47c7bb4d19ad4029c3327bb3386ebe0a5ff584b33c7a" +checksum = "503a066b4c037c440169d995b869046827dbc71263f6e8f3be6d77d4f3229dbd" dependencies = [ - "cstr", "dlib", "once_cell", "pkg-config", ] [[package]] -name = "yoke" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", - "synstructure", -] - -[[package]] -name = "zerofrom" -version = "0.1.4" +name = "zerocopy" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "zerofrom-derive", + "byteorder", + "zerocopy-derive", ] [[package]] -name = "zerofrom-derive" -version = "0.1.4" +name = "zerocopy-derive" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", - "synstructure", + "syn 2.0.79", ] [[package]] @@ -3632,27 +4110,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", -] - -[[package]] -name = "zerovec" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2cc8827d6c0994478a15c53f374f46fbd41bea663d809b14744bc42e6b109c" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.66", + "syn 2.0.79", ] diff --git a/Cargo.toml b/Cargo.toml index 0a1a7fb..1fd4c76 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,4 @@ [workspace] -members = ["packages/*"] +members = ["packages/*", "contracts/*"] resolver = "2" \ No newline at end of file diff --git a/artifacts/checksums.txt b/artifacts/checksums.txt new file mode 100644 index 0000000..116914c --- /dev/null +++ b/artifacts/checksums.txt @@ -0,0 +1,2 @@ +45e8a3d5f3fb7c5502178ffb306005e7e37e5dd476aaeb7d17e0b6d9d7cec106 demo_contract.wasm +66645797ac468c16c8c63406076dca4ad1e33c92cec319f4d478f959e234386e ica_demo.wasm diff --git a/artifacts/checksums_intermediate.txt b/artifacts/checksums_intermediate.txt new file mode 100644 index 0000000..c60a5a9 --- /dev/null +++ b/artifacts/checksums_intermediate.txt @@ -0,0 +1,2 @@ +1231de5e7d029b40017a8f21e1b66449307cfa0f17978bf49d7aa8f603726860 /target/wasm32-unknown-unknown/release/demo_contract.wasm +6d022a64a7cd5180fc00aadc2d6bc5ef75acf34638245de41acc32a7951ddbb5 /target/wasm32-unknown-unknown/release/ica_demo.wasm diff --git a/artifacts/demo_contract.wasm b/artifacts/demo_contract.wasm new file mode 100644 index 0000000000000000000000000000000000000000..1bab64c78ba2918f580fea4c5c24e2522e45ab43 GIT binary patch literal 228464 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 G=>Hd)Ei7yR literal 0 HcmV?d00001 diff --git a/artifacts/ica_demo.wasm b/artifacts/ica_demo.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e6a6e2e569dab35feab5e7df7a6afdbd33cfeb4c GIT binary patch literal 197318 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 literal 0 HcmV?d00001 diff --git a/contracts/demo_contract/.cargo/config b/contracts/demo_contract/.cargo/config new file mode 100644 index 0000000..4fa7f37 --- /dev/null +++ b/contracts/demo_contract/.cargo/config @@ -0,0 +1,5 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --target wasm32-unknown-unknown" +unit-test = "test --lib" +schema = "run --bin schema" diff --git a/contracts/demo_contract/Cargo.toml b/contracts/demo_contract/Cargo.toml new file mode 100644 index 0000000..9d78d17 --- /dev/null +++ b/contracts/demo_contract/Cargo.toml @@ -0,0 +1,51 @@ +[package] +name = "demo_contract" +version = "0.1.0" +edition = "2021" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", +] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +doctest = false +crate-type = ["cdylib", "rlib"] + +[profile.release] +opt-level = 3 +debug = false +rpath = false +lto = true +debug-assertions = false +codegen-units = 1 +panic = 'abort' +incremental = false +overflow-checks = true + +[features] +# for more explicit tests, cargo test --features=backtraces +backtraces = ["cosmwasm-std/backtraces"] +# use library feature to disable all instantiate/execute/query exports +library = [] + +[package.metadata.scripts] +optimize = """docker run --rm -v "$(pwd)":/code \ + -e CARGO_TERM_COLOR=always \ + --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target \ + --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \ + cosmwasm/rust-optimizer:0.15.0 +""" + +[dependencies] +cosmwasm-std = { version = "1.5.0", features = ["stargate", "staking"] } +cw-storage-plus = "1.2.0" +serde = { version = "1.0", default-features = false, features = ["derive"] } +schemars = "~0.8.21" +thiserror = "1.0" + +[dev-dependencies] +cosmwasm-schema = "~1.5.0" diff --git a/contracts/demo_contract/src/bin/schema.rs b/contracts/demo_contract/src/bin/schema.rs new file mode 100644 index 0000000..f328e4d --- /dev/null +++ b/contracts/demo_contract/src/bin/schema.rs @@ -0,0 +1 @@ +fn main() {} diff --git a/contracts/demo_contract/src/contract.rs b/contracts/demo_contract/src/contract.rs new file mode 100644 index 0000000..1972ca8 --- /dev/null +++ b/contracts/demo_contract/src/contract.rs @@ -0,0 +1,50 @@ +use cosmwasm_std::{Binary, Deps, DepsMut, entry_point, Env, MessageInfo, Reply, Response, StdResult, SubMsg, SubMsgResult, to_json_binary}; +use cw_storage_plus::Item; +use crate::error::ContractError; +use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + _deps: DepsMut, + _env: Env, + _info: MessageInfo, + _msg: InstantiateMsg, +) -> Result { + Ok(Response::new() + .add_attribute("action", "instantiate")) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + let mut res = Response::new(); + match msg { + ExecuteMsg::CosmosMsg(cosmos_msg) => { + res.messages.push(SubMsg::new(cosmos_msg)); + } + ExecuteMsg::Loop(n) => { + let storage = Item::new("demo"); + for i in 0..n { + storage.save(deps.storage, &i.to_string())?; + } + } + } + Ok(res) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(_deps: Deps, _env: Env, _msg: QueryMsg) -> StdResult { + Ok(Binary::from(&[])) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn reply(_deps: DepsMut, _env: Env, msg: Reply) -> Result { + match msg.result { + SubMsgResult::Ok(_) => Ok(Response::default()), + SubMsgResult::Err(_) => Err(ContractError::Unauthorized {}), + } +} diff --git a/contracts/demo_contract/src/error.rs b/contracts/demo_contract/src/error.rs new file mode 100644 index 0000000..f192750 --- /dev/null +++ b/contracts/demo_contract/src/error.rs @@ -0,0 +1,10 @@ +use cosmwasm_std::StdError; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + #[error("Unauthorized")] + Unauthorized {}, +} \ No newline at end of file diff --git a/contracts/demo_contract/src/lib.rs b/contracts/demo_contract/src/lib.rs new file mode 100644 index 0000000..6204083 --- /dev/null +++ b/contracts/demo_contract/src/lib.rs @@ -0,0 +1,3 @@ +pub mod contract; +pub mod msg; +pub mod error; diff --git a/contracts/demo_contract/src/msg.rs b/contracts/demo_contract/src/msg.rs new file mode 100644 index 0000000..fab8c22 --- /dev/null +++ b/contracts/demo_contract/src/msg.rs @@ -0,0 +1,17 @@ +use cosmwasm_std::CosmosMsg; +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +pub struct InstantiateMsg {} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum ExecuteMsg { + CosmosMsg(CosmosMsg), + Loop(u64) +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] +#[serde(rename_all = "snake_case")] +pub enum QueryMsg {} \ No newline at end of file diff --git a/contracts/ica-demo/.cargo/config b/contracts/ica-demo/.cargo/config new file mode 100644 index 0000000..4fa7f37 --- /dev/null +++ b/contracts/ica-demo/.cargo/config @@ -0,0 +1,5 @@ +[alias] +wasm = "build --release --lib --target wasm32-unknown-unknown" +wasm-debug = "build --target wasm32-unknown-unknown" +unit-test = "test --lib" +schema = "run --bin schema" diff --git a/contracts/ica-demo/.github/workflows/Basic.yml b/contracts/ica-demo/.github/workflows/Basic.yml new file mode 100644 index 0000000..6170933 --- /dev/null +++ b/contracts/ica-demo/.github/workflows/Basic.yml @@ -0,0 +1,83 @@ +# Based on https://github.com/actions-rs/example/blob/master/.github/workflows/quickstart.yml + +on: [push, pull_request] + +name: Basic + +jobs: + + test: + name: Test Suite + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: wasm32-unknown-unknown + override: true + profile: minimal + + - name: Run unit tests + uses: actions-rs/cargo@v1 + with: + command: unit-test + args: --locked + env: + RUST_BACKTRACE: 1 + + - name: Compile WASM contract + uses: actions-rs/cargo@v1 + with: + command: wasm + args: --locked + env: + RUSTFLAGS: "-C link-arg=-s" + + lints: + name: Lints + runs-on: ubuntu-latest + steps: + - name: Checkout sources + uses: actions/checkout@v2 + + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + profile: minimal + components: rustfmt, clippy + + - name: Run cargo fmt + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check + + - name: Run cargo clippy + uses: actions-rs/cargo@v1 + with: + command: clippy + args: -- -D warnings + + - name: Generate schema + uses: actions-rs/cargo@v1 + with: + command: schema + args: --locked + + - name: Verify schema + uses: tj-actions/verify-changed-files@v8 + id: verify-schema + with: + files: schema/.*\.json + + - name: Display changed schemas + if: steps.verify-schema.outputs.files_changed == 'true' + run: | + echo "The schema files are not in sync with the repository. Please, run 'cargo schema' to generate them again and commit the changes." + exit 1 diff --git a/contracts/ica-demo/Cargo.toml b/contracts/ica-demo/Cargo.toml new file mode 100644 index 0000000..e28b382 --- /dev/null +++ b/contracts/ica-demo/Cargo.toml @@ -0,0 +1,56 @@ +[package] +name = "ica-demo" +version = "0.1.0" +authors = ["Guy Garcia "] +edition = "2021" + +exclude = [ + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "artifacts/*", +] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +crate-type = ["cdylib", "rlib"] + +[profile.release] +codegen-units = 1 +debug = false +debug-assertions = false +incremental = false +lto = true +opt-level = 3 +overflow-checks = true +panic = 'abort' +rpath = false + +[features] +# for more explicit tests, cargo test --features=backtraces +backtraces = ["cosmwasm-std/backtraces"] +# use library feature to disable all instantiate/execute/query exports +library = [] + +[package.metadata.scripts] +optimize = """docker run --rm \ + -e CARGO_TERM_COLOR=always \ + -v "$(pwd)":/code \ + -v "$(basename "$(pwd)")_cache":/code/target \ + -v "$(basename "$(pwd)")_registry_cache":/usr/local/cargo/registry \ + -v "$(basename "$(pwd)")_cosmwasm_sccache":/root/.cache/sccache \ + --name "$(basename "$(pwd)")" \ + cosmwasm/rust-optimizer:0.14.0 +""" + +[dependencies] +archway-bindings = "0.2.1" +pbjson-types = "0.6.0" +cosmwasm-schema = "1.3.1" +cosmwasm-std = { version = "1.3.1", features = ["stargate"] } +cosmwasm-storage = "1.3.1" +cw-storage-plus = "1.1.0" +cw2 = "1.1.0" +schemars = "0.8.12" +serde = { version = "1.0.183", default-features = false, features = ["derive"] } +thiserror = "1.0.44" +archway-proto = { git = "https://github.com/archway-network/arch3.rs.git", branch = "fix/abstract-any-proto-encoding-fix", default-features = false, features = ["cosmwasm", "abstract-any"] } diff --git a/contracts/ica-demo/schema/ica-demo.json b/contracts/ica-demo/schema/ica-demo.json new file mode 100644 index 0000000..f226793 --- /dev/null +++ b/contracts/ica-demo/schema/ica-demo.json @@ -0,0 +1,107 @@ +{ + "contract_name": "ica-demo", + "contract_version": "0.1.0", + "idl_version": "1.0.0", + "instantiate": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "type": "object", + "additionalProperties": false + }, + "execute": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "create_i_c_a" + ], + "properties": { + "create_i_c_a": { + "type": "object", + "required": [ + "connection_id" + ], + "properties": { + "connection_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "execute_i_c_a" + ], + "properties": { + "execute_i_c_a": { + "type": "object", + "required": [ + "connection_id", + "delegator", + "grantee", + "validator" + ], + "properties": { + "connection_id": { + "type": "string" + }, + "delegator": { + "type": "string" + }, + "grantee": { + "type": "string" + }, + "validator": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "query": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "ica_account" + ], + "properties": { + "ica_account": { + "type": "object", + "required": [ + "connection_id" + ], + "properties": { + "connection_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] + }, + "migrate": null, + "sudo": null, + "responses": { + "ica_account": { + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Boolean", + "type": "boolean" + } + } +} diff --git a/contracts/ica-demo/schema/raw/execute.json b/contracts/ica-demo/schema/raw/execute.json new file mode 100644 index 0000000..38fe46f --- /dev/null +++ b/contracts/ica-demo/schema/raw/execute.json @@ -0,0 +1,60 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "ExecuteMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "create_i_c_a" + ], + "properties": { + "create_i_c_a": { + "type": "object", + "required": [ + "connection_id" + ], + "properties": { + "connection_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "execute_i_c_a" + ], + "properties": { + "execute_i_c_a": { + "type": "object", + "required": [ + "connection_id", + "delegator", + "grantee", + "validator" + ], + "properties": { + "connection_id": { + "type": "string" + }, + "delegator": { + "type": "string" + }, + "grantee": { + "type": "string" + }, + "validator": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] +} diff --git a/contracts/ica-demo/schema/raw/instantiate.json b/contracts/ica-demo/schema/raw/instantiate.json new file mode 100644 index 0000000..1352613 --- /dev/null +++ b/contracts/ica-demo/schema/raw/instantiate.json @@ -0,0 +1,6 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "InstantiateMsg", + "type": "object", + "additionalProperties": false +} diff --git a/contracts/ica-demo/schema/raw/query.json b/contracts/ica-demo/schema/raw/query.json new file mode 100644 index 0000000..09aa549 --- /dev/null +++ b/contracts/ica-demo/schema/raw/query.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "QueryMsg", + "oneOf": [ + { + "type": "object", + "required": [ + "ica_account" + ], + "properties": { + "ica_account": { + "type": "object", + "required": [ + "connection_id" + ], + "properties": { + "connection_id": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + ] +} diff --git a/contracts/ica-demo/schema/raw/response_to_ica_account.json b/contracts/ica-demo/schema/raw/response_to_ica_account.json new file mode 100644 index 0000000..a7fe2bf --- /dev/null +++ b/contracts/ica-demo/schema/raw/response_to_ica_account.json @@ -0,0 +1,5 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Boolean", + "type": "boolean" +} diff --git a/contracts/ica-demo/src/bin/schema.rs b/contracts/ica-demo/src/bin/schema.rs new file mode 100644 index 0000000..1731e45 --- /dev/null +++ b/contracts/ica-demo/src/bin/schema.rs @@ -0,0 +1,11 @@ +use cosmwasm_schema::write_api; + +use ica_demo::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; + +fn main() { + write_api! { + instantiate: InstantiateMsg, + execute: ExecuteMsg, + query: QueryMsg, + } +} diff --git a/contracts/ica-demo/src/contract.rs b/contracts/ica-demo/src/contract.rs new file mode 100644 index 0000000..729c2b2 --- /dev/null +++ b/contracts/ica-demo/src/contract.rs @@ -0,0 +1,71 @@ +#[cfg(not(feature = "library"))] +use cosmwasm_std::entry_point; +use cosmwasm_std::{to_json_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult}; +// use cw2::set_contract_version; + +use crate::error::ContractError; +use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; +use crate::state::ICA_HISTORY; +use crate::sudo::{execute_stake, register}; +/* +// version info for migration info +const CONTRACT_NAME: &str = "crates.io:ica-demo"; +const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION"); +*/ + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn instantiate( + deps: DepsMut, + _env: Env, + _info: MessageInfo, + _msg: InstantiateMsg, +) -> Result { + ICA_HISTORY.save(deps.storage, &vec![])?; + Ok(Response::new()) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn execute( + deps: DepsMut, + env: Env, + _info: MessageInfo, + msg: ExecuteMsg, +) -> Result { + match msg { + ExecuteMsg::CreateICA { connection_id } => { + let mut response = Response::new(); + register( + env.contract.address.to_string(), + connection_id, + &mut response, + )?; + Ok(response) + } + ExecuteMsg::ExecuteICA { + connection_id, + grantee, + delegator, + validator, + } => { + let mut response = Response::new(); + + execute_stake( + &env, + connection_id, + grantee, + delegator, + validator, + &mut response, + )?; + + Ok(response) + } + } +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { + Ok(match msg { + QueryMsg::IcaAccount { .. } => to_json_binary(&ICA_HISTORY.load(deps.storage)?)?, + }) +} diff --git a/contracts/ica-demo/src/error.rs b/contracts/ica-demo/src/error.rs new file mode 100644 index 0000000..beab5d3 --- /dev/null +++ b/contracts/ica-demo/src/error.rs @@ -0,0 +1,19 @@ +use cosmwasm_std::StdError; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum ContractError { + #[error("{0}")] + Std(#[from] StdError), + + #[error("No pending ICA account")] + NoPendingIca {}, + + #[error("Already expecting an ICA account")] + PendingIca {}, + + #[error("Unauthorized")] + Unauthorized {}, + // Add any other custom errors you like here. + // Look at https://docs.rs/thiserror/1.0.21/thiserror/ for details. +} diff --git a/contracts/ica-demo/src/lib.rs b/contracts/ica-demo/src/lib.rs new file mode 100644 index 0000000..93299e1 --- /dev/null +++ b/contracts/ica-demo/src/lib.rs @@ -0,0 +1,7 @@ +pub mod contract; +mod error; +pub mod msg; +pub mod state; +mod sudo; + +pub use crate::error::ContractError; diff --git a/contracts/ica-demo/src/msg.rs b/contracts/ica-demo/src/msg.rs new file mode 100644 index 0000000..f0bad93 --- /dev/null +++ b/contracts/ica-demo/src/msg.rs @@ -0,0 +1,72 @@ +use archway_proto::archway::cwerrors::v1::SudoError; +use cosmwasm_schema::{cw_serde, QueryResponses}; +use cosmwasm_std::Binary; +use schemars::JsonSchema; +use serde::{Deserialize, Serialize}; + +#[cw_serde] +pub struct InstantiateMsg {} + +#[cw_serde] +pub enum ExecuteMsg { + CreateICA { + connection_id: String, + }, + ExecuteICA { + connection_id: String, + grantee: String, + delegator: String, + validator: String, + }, +} + +#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +pub enum SudoMsg { + Ica { + account_registered: Option, + tx_executed: Option, + }, + Error(SudoError), +} + +#[cw_serde] +#[derive(QueryResponses)] +pub enum QueryMsg { + #[returns(bool)] + IcaAccount { connection_id: String }, +} + +#[cw_serde] +pub struct IcaMsg { + pub account_registered: Option, + pub tx_executed: Option, +} + +#[cw_serde] +pub struct AccountRegistered { + pub counterparty_address: String, +} + +#[cw_serde] +pub struct ICAResponse { + pub packet: RequestPacket, + pub data: Binary, +} + +#[cw_serde] +pub struct RequestPacket { + pub sequence: Option, + pub source_port: Option, + pub source_channel: Option, + pub destination_port: Option, + pub destination_channel: Option, + pub data: Option, + pub timeout_height: Option, + pub timeout_timestamp: Option, +} + +#[cw_serde] +pub struct RequestPacketTimeoutHeight { + pub revision_number: Option, + pub revision_height: Option, +} diff --git a/contracts/ica-demo/src/state.rs b/contracts/ica-demo/src/state.rs new file mode 100644 index 0000000..9c2b94b --- /dev/null +++ b/contracts/ica-demo/src/state.rs @@ -0,0 +1,4 @@ +use crate::msg::IcaMsg; +use cw_storage_plus::Item; + +pub const ICA_HISTORY: Item> = Item::new("ica_history"); diff --git a/contracts/ica-demo/src/sudo.rs b/contracts/ica-demo/src/sudo.rs new file mode 100644 index 0000000..1c3faf8 --- /dev/null +++ b/contracts/ica-demo/src/sudo.rs @@ -0,0 +1,108 @@ +use crate::msg::{IcaMsg, SudoMsg}; +use crate::state::ICA_HISTORY; +use crate::ContractError; +use archway_proto::any::Any; +use archway_proto::archway::cwerrors::v1::SudoError; +use archway_proto::archway::cwica::v1::{MsgRegisterInterchainAccount, MsgSendTx}; +use archway_proto::cosmos::authz::v1beta1::MsgExec; +use archway_proto::cosmos::base::v1beta1::Coin; +use archway_proto::cosmos::staking::v1beta1::MsgDelegate; +use archway_proto::prost::{Message, Name}; +use cosmwasm_std::{ + entry_point, to_json_binary, Attribute, Binary, CosmosMsg, DepsMut, Env, Response, SubMsg, +}; +// TODO: create a system based on handshakes + +pub fn register( + from_address: String, + connection_id: String, + response: &mut Response, +) -> Result<(), ContractError> { + let regsiter_msg = MsgRegisterInterchainAccount { + contract_address: from_address.clone(), + connection_id: connection_id.clone(), + }; + + response + .attributes + .push(Attribute::new("action", "register")); + response + .attributes + .push(Attribute::new("account_owner", from_address)); + response + .attributes + .push(Attribute::new("connection_id", connection_id)); + response.messages.push(SubMsg::new(CosmosMsg::Stargate { + type_url: MsgRegisterInterchainAccount::type_url(), + value: Binary(regsiter_msg.encode_to_vec()), + })); + Ok(()) +} + +pub fn execute_stake( + env: &Env, + connection_id: String, + grantee: String, + delegator: String, + validator: String, + response: &mut Response, +) -> Result<(), ContractError> { + let execute_msg = MsgSendTx { + contract_address: env.contract.address.to_string(), + connection_id, + msgs: vec![Any::new(MsgExec { + grantee, + msgs: vec![Any::new(MsgDelegate { + delegator_address: delegator, + validator_address: validator, + amount: Some(Coin { + denom: "stake".to_string(), + amount: "100".to_string(), + }), + })], + })], + memo: "".to_string(), + timeout: 5000, + }; + + response.messages.push(SubMsg::new(CosmosMsg::Stargate { + type_url: MsgSendTx::>::type_url(), + value: Binary(execute_msg.encode_to_vec()), + })); + + Ok(()) +} + +#[cfg_attr(not(feature = "library"), entry_point)] +pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result { + match msg { + SudoMsg::Ica { + account_registered, + tx_executed, + } => sudo_ica( + deps, + env, + IcaMsg { + account_registered, + tx_executed, + }, + ), + SudoMsg::Error(msg) => sudo_error(deps, env, msg), + }?; + Ok(Response::new()) +} + +pub fn sudo_ica(deps: DepsMut, env: Env, msg: IcaMsg) -> Result { + let response = Response::new(); + + ICA_HISTORY.update::<_, ContractError>(deps.storage, |mut history| { + history.push(msg); + Ok(history) + })?; + + Ok(response) +} + +pub fn sudo_error(deps: DepsMut, env: Env, msg: SudoError) -> Result { + Ok(Response::new().add_attribute("error_msg", to_json_binary(&msg)?.to_string())) +} diff --git a/packages/ibc-testing/Cargo.toml b/packages/ibc-testing/Cargo.toml new file mode 100644 index 0000000..696e45b --- /dev/null +++ b/packages/ibc-testing/Cargo.toml @@ -0,0 +1,14 @@ +[package] +name = "ibc-testing" +version = "0.1.0" +edition = "2021" + +[dependencies] +archway-rpc = { git = "ssh://git@github.com/archway-network/archway-rs-rpc.git", rev = "ade729d3" } +bollard = "0.17.1" +tokio = "1.40.0" + +[dev-dependencies] +#archway-proto = { path = "../../../arch3.rs/packages/proto", default-features = false, features = ["cosmwasm", "abstract-any"] } +tokio = { version = "1.40.0", features = ["full", "test-util"] } +ica-demo = { path = "../../contracts/ica-demo", features = ["library"] } \ No newline at end of file diff --git a/packages/ibc-testing/Dockerfile b/packages/ibc-testing/Dockerfile new file mode 100644 index 0000000..a7bdfb5 --- /dev/null +++ b/packages/ibc-testing/Dockerfile @@ -0,0 +1,42 @@ +FROM golang:1.23 + +WORKDIR / + +# Install archway +RUN git clone https://github.com/archway-network/archway.git \ + && cd ./archway \ + && git checkout tags/v9.0.0-rc3 \ + && make install + +# Install Hermes +RUN curl -L "https://github.com/informalsystems/hermes/releases/download/v1.10.3/hermes-v1.10.3-x86_64-unknown-linux-gnu.tar.gz" > "hermes.tar.gz" \ + && mkdir -p ./.hermes/bin/ && tar -C ./.hermes/bin/ -vxzf hermes.tar.gz + +# Install GM deps +RUN apt-get update && apt-get install jq less -y +RUN curl -Lo /usr/local/bin/sconfig https://github.com/freshautomations/sconfig/releases/download/v0.1.0/sconfig_linux_amd64 \ + && curl -Lo /usr/local/bin/stoml https://github.com/freshautomations/stoml/releases/download/v0.7.0/stoml_linux_amd64 \ + && chmod 755 /usr/local/bin/sconfig && chmod 755 /usr/local/bin/stoml + +# Install GM +ADD "https://www.random.org/cgi-bin/randbyte?nbytes=10&format=h" skipcache +RUN git clone https://github.com/FloppyDisck/gm && gm/bin/gm install + +# Expose chain node ports +EXPOSE 27010 27011 27012 +EXPOSE 27020 27021 27022 + +COPY scripts/init_network.sh . +RUN chmod +x ./init_network.sh + +# Setup GM config +COPY scripts/gm.toml /root/.gm/gm.toml + +# Setup hermes config and keys +ENV USER_MNEMONIC="any giant turtle pioneer frequent frown harvest ancient episode junior vocal rent shrimp icon idle echo suspect clean cage eternal sample post heavy enough" +COPY scripts/relayer_config.toml ./.hermes/config.toml +RUN echo "${USER_MNEMONIC}" > ./mnemonic.txt \ + && ./.hermes/bin/hermes --config ./.hermes/config.toml keys add --chain archway-1 --mnemonic-file ./mnemonic.txt \ + && ./.hermes/bin/hermes --config ./.hermes/config.toml keys add --chain archway-2 --mnemonic-file ./mnemonic.txt + +ENTRYPOINT ./init_network.sh \ No newline at end of file diff --git a/packages/ibc-testing/README.md b/packages/ibc-testing/README.md new file mode 100644 index 0000000..df9e294 --- /dev/null +++ b/packages/ibc-testing/README.md @@ -0,0 +1,5 @@ +# Setup the Docker image + +```bash +docker build -t ibc-demo . +``` \ No newline at end of file diff --git a/packages/ibc-testing/scripts/gm.toml b/packages/ibc-testing/scripts/gm.toml new file mode 100644 index 0000000..abeb1c6 --- /dev/null +++ b/packages/ibc-testing/scripts/gm.toml @@ -0,0 +1,34 @@ +[global] +add_to_hermes = false +auto_maintain_config = true +extra_wallets = 0 +gaiad_binary = "/go/bin/archwayd" +hdpath = "" +home_dir = "/root/.gm" +ports_start_at = 27000 +validator_mnemonic = "guard cream sadness conduct invite crumble clock pudding hole grit liar hotel maid produce squeeze return argue turtle know drive eight casino maze host" +wallet_mnemonic = "any giant turtle pioneer frequent frown harvest ancient episode junior vocal rent shrimp icon idle echo suspect clean cage eternal sample post heavy enough" + +[global.hermes] +binary = "./.hermes/bin/hermes" #change this path according to your setup +config = "./.hermes/config.toml" +log_level = "info" +telemetry_enabled = true +telemetry_host = "127.0.0.1" +telemetry_port = 3001 + +[archway-1] +ports_start_at = 27010 + +[archway-2] +ports_start_at = 27020 + +[node-1] +add_to_hermes = true +network = "archway-1" +ports_start_at = 27030 + +[node-2] +add_to_hermes = true +network = "archway-2" +ports_start_at = 27040 \ No newline at end of file diff --git a/packages/ibc-testing/scripts/init_network.sh b/packages/ibc-testing/scripts/init_network.sh new file mode 100644 index 0000000..b927274 --- /dev/null +++ b/packages/ibc-testing/scripts/init_network.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# Setup both chains +GM=/root/.gm/bin/gm +$GM start + +sleep 5 + +# Setup Hermes clients +HERMES=./.hermes/bin/hermes +HERMES_CONFIG=./.hermes/config.toml +CHAIN1="archway-1" +CHAIN2="archway-2" + +$HERMES --config $HERMES_CONFIG create client --host-chain $CHAIN1 --reference-chain $CHAIN2 +$HERMES --config $HERMES_CONFIG create client --host-chain $CHAIN2 --reference-chain $CHAIN1 + +# Setup connection +$HERMES --config $HERMES_CONFIG create connection --a-chain $CHAIN1 --a-client 07-tendermint-0 --b-client 07-tendermint-0 + +# Setup channel-0 +$HERMES --config $HERMES_CONFIG create channel --a-chain $CHAIN1 --a-connection connection-0 --a-port transfer --b-port transfer + +# Run hermes +$HERMES --config $HERMES_CONFIG start >> $DIR/relayer.log + +tail -f /dev/null \ No newline at end of file diff --git a/packages/ibc-testing/scripts/relayer_config.toml b/packages/ibc-testing/scripts/relayer_config.toml new file mode 100644 index 0000000..3162b51 --- /dev/null +++ b/packages/ibc-testing/scripts/relayer_config.toml @@ -0,0 +1,185 @@ +[global] +log_level = "debug" + +[mode.clients] +enabled = true +refresh = true +misbehaviour = true + +[mode.connections] +enabled = true + +[mode.channels] +enabled = true + +[mode.packets] +enabled = true +clear_interval = 100 +clear_on_start = true +tx_confirmation = false +auto_register_counterparty_payee = false +clear_limit = 50 + +[mode.packets.ics20_max_memo_size] +enabled = true +size = 32768 + +[mode.packets.ics20_max_receiver_size] +enabled = true +size = 2048 + +[rest] +enabled = false +host = "127.0.0.1" +port = 3000 + +[telemetry] +enabled = false +host = "127.0.0.1" +port = 3001 + +[telemetry.buckets.latency_submitted] +start = 500 +end = 20000 +buckets = 10 + +[telemetry.buckets.latency_confirmed] +start = 1000 +end = 30000 +buckets = 10 + +[[chains]] +type = "CosmosSdk" +id = "archway-1" +rpc_addr = 'http://localhost:27030' +grpc_addr = 'http://localhost:27032' +rpc_timeout = "10s" +trusted_node = true +account_prefix = "archway" +key_name = "wallet" +key_store_type = "Test" +store_prefix = "ibc" +default_gas = 100000 +max_gas = 10000000 +gas_multiplier = 1.1 +max_msg_num = 30 +max_tx_size = 2097152 +max_grpc_decoding_size = 33554432 +query_packets_chunk_size = 50 +clock_drift = "5s" +max_block_time = "30s" +client_refresh_rate = "1/3" +ccv_consumer_chain = false +memo_prefix = "" +sequential_batch_tx = false +allow_ccq = true + +[chains.event_source] +mode = "pull" +interval = "500ms" +max_retries = 4 + +[chains.trust_threshold] +numerator = 2 +denominator = 3 + +[chains.gas_price] +price = 0.001 +denom = "stake" + +[chains.packet_filter] +policy = "allow" +list = [ + [ + "transfer", + "channel-0", + ], + [ + "ica*", + "*" + ], + [ + "wasm*", + "*", + ], +] + +[chains.packet_filter.min_fees] + +[chains.dynamic_gas_price] +enabled = false +multiplier = 1.1 +max = 0.6 + +[chains.address_type] +derivation = "cosmos" + +[chains.excluded_sequences] + +[[chains]] +type = "CosmosSdk" +id = "archway-2" +rpc_addr = 'http://localhost:27040' +grpc_addr = 'http://localhost:27042' +rpc_timeout = "10s" +trusted_node = true +account_prefix = "archway" +key_name = "" +key_store_type = "Test" +store_prefix = "ibc" +default_gas = 100000 +max_gas = 400000 +gas_multiplier = 1.1 +max_msg_num = 30 +max_tx_size = 180000 +max_grpc_decoding_size = 33554432 +query_packets_chunk_size = 50 +clock_drift = "5s" +max_block_time = "30s" +client_refresh_rate = "1/3" +ccv_consumer_chain = false +memo_prefix = "" +sequential_batch_tx = false +allow_ccq = true + +[chains.event_source] +mode = "pull" +interval = "500ms" +max_retries = 4 + +[chains.trust_threshold] +numerator = 2 +denominator = 3 + +[chains.gas_price] +price = 0.001 +denom = "stake" + +[chains.packet_filter] +policy = "allow" +list = [ + [ + "transfer", + "channel-0", + ], + [ + "ica*", + "*", + ], +] + +[chains.packet_filter.min_fees] + +[chains.dynamic_gas_price] +enabled = true +multiplier = 1.1 +max = 0.6 + +[chains.address_type] +derivation = "cosmos" + +[chains.excluded_sequences] + +[tracing_server] +enabled = false +port = 5555 diff --git a/packages/ibc-testing/src/chain/client.rs b/packages/ibc-testing/src/chain/client.rs new file mode 100644 index 0000000..fd7e3e5 --- /dev/null +++ b/packages/ibc-testing/src/chain/client.rs @@ -0,0 +1,67 @@ +use crate::{coin, ADDR_PREFIX, FAUCET_MNEMONIC}; +use archway_rpc::utils::Fee; +use archway_rpc::{ + from_mnemonic_phrase, from_mnemonic_random, Account, ArchwayClient, Bank, CosmosDerivationPath, + HttpClient, Id, Result, +}; + +pub struct ChainClient { + pub client: ArchwayClient, + pub id: Id, +} + +impl ChainClient { + /// Create a new chain client + pub async fn new(id: Id, path: &str) -> Result { + let mut client = ArchwayClient::new(HttpClient::new(path)?); + client.fee = Fee::from_amount_and_gas(coin(1).into(), 10000000000u64); + + Ok(Self { client, id }) + } + + /// Build and return the faucet account + pub async fn faucet_account(&self) -> Result> { + Account::new( + &self.client, + ADDR_PREFIX, + from_mnemonic_phrase(FAUCET_MNEMONIC, CosmosDerivationPath::default())?, + &self.id, + ) + .await + } + + /// Create a new account and fund it with native tokens + pub async fn new_account(&self, amount: u128) -> Result> { + let mut acc = Account::new( + &self.client, + ADDR_PREFIX, + from_mnemonic_random(CosmosDerivationPath::default())?.0, + &self.id, + ) + .await?; + + // Fund account if there is an amount + if amount > 0 { + self.fund_account(&acc, amount).await?; + // This account did not exist before funding, so we need to refresh its info + acc.reload(&self.client).await?; + } + + Ok(acc) + } + + /// Send tokens from faucet to the given address + pub async fn fund_account<'a>(&self, acc: &Account<'a>, amount: u128) -> Result<()> { + let mut faucet = self.faucet_account().await?; + + self.client + .send( + &faucet, + acc.prefixed_pubkey().unwrap().to_string(), + vec![coin(amount)], + )? + .poll(&mut faucet) + .await?; + Ok(()) + } +} diff --git a/packages/ibc-testing/src/chain/info.rs b/packages/ibc-testing/src/chain/info.rs new file mode 100644 index 0000000..f2994de --- /dev/null +++ b/packages/ibc-testing/src/chain/info.rs @@ -0,0 +1,16 @@ +#[derive(Copy, Clone)] +/// Used for keeping information for the docker exposed chains +pub(crate) struct ChainInfo<'a> { + pub(crate) id: &'a str, + pub(crate) rpc_port: usize, +} + +pub(crate) const CHAIN1: ChainInfo<'static> = ChainInfo { + id: "archway-1", + rpc_port: 27010, +}; + +pub(crate) const CHAIN2: ChainInfo<'static> = ChainInfo { + id: "archway-2", + rpc_port: 27020, +}; diff --git a/packages/ibc-testing/src/chain/mod.rs b/packages/ibc-testing/src/chain/mod.rs new file mode 100644 index 0000000..d8c806d --- /dev/null +++ b/packages/ibc-testing/src/chain/mod.rs @@ -0,0 +1,5 @@ +mod client; +mod info; + +pub use client::ChainClient; +pub(crate) use info::{CHAIN1, CHAIN2}; diff --git a/packages/ibc-testing/src/ibc_runtime.rs b/packages/ibc-testing/src/ibc_runtime.rs new file mode 100644 index 0000000..3d56004 --- /dev/null +++ b/packages/ibc-testing/src/ibc_runtime.rs @@ -0,0 +1,170 @@ +use crate::chain::*; +use archway_rpc::utils::Coin; +use archway_rpc::{CosmosRPC, Id}; +use bollard::container::{CreateContainerOptions, RemoveContainerOptions, StartContainerOptions}; +use bollard::models::{HostConfig, PortBinding}; +use bollard::Docker; +use std::collections::HashMap; +use std::time::Duration; + +pub const ADDR_PREFIX: &str = "archway"; +pub const TOKEN: &str = "stake"; +pub(crate) const FAUCET_MNEMONIC: &str = "any giant turtle pioneer frequent frown harvest ancient episode junior vocal rent shrimp icon idle echo suspect clean cage eternal sample post heavy enough"; + +pub fn coin(amount: u128) -> Coin { + Coin::new(TOKEN.to_string(), amount) +} + +#[derive(Default)] +/// Runtime builder, allows for rpc port routing +pub struct IbcRuntimeBuilder { + pub chain1_rpc_port: Option, + pub chain2_rpc_port: Option, +} + +impl IbcRuntimeBuilder { + pub fn new() -> Self { + Self::default() + } + + pub fn with_chain1_rpc_port(mut self, port: usize) -> Self { + self.chain1_rpc_port = Some(port); + self + } + + pub fn with_chain2_rpc_port(mut self, port: usize) -> Self { + self.chain2_rpc_port = Some(port); + self + } + + /// Create IBC runtime + pub async fn build<'a>(self, container_id: Option) -> archway_rpc::Result { + let docker = Docker::connect_with_defaults().unwrap(); + + let chain1_port_route = self.chain1_rpc_port.unwrap_or(CHAIN1.rpc_port); + let chain2_port_route = self.chain2_rpc_port.unwrap_or(CHAIN2.rpc_port); + + let container_id = if let Some(id) = container_id { + id + } else { + // Set up port bindings + let chain1_port = format!("{}/tcp", CHAIN1.rpc_port); + let chain2_port = format!("{}/tcp", CHAIN2.rpc_port); + let mut port_bindings = HashMap::new(); + port_bindings.insert( + chain1_port.clone(), + Some(vec![PortBinding { + host_ip: Some("0.0.0.0".to_string()), + host_port: Some(chain1_port_route.to_string()), + }]), + ); + port_bindings.insert( + chain2_port.clone(), + Some(vec![PortBinding { + host_ip: Some("0.0.0.0".to_string()), + host_port: Some(chain2_port_route.to_string()), + }]), + ); + + let config = bollard::container::Config { + image: Some("ibc-demo:latest"), + exposed_ports: Some(HashMap::from([ + (chain1_port.as_str(), HashMap::new()), + (chain2_port.as_str(), HashMap::new()), + ])), + host_config: Some(HostConfig { + port_bindings: Some(port_bindings), + ..Default::default() + }), + ..Default::default() + }; + + let container_id = docker + .create_container(None::>, config) + .await + .unwrap() + .id; + + // TODO: impl a healthcheck + docker + .start_container(&container_id, None::>) + .await + .unwrap(); + + container_id + }; + + let runtime = IbcRuntime { + chain1: ChainClient::new( + CHAIN1.id.parse::().unwrap(), + format!("http://0.0.0.0:{}", chain1_port_route).as_str(), + ) + .await?, + chain2: ChainClient::new( + CHAIN2.id.parse::().unwrap(), + format!("http://0.0.0.0:{}", chain2_port_route).as_str(), + ) + .await?, + docker, + container_id, + }; + + // Wait for both chains to be initialized + // sleep(Duration::from_secs(10)).await; + runtime + .chain1 + .client + .poll_for_first_block(Duration::from_secs(30)) + .await?; + runtime + .chain2 + .client + .poll_for_first_block(Duration::from_secs(30)) + .await?; + + Ok(runtime) + } +} + +/// Ibc runtime +pub struct IbcRuntime { + pub chain1: ChainClient, + pub chain2: ChainClient, + pub docker: Docker, + pub container_id: String, +} + +impl IbcRuntime { + /// Stops the docker container, important since you won't be able to run the same ports if you don't + pub async fn stop(&self) { + self.docker + .stop_container(&self.container_id, None) + .await + .unwrap(); + self.docker + .remove_container(&self.container_id, None::) + .await + .unwrap(); + } +} + +#[cfg(test)] +mod test { + use crate::IbcRuntimeBuilder; + + #[tokio::test] + async fn init() { + let runtime = IbcRuntimeBuilder::new() + .with_chain1_rpc_port(27015) + .with_chain2_rpc_port(27035) + .build(None) + .await + .unwrap(); + dbg!(&runtime.container_id); + + let acc = runtime.chain1.new_account(1000).await.unwrap(); + assert_ne!(acc.account_info.unwrap().number, 0); + + runtime.stop().await; + } +} diff --git a/packages/ibc-testing/src/lib.rs b/packages/ibc-testing/src/lib.rs new file mode 100644 index 0000000..71c988b --- /dev/null +++ b/packages/ibc-testing/src/lib.rs @@ -0,0 +1,186 @@ +mod chain; +mod ibc_runtime; + +pub use archway_rpc; +pub use ibc_runtime::*; + +#[cfg(test)] +mod tests { + use crate::IbcRuntimeBuilder; + use archway_rpc::proto::any::Any; + use archway_rpc::proto::cosmos::auth::v1beta1::BaseAccount; + use archway_rpc::proto::cosmos::staking::v1beta1::MsgDelegate; + use archway_rpc::proto::ibc::applications::interchain_accounts::v1::InterchainAccount; + use archway_rpc::proto::prost::{Message, Name}; + use archway_rpc::{Auth, Authz, Bank, Staking, Timestamp, Wasm}; + use ica_demo::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; + use std::time::Duration; + use tokio::time::sleep; + + #[tokio::test] + async fn demo() { + let wasm = std::fs::read("./../../artifacts/ica_demo.wasm").unwrap(); + + let runtime = IbcRuntimeBuilder::new().build(None).await.unwrap(); + + let mut deployer = runtime.chain1.new_account(100000).await.unwrap(); + + // Deploy cosmwasm + let store = runtime + .chain1 + .client + .store_code(&mut deployer, wasm, None) + .await + .unwrap(); + + let addr = runtime + .chain1 + .client + .instantiate_contract(&mut deployer, store, &InstantiateMsg {}, None, None, vec![]) + .await + .unwrap(); + + sleep(Duration::from_secs(120)).await; + + let res = runtime + .chain1 + .client + .execute_contract( + &deployer, + addr.clone(), + &ExecuteMsg::CreateICA { + connection_id: "connection-0".to_string(), + }, + vec![], + ) + .unwrap() + .poll(&mut deployer) + .await + .unwrap(); + + // dbg!(res.tx_result.events); + sleep(Duration::from_secs(60)).await; + + // Get interchain account + let mut ica = None; + let mut tries = 6; + while ica.is_none() && tries > 0 { + // Get new accounts + let res = runtime.chain2.client.accounts(None).await.unwrap(); + + for account in res.value.accounts { + if account + .type_url + .contains(InterchainAccount::>::NAME) + { + let any: Any>>> = + Any::decode(account.encode_to_vec().as_slice()).unwrap(); + dbg!(&account); + ica = Some(any.value.base_account.unwrap().address); + } + } + + tries -= 1; + } + let ica = ica.unwrap(); + + // Create user wallet + let mut user = runtime.chain2.new_account(10000).await.unwrap(); + + // TODO: give auth perms and fund with gas money + runtime + .chain2 + .client + .grant_authorization( + &user, + ica.clone(), + MsgDelegate::type_url(), + Some(Timestamp { + seconds: 2364210061, + nanos: 0, + }), + ) + .unwrap() + .poll(&mut user) + .await + .unwrap(); + + let balance = runtime + .chain2 + .client + .balance( + user.prefixed_pubkey().unwrap().to_string(), + "stake".to_string(), + ) + .await + .unwrap() + .value + .balance + .unwrap() + .amount; + + // Get validator + let res = runtime + .chain2 + .client + .validators(None, None) + .await + .unwrap() + .value + .validators; + let validator_addr = res.first().unwrap().operator_address.to_string(); + + // TODO: make auth command through smart contract + let res = runtime + .chain1 + .client + .execute_contract( + &deployer, + addr.clone(), + &ExecuteMsg::ExecuteICA { + connection_id: "connection-0".to_string(), + grantee: ica, + delegator: user.prefixed_pubkey().unwrap().to_string(), + validator: validator_addr, + }, + vec![], + ) + .unwrap() + .poll(&mut deployer) + .await + .unwrap(); + + sleep(Duration::from_secs(60)).await; + let new_balance = runtime + .chain2 + .client + .balance( + user.prefixed_pubkey().unwrap().to_string(), + "stake".to_string(), + ) + .await + .unwrap() + .value + .balance + .unwrap() + .amount; + println!("{balance} {new_balance}"); + assert_ne!(balance, new_balance); + + let res = runtime + .chain1 + .client + .query_contract( + addr.clone(), + &QueryMsg::IcaAccount { + connection_id: "connection-0".to_string(), + }, + ) + .await + .unwrap(); + + dbg!(&res); + + runtime.stop().await; + } +} From 18e49bbfa00b40466ae04cee846b6f6bedd63cd0 Mon Sep 17 00:00:00 2001 From: Guy Garcia Date: Thu, 17 Oct 2024 20:09:20 -0400 Subject: [PATCH 2/3] Fixed sudo messages --- Cargo.lock | 1 + artifacts/checksums.txt | 2 +- artifacts/checksums_intermediate.txt | 4 +- artifacts/ica_demo.wasm | Bin 197318 -> 206022 bytes contracts/ica-demo/schema/ica-demo.json | 44 +++++++++++---- contracts/ica-demo/schema/raw/execute.json | 44 +++++++++++---- contracts/ica-demo/src/contract.rs | 28 +++++++--- contracts/ica-demo/src/msg.rs | 59 ++++++--------------- contracts/ica-demo/src/state.rs | 17 ++++-- contracts/ica-demo/src/sudo.rs | 39 ++++++++------ packages/ibc-testing/Cargo.toml | 3 +- packages/ibc-testing/src/lib.rs | 26 +++++---- 12 files changed, 165 insertions(+), 102 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bf71dad..a1a3af5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1766,6 +1766,7 @@ version = "0.1.0" dependencies = [ "archway-rpc", "bollard", + "cosmwasm-std", "ica-demo", "tokio", ] diff --git a/artifacts/checksums.txt b/artifacts/checksums.txt index 116914c..20d22a0 100644 --- a/artifacts/checksums.txt +++ b/artifacts/checksums.txt @@ -1,2 +1,2 @@ 45e8a3d5f3fb7c5502178ffb306005e7e37e5dd476aaeb7d17e0b6d9d7cec106 demo_contract.wasm -66645797ac468c16c8c63406076dca4ad1e33c92cec319f4d478f959e234386e ica_demo.wasm +ca4a5ec2b18e6a15b554fcb4a495562087ab04d54c5531db2ecceb5b76c5da9d ica_demo.wasm diff --git a/artifacts/checksums_intermediate.txt b/artifacts/checksums_intermediate.txt index c60a5a9..25dabc1 100644 --- a/artifacts/checksums_intermediate.txt +++ b/artifacts/checksums_intermediate.txt @@ -1,2 +1,2 @@ -1231de5e7d029b40017a8f21e1b66449307cfa0f17978bf49d7aa8f603726860 /target/wasm32-unknown-unknown/release/demo_contract.wasm -6d022a64a7cd5180fc00aadc2d6bc5ef75acf34638245de41acc32a7951ddbb5 /target/wasm32-unknown-unknown/release/ica_demo.wasm +1231de5e7d029b40017a8f21e1b66449307cfa0f17978bf49d7aa8f603726860 target/wasm32-unknown-unknown/release/demo_contract.wasm +5388f188d031923a0f6a63f46c1ddd811c106aa55e6f22ee3fa38bf06c0ad87c target/wasm32-unknown-unknown/release/ica_demo.wasm diff --git a/artifacts/ica_demo.wasm b/artifacts/ica_demo.wasm index e6a6e2e569dab35feab5e7df7a6afdbd33cfeb4c..3ebb51ff0c4e6ae8719b8f8439830e1d51b169c7 100644 GIT binary patch literal 206022 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ξ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 literal 197318 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 diff --git a/contracts/ica-demo/schema/ica-demo.json b/contracts/ica-demo/schema/ica-demo.json index f226793..e88fa24 100644 --- a/contracts/ica-demo/schema/ica-demo.json +++ b/contracts/ica-demo/schema/ica-demo.json @@ -21,10 +21,21 @@ "create_i_c_a": { "type": "object", "required": [ - "connection_id" + "chain_name", + "connection_id", + "delegator_address" ], "properties": { + "chain_name": { + "description": "Chain name", + "type": "string" + }, "connection_id": { + "description": "Relayer connection ID, ideally this gets offloaded to another smart contract", + "type": "string" + }, + "delegator_address": { + "description": "User's address in the other chain", "type": "string" } }, @@ -36,28 +47,35 @@ { "type": "object", "required": [ - "execute_i_c_a" + "init_delegation" ], "properties": { - "execute_i_c_a": { + "init_delegation": { "type": "object", "required": [ + "amount", + "chain_name", "connection_id", - "delegator", - "grantee", "validator" ], "properties": { - "connection_id": { - "type": "string" + "amount": { + "description": "Staking amount", + "allOf": [ + { + "$ref": "#/definitions/Uint128" + } + ] }, - "delegator": { + "chain_name": { "type": "string" }, - "grantee": { + "connection_id": { + "description": "Relayer connection ID, this gets offloaded in the future", "type": "string" }, "validator": { + "description": "Validator address", "type": "string" } }, @@ -66,7 +84,13 @@ }, "additionalProperties": false } - ] + ], + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + } + } }, "query": { "$schema": "http://json-schema.org/draft-07/schema#", diff --git a/contracts/ica-demo/schema/raw/execute.json b/contracts/ica-demo/schema/raw/execute.json index 38fe46f..255897d 100644 --- a/contracts/ica-demo/schema/raw/execute.json +++ b/contracts/ica-demo/schema/raw/execute.json @@ -11,10 +11,21 @@ "create_i_c_a": { "type": "object", "required": [ - "connection_id" + "chain_name", + "connection_id", + "delegator_address" ], "properties": { + "chain_name": { + "description": "Chain name", + "type": "string" + }, "connection_id": { + "description": "Relayer connection ID, ideally this gets offloaded to another smart contract", + "type": "string" + }, + "delegator_address": { + "description": "User's address in the other chain", "type": "string" } }, @@ -26,28 +37,35 @@ { "type": "object", "required": [ - "execute_i_c_a" + "init_delegation" ], "properties": { - "execute_i_c_a": { + "init_delegation": { "type": "object", "required": [ + "amount", + "chain_name", "connection_id", - "delegator", - "grantee", "validator" ], "properties": { - "connection_id": { - "type": "string" + "amount": { + "description": "Staking amount", + "allOf": [ + { + "$ref": "#/definitions/Uint128" + } + ] }, - "delegator": { + "chain_name": { "type": "string" }, - "grantee": { + "connection_id": { + "description": "Relayer connection ID, this gets offloaded in the future", "type": "string" }, "validator": { + "description": "Validator address", "type": "string" } }, @@ -56,5 +74,11 @@ }, "additionalProperties": false } - ] + ], + "definitions": { + "Uint128": { + "description": "A thin wrapper around u128 that is using strings for JSON encoding/decoding, such that the full u128 range can be used for clients that convert JSON numbers to floats, like JavaScript and jq.\n\n# Examples\n\nUse `from` to create instances of this and `u128` to get the value out:\n\n``` # use cosmwasm_std::Uint128; let a = Uint128::from(123u128); assert_eq!(a.u128(), 123);\n\nlet b = Uint128::from(42u64); assert_eq!(b.u128(), 42);\n\nlet c = Uint128::from(70u32); assert_eq!(c.u128(), 70); ```", + "type": "string" + } + } } diff --git a/contracts/ica-demo/src/contract.rs b/contracts/ica-demo/src/contract.rs index 729c2b2..585c6a8 100644 --- a/contracts/ica-demo/src/contract.rs +++ b/contracts/ica-demo/src/contract.rs @@ -5,7 +5,7 @@ use cosmwasm_std::{to_json_binary, Binary, Deps, DepsMut, Env, MessageInfo, Resp use crate::error::ContractError; use crate::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; -use crate::state::ICA_HISTORY; +use crate::state::{ICA_ACCOUNTS, ICA_HISTORY, PENDING_ACCOUNT}; use crate::sudo::{execute_stake, register}; /* // version info for migration info @@ -32,8 +32,19 @@ pub fn execute( msg: ExecuteMsg, ) -> Result { match msg { - ExecuteMsg::CreateICA { connection_id } => { + ExecuteMsg::CreateICA { + chain_name, + delegator_address, + connection_id, + } => { let mut response = Response::new(); + + if PENDING_ACCOUNT.exists(deps.storage) { + return Err(ContractError::PendingIca {}); + } + + PENDING_ACCOUNT.save(deps.storage, &(chain_name, delegator_address))?; + register( env.contract.address.to_string(), connection_id, @@ -41,20 +52,23 @@ pub fn execute( )?; Ok(response) } - ExecuteMsg::ExecuteICA { + ExecuteMsg::InitDelegation { connection_id, - grantee, - delegator, + chain_name, validator, + amount, } => { let mut response = Response::new(); + let ica = ICA_ACCOUNTS.load(deps.storage, chain_name)?; + execute_stake( &env, connection_id, - grantee, - delegator, + ica.ica_host_address, + ica.delegator_address, validator, + amount, &mut response, )?; diff --git a/contracts/ica-demo/src/msg.rs b/contracts/ica-demo/src/msg.rs index f0bad93..3b6c775 100644 --- a/contracts/ica-demo/src/msg.rs +++ b/contracts/ica-demo/src/msg.rs @@ -1,6 +1,7 @@ use archway_proto::archway::cwerrors::v1::SudoError; +use archway_proto::archway::cwica::v1::IcaSuccess; use cosmwasm_schema::{cw_serde, QueryResponses}; -use cosmwasm_std::Binary; +use cosmwasm_std::{Binary, Uint128}; use schemars::JsonSchema; use serde::{Deserialize, Serialize}; @@ -10,22 +11,29 @@ pub struct InstantiateMsg {} #[cw_serde] pub enum ExecuteMsg { CreateICA { + /// Chain name + chain_name: String, + /// User's address in the other chain + delegator_address: String, + /// Relayer connection ID, ideally this gets offloaded to another smart contract connection_id: String, }, - ExecuteICA { + InitDelegation { + /// Relayer connection ID, this gets offloaded in the future connection_id: String, - grantee: String, - delegator: String, + chain_name: String, + /// Validator address validator: String, + /// Staking amount + amount: Uint128, }, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +#[allow(clippy::derive_partial_eq_without_eq)] +#[serde(rename_all = "snake_case")] pub enum SudoMsg { - Ica { - account_registered: Option, - tx_executed: Option, - }, + Ica(IcaSuccess), Error(SudoError), } @@ -35,38 +43,3 @@ pub enum QueryMsg { #[returns(bool)] IcaAccount { connection_id: String }, } - -#[cw_serde] -pub struct IcaMsg { - pub account_registered: Option, - pub tx_executed: Option, -} - -#[cw_serde] -pub struct AccountRegistered { - pub counterparty_address: String, -} - -#[cw_serde] -pub struct ICAResponse { - pub packet: RequestPacket, - pub data: Binary, -} - -#[cw_serde] -pub struct RequestPacket { - pub sequence: Option, - pub source_port: Option, - pub source_channel: Option, - pub destination_port: Option, - pub destination_channel: Option, - pub data: Option, - pub timeout_height: Option, - pub timeout_timestamp: Option, -} - -#[cw_serde] -pub struct RequestPacketTimeoutHeight { - pub revision_number: Option, - pub revision_height: Option, -} diff --git a/contracts/ica-demo/src/state.rs b/contracts/ica-demo/src/state.rs index 9c2b94b..b455d97 100644 --- a/contracts/ica-demo/src/state.rs +++ b/contracts/ica-demo/src/state.rs @@ -1,4 +1,15 @@ -use crate::msg::IcaMsg; -use cw_storage_plus::Item; +use archway_proto::archway::cwica::v1::IcaSuccess; +use cw_storage_plus::{Item, Map}; +use serde::{Deserialize, Serialize}; -pub const ICA_HISTORY: Item> = Item::new("ica_history"); +#[derive(Serialize, Deserialize)] +pub struct IcaAccount { + /// Ica address in the other chain + pub ica_host_address: String, + /// User's delegator address in the other chain + pub delegator_address: String, +} + +pub const PENDING_ACCOUNT: Item<(String, String)> = Item::new("pending"); +pub const ICA_ACCOUNTS: Map = Map::new("ica_accounts"); +pub const ICA_HISTORY: Item> = Item::new("ica_history"); diff --git a/contracts/ica-demo/src/sudo.rs b/contracts/ica-demo/src/sudo.rs index 1c3faf8..3d98e9f 100644 --- a/contracts/ica-demo/src/sudo.rs +++ b/contracts/ica-demo/src/sudo.rs @@ -1,15 +1,16 @@ -use crate::msg::{IcaMsg, SudoMsg}; -use crate::state::ICA_HISTORY; +use crate::msg::SudoMsg; +use crate::state::{IcaAccount, ICA_ACCOUNTS, ICA_HISTORY, PENDING_ACCOUNT}; use crate::ContractError; use archway_proto::any::Any; use archway_proto::archway::cwerrors::v1::SudoError; -use archway_proto::archway::cwica::v1::{MsgRegisterInterchainAccount, MsgSendTx}; +use archway_proto::archway::cwica::v1::{IcaSuccess, MsgRegisterInterchainAccount, MsgSendTx}; use archway_proto::cosmos::authz::v1beta1::MsgExec; use archway_proto::cosmos::base::v1beta1::Coin; use archway_proto::cosmos::staking::v1beta1::MsgDelegate; use archway_proto::prost::{Message, Name}; use cosmwasm_std::{ entry_point, to_json_binary, Attribute, Binary, CosmosMsg, DepsMut, Env, Response, SubMsg, + Uint128, }; // TODO: create a system based on handshakes @@ -45,6 +46,7 @@ pub fn execute_stake( grantee: String, delegator: String, validator: String, + amount: Uint128, response: &mut Response, ) -> Result<(), ContractError> { let execute_msg = MsgSendTx { @@ -57,7 +59,7 @@ pub fn execute_stake( validator_address: validator, amount: Some(Coin { denom: "stake".to_string(), - amount: "100".to_string(), + amount: amount.to_string(), }), })], })], @@ -76,25 +78,30 @@ pub fn execute_stake( #[cfg_attr(not(feature = "library"), entry_point)] pub fn sudo(deps: DepsMut, env: Env, msg: SudoMsg) -> Result { match msg { - SudoMsg::Ica { - account_registered, - tx_executed, - } => sudo_ica( - deps, - env, - IcaMsg { - account_registered, - tx_executed, - }, - ), + SudoMsg::Ica(msg) => sudo_ica(deps, env, msg), SudoMsg::Error(msg) => sudo_error(deps, env, msg), }?; Ok(Response::new()) } -pub fn sudo_ica(deps: DepsMut, env: Env, msg: IcaMsg) -> Result { +pub fn sudo_ica(deps: DepsMut, env: Env, msg: IcaSuccess) -> Result { let response = Response::new(); + if let Some(ica) = msg.account_registered.as_ref() { + if let Some((chain_name, delegator)) = PENDING_ACCOUNT.may_load(deps.storage)? { + ICA_ACCOUNTS.save( + deps.storage, + chain_name, + &IcaAccount { + ica_host_address: ica.counterparty_address.clone(), + delegator_address: delegator, + }, + )?; + } else { + return Err(ContractError::NoPendingIca {}); + } + } + ICA_HISTORY.update::<_, ContractError>(deps.storage, |mut history| { history.push(msg); Ok(history) diff --git a/packages/ibc-testing/Cargo.toml b/packages/ibc-testing/Cargo.toml index 696e45b..daab16d 100644 --- a/packages/ibc-testing/Cargo.toml +++ b/packages/ibc-testing/Cargo.toml @@ -11,4 +11,5 @@ tokio = "1.40.0" [dev-dependencies] #archway-proto = { path = "../../../arch3.rs/packages/proto", default-features = false, features = ["cosmwasm", "abstract-any"] } tokio = { version = "1.40.0", features = ["full", "test-util"] } -ica-demo = { path = "../../contracts/ica-demo", features = ["library"] } \ No newline at end of file +ica-demo = { path = "../../contracts/ica-demo", features = ["library"] } +cosmwasm-std = { version = "1.3.1" } diff --git a/packages/ibc-testing/src/lib.rs b/packages/ibc-testing/src/lib.rs index 71c988b..5bcfeea 100644 --- a/packages/ibc-testing/src/lib.rs +++ b/packages/ibc-testing/src/lib.rs @@ -13,6 +13,7 @@ mod tests { use archway_rpc::proto::ibc::applications::interchain_accounts::v1::InterchainAccount; use archway_rpc::proto::prost::{Message, Name}; use archway_rpc::{Auth, Authz, Bank, Staking, Timestamp, Wasm}; + use cosmwasm_std::Uint128; use ica_demo::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; use std::time::Duration; use tokio::time::sleep; @@ -42,6 +43,10 @@ mod tests { sleep(Duration::from_secs(120)).await; + // Create user wallet + let mut user = runtime.chain2.new_account(10000).await.unwrap(); + + // Create the ICA Account let res = runtime .chain1 .client @@ -49,6 +54,8 @@ mod tests { &deployer, addr.clone(), &ExecuteMsg::CreateICA { + chain_name: "archway-2".to_string(), + delegator_address: user.prefixed_pubkey().unwrap().to_string(), connection_id: "connection-0".to_string(), }, vec![], @@ -84,10 +91,7 @@ mod tests { } let ica = ica.unwrap(); - // Create user wallet - let mut user = runtime.chain2.new_account(10000).await.unwrap(); - - // TODO: give auth perms and fund with gas money + // Add delegate auth runtime .chain2 .client @@ -105,6 +109,7 @@ mod tests { .await .unwrap(); + // Get balance before staking let balance = runtime .chain2 .client @@ -130,18 +135,18 @@ mod tests { .validators; let validator_addr = res.first().unwrap().operator_address.to_string(); - // TODO: make auth command through smart contract + // Stake to validator let res = runtime .chain1 .client .execute_contract( &deployer, addr.clone(), - &ExecuteMsg::ExecuteICA { + &ExecuteMsg::InitDelegation { connection_id: "connection-0".to_string(), - grantee: ica, - delegator: user.prefixed_pubkey().unwrap().to_string(), + chain_name: "archway-2".to_string(), validator: validator_addr, + amount: Uint128::new(100), }, vec![], ) @@ -151,6 +156,8 @@ mod tests { .unwrap(); sleep(Duration::from_secs(60)).await; + + // Get new balance let new_balance = runtime .chain2 .client @@ -167,6 +174,7 @@ mod tests { println!("{balance} {new_balance}"); assert_ne!(balance, new_balance); + // Query TX history let res = runtime .chain1 .client @@ -179,7 +187,7 @@ mod tests { .await .unwrap(); - dbg!(&res); + // dbg!(&res); runtime.stop().await; } From a725dbd5d6ad2798de6dc0a31c29c1e1a6e8ea78 Mon Sep 17 00:00:00 2001 From: Guy Garcia Date: Wed, 6 Nov 2024 08:21:26 -0400 Subject: [PATCH 3/3] fixed dependencies --- Cargo.lock | 1427 +++++++++++++++++++++++++-------- contracts/ica-demo/Cargo.toml | 2 +- 2 files changed, 1109 insertions(+), 320 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a1a3af5..4489861 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,6 +28,18 @@ dependencies = [ "version_check", ] +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -37,6 +49,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -54,9 +72,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -69,43 +87,43 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "archway-bindings" @@ -114,7 +132,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f6cd100a318332b448d19f0c87306f2170d98221c6fce2e92288351bc26bf24" dependencies = [ "cosmwasm-schema 1.5.8", - "cosmwasm-std", + "cosmwasm-std 1.5.8", "schemars", "serde", "thiserror", @@ -123,29 +141,30 @@ dependencies = [ [[package]] name = "archway-proto" version = "0.2.0" -source = "git+https://github.com/archway-network/arch3.rs.git?rev=3551d45#3551d456e6eaa791aac0021f31b1f4c316fff24d" +source = "git+https://github.com/archway-network/arch3.rs.git?branch=feature/dependency-bump#2a50f05a803d9ca950d73e5b642562bff3c0c3b6" dependencies = [ - "pbjson", - "pbjson-types", - "prost", - "prost-types", + "pbjson 0.7.0", + "pbjson-types 0.7.0", + "prost 0.13.3", + "prost-types 0.13.3", "serde", - "tendermint-proto 0.36.0", - "tonic 0.11.0", + "tendermint-proto 0.40.0", + "tonic", ] [[package]] name = "archway-proto" version = "0.3.0" -source = "git+https://github.com/archway-network/arch3.rs.git?branch=fix/abstract-any-proto-encoding-fix#50952ecf06dc927344ca8354400bd910c15b67d2" -dependencies = [ - "pbjson", - "pbjson-types", - "prost", - "prost-types", +source = "git+https://github.com/archway-network/arch3.rs.git?branch=fix/abstract-any-proto-encoding-fix#ba5003bad0005b968531b9142b4d619426ac5226" +dependencies = [ + "cosmos-sdk-proto 0.26.0", + "ibc-proto", + "pbjson 0.7.0", + "pbjson-types 0.7.0", + "prost 0.13.3", + "prost-types 0.13.3", "serde", - "tendermint-proto 0.36.0", - "tonic 0.11.0", + "tonic", ] [[package]] @@ -162,19 +181,140 @@ name = "archway_test_tube" version = "0.1.0" dependencies = [ "archway-proto 0.2.0", - "base64 0.21.7", + "base64 0.22.1", "bindgen", "cosmwasm-schema 2.1.4", - "cosmwasm-std", + "cosmwasm-std 2.1.4", "cw1-whitelist", - "pbjson-types", - "prost", - "prost-types", + "pbjson-types 0.7.0", + "prost 0.13.3", + "prost-types 0.13.3", "serde", "serde_json", "test-tube", ] +[[package]] +name = "ark-bls12-381" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" +dependencies = [ + "ark-ec", + "ark-ff", + "ark-serialize", + "ark-std", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "rayon", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm", + "ark-ff-macros", + "ark-serialize", + "ark-std", + "derivative", + "digest 0.10.7", + "itertools 0.10.5", + "num-bigint", + "num-traits", + "paste", + "rayon", + "rustc_version", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive", + "ark-std", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand", + "rayon", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -194,7 +334,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -205,9 +345,15 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.4.0" @@ -216,18 +362,17 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "axum" -version = "0.6.20" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "504e3947307ac8326a5437504c517c4b56716c9d98fac0028c2acc7ca47d70ae" dependencies = [ "async-trait", "axum-core", - "bitflags 1.3.2", "bytes", "futures-util", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.31", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", "itoa", "matchit", "memchr", @@ -236,25 +381,28 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", - "sync_wrapper", - "tower", + "sync_wrapper 1.0.1", + "tower 0.5.1", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.3.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", "futures-util", - "http 0.2.12", - "http-body 0.4.6", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", "mime", + "pin-project-lite", "rustversion", + "sync_wrapper 1.0.1", "tower-layer", "tower-service", ] @@ -304,6 +452,12 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" +[[package]] +name = "bech32" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" + [[package]] name = "bindgen" version = "0.69.5" @@ -323,7 +477,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.79", + "syn 2.0.87", "which", ] @@ -381,6 +535,12 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56953345e39537a3e18bdaeba4cb0c58a78c1f61f361dc0fa7c5c7340ae87c5f" +[[package]] +name = "bnum" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e31ea183f6ee62ac8b8a8cf7feddd766317adfb13ff469de57ce033efd6a790" + [[package]] name = "bollard" version = "0.17.1" @@ -454,18 +614,18 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.2" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" dependencies = [ "serde", ] [[package]] name = "cc" -version = "1.1.30" +version = "1.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" +checksum = "baee610e9452a8f6f0a1b6194ec09ff9e2d85dea54432acdae41aa0761c95d70" dependencies = [ "shlex", ] @@ -542,7 +702,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -559,9 +719,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "console" @@ -645,9 +805,9 @@ dependencies = [ "clap", "cosmrs 0.16.0", "k256", - "pbjson-types", - "prost", - "prost-types", + "pbjson-types 0.6.0", + "prost 0.12.6", + "prost-types 0.12.6", "serde", "serde_json", "tendermint-rpc 0.35.0", @@ -657,34 +817,46 @@ dependencies = [ [[package]] name = "cosmos-sdk-proto" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32560304ab4c365791fd307282f76637213d8083c1a98490c35159cd67852237" +checksum = "82e23f6ab56d5f031cde05b8b82a5fefd3a1a223595c79e32317a97189e612bc" dependencies = [ - "prost", - "prost-types", - "tendermint-proto 0.34.1", + "prost 0.12.6", + "prost-types 0.12.6", + "tendermint-proto 0.35.0", ] [[package]] name = "cosmos-sdk-proto" -version = "0.21.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e23f6ab56d5f031cde05b8b82a5fefd3a1a223595c79e32317a97189e612bc" +checksum = "e8ce7f4797cdf5cd18be6555ff3f0a8d37023c2d60f3b2708895d601b85c1c46" dependencies = [ - "prost", - "prost-types", - "tendermint-proto 0.35.0", + "prost 0.13.3", + "tendermint-proto 0.39.1", +] + +[[package]] +name = "cosmos-sdk-proto" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c1a5856db92cd90dddc955bce308703d3519fb33ae3d0b8f3658e9cfd05c3f" +dependencies = [ + "informalsystems-pbjson", + "prost 0.13.3", + "serde", + "tendermint-proto 0.40.0", + "tonic", ] [[package]] name = "cosmrs" -version = "0.15.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47126f5364df9387b9d8559dcef62e99010e1d4098f39eb3f7ee4b5c254e40ea" +checksum = "5d184abb7b0039cc64f282dfa5b34165e4c5a7410ab46804636d53f4d09aee44" dependencies = [ "bip32", - "cosmos-sdk-proto 0.20.0", + "cosmos-sdk-proto 0.21.1", "ecdsa", "eyre", "k256", @@ -693,19 +865,20 @@ dependencies = [ "serde_json", "signature", "subtle-encoding", - "tendermint 0.34.1", - "tendermint-rpc 0.34.1", + "tendermint 0.35.0", + "tendermint-rpc 0.35.0", "thiserror", + "tokio", ] [[package]] name = "cosmrs" -version = "0.16.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d184abb7b0039cc64f282dfa5b34165e4c5a7410ab46804636d53f4d09aee44" +checksum = "09f90935b72d9fa65a2a784e09f25778637b7e88e9d6f87c717081470f7fa726" dependencies = [ "bip32", - "cosmos-sdk-proto 0.21.1", + "cosmos-sdk-proto 0.25.0", "ecdsa", "eyre", "k256", @@ -714,12 +887,17 @@ dependencies = [ "serde_json", "signature", "subtle-encoding", - "tendermint 0.35.0", - "tendermint-rpc 0.35.0", + "tendermint 0.39.1", + "tendermint-rpc 0.39.1", "thiserror", - "tokio", ] +[[package]] +name = "cosmwasm-core" +version = "2.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6ceb8624260d0d3a67c4e1a1d43fc7e9406720afbcb124521501dd138f90aa" + [[package]] name = "cosmwasm-crypto" version = "1.5.8" @@ -727,12 +905,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58535cbcd599b3c193e3967c8292fe1dbbb5de7c2a2d87380661091dd4744044" dependencies = [ "digest 0.10.7", - "ed25519-zebra", + "ed25519-zebra 3.1.0", "k256", "rand_core 0.6.4", "thiserror", ] +[[package]] +name = "cosmwasm-crypto" +version = "2.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4125381e5fd7fefe9f614640049648088015eca2b60d861465329a5d87dfa538" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff", + "ark-serialize", + "cosmwasm-core", + "digest 0.10.7", + "ecdsa", + "ed25519-zebra 4.0.3", + "k256", + "num-traits", + "p256", + "rand_core 0.6.4", + "rayon", + "sha2 0.10.8", + "thiserror", +] + [[package]] name = "cosmwasm-derive" version = "1.5.8" @@ -742,6 +943,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "cosmwasm-derive" +version = "2.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5658b1dc64e10b56ae7a449f678f96932a96f6cfad1769d608d1d1d656480a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "cosmwasm-schema" version = "1.5.8" @@ -787,7 +999,7 @@ checksum = "c8ef1b5835a65fcca3ab8b9a02b4f4dacc78e233a5c2f20b270efb9db0666d12" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -797,16 +1009,39 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c21fde95ccd20044a23c0ac6fd8c941f3e8c158169dc94b5aa6491a2d9551a8d" dependencies = [ "base64 0.21.7", - "bech32", - "bnum", - "cosmwasm-crypto", - "cosmwasm-derive", + "bech32 0.9.1", + "bnum 0.10.0", + "cosmwasm-crypto 1.5.8", + "cosmwasm-derive 1.5.8", "derivative", "forward_ref", "hex", "schemars", "serde", - "serde-json-wasm", + "serde-json-wasm 0.5.2", + "sha2 0.10.8", + "static_assertions", + "thiserror", +] + +[[package]] +name = "cosmwasm-std" +version = "2.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70eb7ab0c1e99dd6207496963ba2a457c4128ac9ad9c72a83f8d9808542b849b" +dependencies = [ + "base64 0.22.1", + "bech32 0.11.0", + "bnum 0.11.0", + "cosmwasm-core", + "cosmwasm-crypto 2.1.4", + "cosmwasm-derive 2.1.4", + "derive_more", + "hex", + "rand_core 0.6.4", + "schemars", + "serde", + "serde-json-wasm 1.0.1", "sha2 0.10.8", "static_assertions", "thiserror", @@ -818,7 +1053,7 @@ version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66de2ab9db04757bcedef2b5984fbe536903ada4a8a9766717a4a71197ef34f6" dependencies = [ - "cosmwasm-std", + "cosmwasm-std 1.5.8", "serde", ] @@ -840,6 +1075,31 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + [[package]] name = "crypto-bigint" version = "0.5.5" @@ -875,6 +1135,33 @@ dependencies = [ "zeroize", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "curve25519-dalek-ng" version = "4.1.1" @@ -894,7 +1181,7 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5ff29294ee99373e2cd5fd21786a3c0ced99a52fec2ca347d565489c61b723c" dependencies = [ - "cosmwasm-std", + "cosmwasm-std 1.5.8", "schemars", "serde", ] @@ -906,7 +1193,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c4a657e5caacc3a0d00ee96ca8618745d050b8f757c709babafb81208d4239c" dependencies = [ "cosmwasm-schema 1.5.8", - "cosmwasm-std", + "cosmwasm-std 1.5.8", "cw2", "schemars", "semver", @@ -921,7 +1208,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1605722190afd93bfea6384b88224d1cfe50ebf70d2e10641535da79fa70e83" dependencies = [ "cosmwasm-schema 1.5.8", - "cosmwasm-std", + "cosmwasm-std 1.5.8", "schemars", "serde", ] @@ -933,7 +1220,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81bb3e9dc87f4ff26547f4e27e0ba3c82034372f21b2f55527fb52b542637d8d" dependencies = [ "cosmwasm-schema 1.5.8", - "cosmwasm-std", + "cosmwasm-std 1.5.8", "cw-storage-plus", "cw-utils", "cw1", @@ -950,7 +1237,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6c120b24fbbf5c3bedebb97f2cc85fbfa1c3287e09223428e7e597b5293c1fa" dependencies = [ "cosmwasm-schema 1.5.8", - "cosmwasm-std", + "cosmwasm-std 1.5.8", "cw-storage-plus", "schemars", "semver", @@ -963,7 +1250,7 @@ name = "demo_contract" version = "0.1.0" dependencies = [ "cosmwasm-schema 1.5.8", - "cosmwasm-std", + "cosmwasm-std 1.5.8", "cw-storage-plus", "schemars", "serde", @@ -1001,6 +1288,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "unicode-xid", +] + [[package]] name = "digest" version = "0.9.0" @@ -1043,6 +1351,17 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "dlib" version = "0.5.2" @@ -1090,7 +1409,7 @@ version = "0.1.0" dependencies = [ "archway_test_tube", "console", - "cosmwasm-std", + "cosmwasm-std 2.1.4", "indicatif", "plotters", "serde", @@ -1127,7 +1446,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" dependencies = [ - "curve25519-dalek", + "curve25519-dalek 3.2.0", "hashbrown 0.12.3", "hex", "rand_core 0.6.4", @@ -1136,6 +1455,21 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ed25519-zebra" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" +dependencies = [ + "curve25519-dalek 4.1.3", + "ed25519", + "hashbrown 0.14.5", + "hex", + "rand_core 0.6.4", + "sha2 0.10.8", + "zeroize", +] + [[package]] name = "either" version = "1.13.0" @@ -1169,9 +1503,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -1210,9 +1544,9 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" +checksum = "07c6f4c64c1d33a3111c4466f7365ebdcc37c5bd1ea0d62aae2e3d722aacbedb" dependencies = [ "simd-adler32", ] @@ -1227,6 +1561,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + [[package]] name = "fixedbitset" version = "0.4.2" @@ -1308,7 +1648,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1387,7 +1727,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -1493,20 +1833,58 @@ dependencies = [ "tracing", ] +[[package]] +name = "h2" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.1.0", + "indexmap 2.6.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash", + "ahash 0.7.8", ] [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.11", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash 0.8.11", + "allocator-api2", +] + +[[package]] +name = "hashbrown" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" [[package]] name = "heck" @@ -1628,7 +2006,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "httparse", @@ -1651,6 +2029,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", + "h2 0.4.6", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -1693,21 +2072,22 @@ dependencies = [ [[package]] name = "hyper-timeout" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 0.14.31", + "hyper 1.5.0", + "hyper-util", "pin-project-lite", "tokio", - "tokio-io-timeout", + "tower-service", ] [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", @@ -1760,13 +2140,32 @@ dependencies = [ "cc", ] +[[package]] +name = "ibc-proto" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07b9db9a33cb15d6eb56105cd9b70db016e56bcae74a8adaa1627e5b24d1f1d2" +dependencies = [ + "base64 0.22.1", + "bytes", + "cosmos-sdk-proto 0.26.0", + "flex-error", + "ics23", + "informalsystems-pbjson", + "prost 0.13.3", + "serde", + "subtle-encoding", + "tendermint-proto 0.40.0", + "tonic", +] + [[package]] name = "ibc-testing" version = "0.1.0" dependencies = [ "archway-rpc", "bollard", - "cosmwasm-std", + "cosmwasm-std 1.5.8", "ica-demo", "tokio", ] @@ -1778,24 +2177,167 @@ dependencies = [ "archway-bindings", "archway-proto 0.3.0", "cosmwasm-schema 1.5.8", - "cosmwasm-std", + "cosmwasm-std 1.5.8", "cosmwasm-storage", "cw-storage-plus", "cw2", - "pbjson-types", + "pbjson-types 0.6.0", "schemars", "serde", "thiserror", ] +[[package]] +name = "ics23" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b17f1a5bd7d12ad30a21445cfa5f52fd7651cb3243ba866f9916b1ec112f12" +dependencies = [ + "anyhow", + "bytes", + "hex", + "informalsystems-pbjson", + "prost 0.13.3", + "serde", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -1836,7 +2378,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.1", "serde", ] @@ -1853,6 +2395,16 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "informalsystems-pbjson" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa4a0980c8379295100d70854354e78df2ee1c6ca0f96ffe89afeb3140e3a3d" +dependencies = [ + "base64 0.21.7", + "serde", +] + [[package]] name = "instant" version = "0.1.13" @@ -1874,6 +2426,15 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.11.0" @@ -1892,6 +2453,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -1941,9 +2511,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.159" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libloading" @@ -1971,6 +2541,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" + [[package]] name = "lock_api" version = "0.4.12" @@ -2049,6 +2625,16 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-conv" version = "0.1.0" @@ -2057,24 +2643,22 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-derive" -version = "0.3.3" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.87", ] [[package]] -name = "num-derive" -version = "0.4.2" +name = "num-integer" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.79", + "num-traits", ] [[package]] @@ -2125,6 +2709,18 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2 0.10.8", +] + [[package]] name = "parking_lot" version = "0.12.3" @@ -2183,6 +2779,16 @@ dependencies = [ "serde", ] +[[package]] +name = "pbjson" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e6349fa080353f4a597daffd05cb81572a9c031a6d4fff7e504947496fcc68" +dependencies = [ + "base64 0.21.7", + "serde", +] + [[package]] name = "pbjson-build" version = "0.6.2" @@ -2191,8 +2797,20 @@ checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735" dependencies = [ "heck 0.4.1", "itertools 0.11.0", - "prost", - "prost-types", + "prost 0.12.6", + "prost-types 0.12.6", +] + +[[package]] +name = "pbjson-build" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eea3058763d6e656105d1403cb04e0a41b7bbac6362d413e7c33be0c32279c9" +dependencies = [ + "heck 0.5.0", + "itertools 0.13.0", + "prost 0.13.3", + "prost-types 0.13.3", ] [[package]] @@ -2203,10 +2821,25 @@ checksum = "18f596653ba4ac51bdecbb4ef6773bc7f56042dc13927910de1684ad3d32aa12" dependencies = [ "bytes", "chrono", - "pbjson", - "pbjson-build", - "prost", - "prost-build", + "pbjson 0.6.0", + "pbjson-build 0.6.2", + "prost 0.12.6", + "prost-build 0.12.6", + "serde", +] + +[[package]] +name = "pbjson-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e54e5e7bfb1652f95bc361d76f3c780d8e526b134b85417e774166ee941f0887" +dependencies = [ + "bytes", + "chrono", + "pbjson 0.7.0", + "pbjson-build 0.7.0", + "prost 0.13.3", + "prost-build 0.13.3", "serde", ] @@ -2265,29 +2898,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf123a161dde1e524adf36f90bc5d8d3462824a9c43553ad07a8183161189ec" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.6" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -2393,19 +3026,28 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.79", + "syn 2.0.87", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", ] [[package]] name = "proc-macro2" -version = "1.0.88" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -2417,7 +3059,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.12.6", +] + +[[package]] +name = "prost" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +dependencies = [ + "bytes", + "prost-derive 0.13.3", ] [[package]] @@ -2434,10 +3086,31 @@ dependencies = [ "once_cell", "petgraph", "prettyplease", - "prost", - "prost-types", + "prost 0.12.6", + "prost-types 0.12.6", + "regex", + "syn 2.0.87", + "tempfile", +] + +[[package]] +name = "prost-build" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" +dependencies = [ + "bytes", + "heck 0.5.0", + "itertools 0.13.0", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost 0.13.3", + "prost-types 0.13.3", "regex", - "syn 2.0.79", + "syn 2.0.87", "tempfile", ] @@ -2451,7 +3124,20 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[package]] +name = "prost-derive" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +dependencies = [ + "anyhow", + "itertools 0.13.0", + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] @@ -2460,7 +3146,16 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" dependencies = [ - "prost", + "prost 0.12.6", +] + +[[package]] +name = "prost-types" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" +dependencies = [ + "prost 0.13.3", ] [[package]] @@ -2508,6 +3203,26 @@ dependencies = [ "getrandom", ] +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + [[package]] name = "redox_syscall" version = "0.5.7" @@ -2530,9 +3245,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -2568,7 +3283,7 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2", + "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", "hyper 0.14.31", @@ -2586,7 +3301,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", + "sync_wrapper 0.1.2", "system-configuration", "tokio", "tokio-rustls", @@ -2655,9 +3370,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", @@ -2760,7 +3475,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2824,9 +3539,9 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -2840,6 +3555,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde-json-wasm" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05da0d153dd4595bdffd5099dc0e9ce425b205ee648eb93437ff7302af8c9a5" +dependencies = [ + "serde", +] + [[package]] name = "serde_bytes" version = "0.11.15" @@ -2851,13 +3575,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.210" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -2868,14 +3592,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.128" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -2891,7 +3615,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3028,6 +3752,12 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -3074,9 +3804,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -3089,6 +3819,23 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -3125,9 +3872,9 @@ dependencies = [ [[package]] name = "tendermint" -version = "0.34.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15ab8f0a25d0d2ad49ac615da054d6a76aa6603ff95f7d18bafdd34450a1a04b" +checksum = "43f8a10105d0a7c4af0a242e23ed5a12519afe5cc0e68419da441bb5981a6802" dependencies = [ "bytes", "digest 0.10.7", @@ -3138,8 +3885,8 @@ dependencies = [ "k256", "num-traits", "once_cell", - "prost", - "prost-types", + "prost 0.12.6", + "prost-types 0.12.6", "ripemd", "serde", "serde_bytes", @@ -3149,16 +3896,16 @@ dependencies = [ "signature", "subtle", "subtle-encoding", - "tendermint-proto 0.34.1", + "tendermint-proto 0.35.0", "time", "zeroize", ] [[package]] name = "tendermint" -version = "0.35.0" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43f8a10105d0a7c4af0a242e23ed5a12519afe5cc0e68419da441bb5981a6802" +checksum = "2f3afea7809ffaaf1e5d9c3c9997cb3a834df7e94fbfab2fad2bc4577f1cde41" dependencies = [ "bytes", "digest 0.10.7", @@ -3169,8 +3916,7 @@ dependencies = [ "k256", "num-traits", "once_cell", - "prost", - "prost-types", + "prost 0.13.3", "ripemd", "serde", "serde_bytes", @@ -3180,51 +3926,51 @@ dependencies = [ "signature", "subtle", "subtle-encoding", - "tendermint-proto 0.35.0", + "tendermint-proto 0.39.1", "time", "zeroize", ] [[package]] name = "tendermint-config" -version = "0.34.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1a02da769166e2052cd537b1a97c78017632c2d9e19266367b27e73910434fc" +checksum = "ac6bf36c613bb113737c333e3c1d6dfd3c99f8ac679e84feb58dd6456d77fb2e" dependencies = [ "flex-error", "serde", "serde_json", - "tendermint 0.34.1", - "toml 0.5.11", + "tendermint 0.35.0", + "toml", "url", ] [[package]] name = "tendermint-config" -version = "0.35.0" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac6bf36c613bb113737c333e3c1d6dfd3c99f8ac679e84feb58dd6456d77fb2e" +checksum = "d8add7b85b0282e5901521f78fe441956ac1e2752452f4e1f2c0ce7e1f10d485" dependencies = [ "flex-error", "serde", "serde_json", - "tendermint 0.35.0", - "toml 0.8.19", + "tendermint 0.39.1", + "toml", "url", ] [[package]] name = "tendermint-proto" -version = "0.34.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b797dd3d2beaaee91d2f065e7bdf239dc8d80bba4a183a288bc1279dd5a69a1e" +checksum = "ff525d5540a9fc535c38dc0d92a98da3ee36fcdfbda99cecb9f3cce5cd4d41d7" dependencies = [ "bytes", "flex-error", - "num-derive 0.3.3", + "num-derive", "num-traits", - "prost", - "prost-types", + "prost 0.12.6", + "prost-types 0.12.6", "serde", "serde_bytes", "subtle-encoding", @@ -3233,16 +3979,13 @@ dependencies = [ [[package]] name = "tendermint-proto" -version = "0.35.0" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff525d5540a9fc535c38dc0d92a98da3ee36fcdfbda99cecb9f3cce5cd4d41d7" +checksum = "bf3abf34ecf33125621519e9952688e7a59a98232d51538037ba21fbe526a802" dependencies = [ "bytes", "flex-error", - "num-derive 0.4.2", - "num-traits", - "prost", - "prost-types", + "prost 0.13.3", "serde", "serde_bytes", "subtle-encoding", @@ -3251,26 +3994,25 @@ dependencies = [ [[package]] name = "tendermint-proto" -version = "0.36.0" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f193d04afde6592c20fd70788a10b8cb3823091c07456db70d8a93f5fb99c1" +checksum = "c81ba1b023ec00763c3bc4f4376c67c0047f185cccf95c416c7a2f16272c4cbb" dependencies = [ "bytes", "flex-error", - "prost", - "prost-types", + "prost 0.13.3", "serde", "serde_bytes", "subtle-encoding", "time", - "tonic 0.10.2", + "tonic", ] [[package]] name = "tendermint-rpc" -version = "0.34.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71afae8bb5f6b14ed48d4e1316a643b6c2c3cbad114f510be77b4ed20b7b3e42" +checksum = "2d8fe61b1772cd50038bdeeadf53773bb37a09e639dd8e6d996668fd220ddb29" dependencies = [ "async-trait", "bytes", @@ -3287,9 +4029,9 @@ dependencies = [ "serde_json", "subtle", "subtle-encoding", - "tendermint 0.34.1", - "tendermint-config 0.34.1", - "tendermint-proto 0.34.1", + "tendermint 0.35.0", + "tendermint-config 0.35.0", + "tendermint-proto 0.35.0", "thiserror", "time", "tokio", @@ -3301,9 +4043,9 @@ dependencies = [ [[package]] name = "tendermint-rpc" -version = "0.35.0" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d8fe61b1772cd50038bdeeadf53773bb37a09e639dd8e6d996668fd220ddb29" +checksum = "9693f42544bf3b41be3cbbfa418650c86e137fb8f5a57981659a84b677721ecf" dependencies = [ "async-trait", "bytes", @@ -3320,9 +4062,9 @@ dependencies = [ "serde_json", "subtle", "subtle-encoding", - "tendermint 0.35.0", - "tendermint-config 0.35.0", - "tendermint-proto 0.35.0", + "tendermint 0.39.1", + "tendermint-config 0.39.1", + "tendermint-proto 0.39.1", "thiserror", "time", "tokio", @@ -3334,14 +4076,13 @@ dependencies = [ [[package]] name = "test-tube" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "804bb9bda992b6cda6f883e7973cb999d4da90d21257fb918d6a693407148681" +version = "0.8.0" +source = "git+https://github.com/osmosis-labs/test-tube.git?rev=9688c23#9688c2336b1c1afe3bee33aa23c8b338a180a3a4" dependencies = [ - "base64 0.21.7", - "cosmrs 0.15.0", - "cosmwasm-std", - "prost", + "base64 0.22.1", + "cosmrs 0.20.0", + "cosmwasm-std 2.1.4", + "prost 0.13.3", "serde", "serde_json", "thiserror", @@ -3349,22 +4090,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3399,25 +4140,20 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.8.0" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ - "tinyvec_macros", + "displaydoc", + "zerovec", ] -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" -version = "1.40.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -3431,16 +4167,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-macros" version = "2.4.0" @@ -3449,7 +4175,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3486,15 +4212,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.8.19" @@ -3531,53 +4248,49 @@ dependencies = [ [[package]] name = "tonic" -version = "0.10.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", "axum", - "base64 0.21.7", + "base64 0.22.1", "bytes", - "h2", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.31", + "h2 0.4.6", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.5.0", "hyper-timeout", + "hyper-util", "percent-encoding", "pin-project", - "prost", + "prost 0.13.3", + "socket2", "tokio", "tokio-stream", - "tower", + "tower 0.4.13", "tower-layer", "tower-service", "tracing", ] [[package]] -name = "tonic" -version = "0.11.0" +name = "tower" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ - "async-stream", - "async-trait", - "axum", - "base64 0.21.7", - "bytes", - "h2", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.31", - "hyper-timeout", - "percent-encoding", + "futures-core", + "futures-util", + "indexmap 1.9.3", "pin-project", - "prost", + "pin-project-lite", + "rand", + "slab", "tokio", - "tokio-stream", - "tower", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -3585,22 +4298,16 @@ dependencies = [ [[package]] name = "tower" -version = "0.4.13" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" dependencies = [ "futures-core", "futures-util", - "indexmap 1.9.3", - "pin-project", "pin-project-lite", - "rand", - "slab", - "tokio", - "tokio-util", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", - "tracing", ] [[package]] @@ -3634,7 +4341,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", ] [[package]] @@ -3664,33 +4371,24 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] - [[package]] name = "unicode-width" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "untrusted" version = "0.9.0" @@ -3699,15 +4397,27 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -3773,7 +4483,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -3807,7 +4517,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4062,6 +4772,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "yeslogic-fontconfig-sys" version = "6.0.0" @@ -4073,6 +4795,30 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + [[package]] name = "zerocopy" version = "0.7.35" @@ -4091,7 +4837,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", ] [[package]] @@ -4111,5 +4878,27 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.87", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", ] diff --git a/contracts/ica-demo/Cargo.toml b/contracts/ica-demo/Cargo.toml index e28b382..e3b4852 100644 --- a/contracts/ica-demo/Cargo.toml +++ b/contracts/ica-demo/Cargo.toml @@ -53,4 +53,4 @@ cw2 = "1.1.0" schemars = "0.8.12" serde = { version = "1.0.183", default-features = false, features = ["derive"] } thiserror = "1.0.44" -archway-proto = { git = "https://github.com/archway-network/arch3.rs.git", branch = "fix/abstract-any-proto-encoding-fix", default-features = false, features = ["cosmwasm", "abstract-any"] } +archway-proto = { git = "https://github.com/archway-network/arch3.rs.git", branch = "fix/abstract-any-proto-encoding-fix", default-features = false, features = ["abstract-any"] }