From 229add491f8a2f3ab6b219cda7063f98b549a62f Mon Sep 17 00:00:00 2001 From: Sean Chen Date: Tue, 6 Aug 2024 19:06:48 -0500 Subject: [PATCH 1/2] Move CosmWasm dependencies to new `cosmwasm` workspace (#1302) * Move cw dependencies to cosmwasm/ibc-clients directory * Move cosmwasm tests to `cosmwasm` workspace * Fix some formatting nits * Format cargo.toml files * Add needed workspace dependencies * Add derive_more dep back to root Cargo.toml * Format cargo.toml files * Updates to Cargo.toml files * Format cargo.toml files * Add needed test imports * Resolve testing dependencies * Fix Makefile `build-tendermint-cw` rule * fix: remove redundant deps * fix: makefile * fix: update workflows * fix: refactor workflows to include cosmwasm lint checks * fix: include cosmwasm check-docs in CI * fix: include cosmwasm tests in CI + streamline jobs * fix: update READMEs * nitpicking * chore: add changelog * fix: taplo * nit: readme paths --------- Co-authored-by: Farhad Shabani --- ...ve-cosmwasm-impls-to-separate-workspace.md | 3 + .github/workflows/code-quality.yaml | 27 - .github/workflows/coverage.yaml | 4 +- .github/workflows/cw-check.yaml | 5 +- .github/workflows/no-std.yaml | 3 +- .github/workflows/rust.yaml | 105 +- .github/workflows/upload-cw-clients.yaml | 15 +- .gitignore | 2 +- Cargo.toml | 13 +- Makefile | 37 +- README.md | 1 + clippy.toml | 2 +- cosmwasm/Cargo.lock | 3141 +++++++++++++++++ cosmwasm/Cargo.toml | 38 + cosmwasm/Makefile | 37 + cosmwasm/README.md | 31 + .../ibc-clients}/cw-context/Cargo.toml | 4 +- .../ibc-clients}/cw-context/src/api.rs | 0 .../cw-context/src/context/client_ctx.rs | 0 .../cw-context/src/context/custom_ctx.rs | 0 .../cw-context/src/context/mod.rs | 0 .../ibc-clients}/cw-context/src/handlers.rs | 0 .../ibc-clients}/cw-context/src/lib.rs | 0 .../cw-context/src/types/error.rs | 0 .../cw-context/src/types/helper.rs | 0 .../ibc-clients}/cw-context/src/types/mod.rs | 0 .../ibc-clients}/cw-context/src/types/msgs.rs | 0 .../cw-context/src/types/response.rs | 0 .../cw-context/src/utils/codec.rs | 0 .../ibc-clients}/cw-context/src/utils/mod.rs | 0 .../ibc-clients/ics07-tendermint}/Cargo.toml | 11 +- .../ibc-clients/ics07-tendermint}/README.md | 0 .../ics07-tendermint}/src/client_type.rs | 0 .../ics07-tendermint}/src/entrypoint.rs | 0 .../ibc-clients/ics07-tendermint}/src/lib.rs | 3 + .../ics07-tendermint/src/tests}/fixture.rs | 18 +- .../ics07-tendermint/src/tests}/helper.rs | 15 +- .../ics07-tendermint/src/tests}/mod.rs | 14 +- ibc-clients/README.md | 22 +- tests-integration/Cargo.toml | 3 - tests-integration/tests/mod.rs | 1 - 41 files changed, 3364 insertions(+), 191 deletions(-) create mode 100644 .changelog/unreleased/improvements/1295-move-cosmwasm-impls-to-separate-workspace.md delete mode 100644 .github/workflows/code-quality.yaml create mode 100644 cosmwasm/Cargo.lock create mode 100644 cosmwasm/Cargo.toml create mode 100644 cosmwasm/Makefile create mode 100644 cosmwasm/README.md rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/Cargo.toml (92%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/api.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/context/client_ctx.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/context/custom_ctx.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/context/mod.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/handlers.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/lib.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/types/error.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/types/helper.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/types/mod.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/types/msgs.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/types/response.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/utils/codec.rs (100%) rename {ibc-clients => cosmwasm/ibc-clients}/cw-context/src/utils/mod.rs (100%) rename {ibc-clients/ics07-tendermint/cw-contract => cosmwasm/ibc-clients/ics07-tendermint}/Cargo.toml (60%) rename {ibc-clients/ics07-tendermint/cw-contract => cosmwasm/ibc-clients/ics07-tendermint}/README.md (100%) rename {ibc-clients/ics07-tendermint/cw-contract => cosmwasm/ibc-clients/ics07-tendermint}/src/client_type.rs (100%) rename {ibc-clients/ics07-tendermint/cw-contract => cosmwasm/ibc-clients/ics07-tendermint}/src/entrypoint.rs (100%) rename {ibc-clients/ics07-tendermint/cw-contract => cosmwasm/ibc-clients/ics07-tendermint}/src/lib.rs (93%) rename {tests-integration/tests/cosmwasm => cosmwasm/ibc-clients/ics07-tendermint/src/tests}/fixture.rs (93%) rename {tests-integration/tests/cosmwasm => cosmwasm/ibc-clients/ics07-tendermint/src/tests}/helper.rs (68%) rename {tests-integration/tests/cosmwasm => cosmwasm/ibc-clients/ics07-tendermint/src/tests}/mod.rs (97%) diff --git a/.changelog/unreleased/improvements/1295-move-cosmwasm-impls-to-separate-workspace.md b/.changelog/unreleased/improvements/1295-move-cosmwasm-impls-to-separate-workspace.md new file mode 100644 index 0000000000..ea7738915b --- /dev/null +++ b/.changelog/unreleased/improvements/1295-move-cosmwasm-impls-to-separate-workspace.md @@ -0,0 +1,3 @@ +- [cosmwasm] Move CosmWasm implementations to a separate workspace under +`cosmwasm` directory to simplify dependency management and decouple `ibc-rs` +MSRV from `cosmwasm`. ([\#1295](https://github.com/cosmos/ibc-rs/issue/1295)) diff --git a/.github/workflows/code-quality.yaml b/.github/workflows/code-quality.yaml deleted file mode 100644 index 18225ae048..0000000000 --- a/.github/workflows/code-quality.yaml +++ /dev/null @@ -1,27 +0,0 @@ -name: Code Quality Checks -on: - pull_request: - -jobs: - code-quality: - runs-on: ubuntu-latest - env: - RIPGREP_VERSION: 14.1.0 - FD_VERSION: 9.0.0 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Whitestapace lints - run: bash ci/code-quality/whitespace-lints.sh - - - name: Spell Check with Typos - uses: crate-ci/typos@master - with: - config: ./.github/typos.toml - - - uses: actions-rust-lang/setup-rust-toolchain@v1 - - uses: baptiste0928/cargo-install@v3 - with: - crate: taplo-cli - - run: taplo fmt --check diff --git a/.github/workflows/coverage.yaml b/.github/workflows/coverage.yaml index 60346fe1fa..953c99280c 100644 --- a/.github/workflows/coverage.yaml +++ b/.github/workflows/coverage.yaml @@ -5,8 +5,9 @@ on: - .codecov.yaml - .github/workflows/rust.yaml - .github/workflows/coverage.yaml - - Cargo.toml + - '*.toml' - ci/** + - cosmwasm/** - ibc/** - ibc-core/** - ibc-apps/** @@ -16,6 +17,7 @@ on: - ibc-query/** - ibc-testkit/** - ibc-derive/** + - tests-integration/** push: branches: - main diff --git a/.github/workflows/cw-check.yaml b/.github/workflows/cw-check.yaml index b0a66d4e49..b5f4653d07 100644 --- a/.github/workflows/cw-check.yaml +++ b/.github/workflows/cw-check.yaml @@ -3,10 +3,9 @@ on: pull_request: paths: - .github/workflows/cw-check.yaml - - Cargo.toml + - '*.toml' - Cargo.lock - ci/cw-check/** - - ci/** - ibc/** - ibc-core/** - ibc-apps/** @@ -43,7 +42,7 @@ jobs: -v "$(pwd)":/code \ -v "$(pwd)"/target:/target \ -v "${HOME}/.cargo/registry":/usr/local/cargo/registry \ - cosmwasm/optimizer:0.15.1 ./ci/cw-check + cosmwasm/optimizer:0.16.0 ./ci/cw-check - name: Fix permissions run: | diff --git a/.github/workflows/no-std.yaml b/.github/workflows/no-std.yaml index 5b1581e998..2ed31c2a49 100644 --- a/.github/workflows/no-std.yaml +++ b/.github/workflows/no-std.yaml @@ -3,10 +3,9 @@ on: pull_request: paths: - .github/workflows/no-std.yaml - - Cargo.toml + - '*.toml' - Cargo.lock - ci/no-std-check/** - - ci/** - ibc/** - ibc-core/** - ibc-apps/** diff --git a/.github/workflows/rust.yaml b/.github/workflows/rust.yaml index 4bd0e0b11f..181edf42de 100644 --- a/.github/workflows/rust.yaml +++ b/.github/workflows/rust.yaml @@ -3,8 +3,9 @@ on: pull_request: paths: - .github/workflows/rust.yaml - - Cargo.toml + - '*.toml' - ci/** + - cosmwasm/** - ibc/** - ibc-core/** - ibc-apps/** @@ -14,6 +15,7 @@ on: - ibc-query/** - ibc-testkit/** - ibc-derive/** + - tests-integration/** push: tags: - v[0-9]+.* @@ -34,84 +36,66 @@ env: RUSTUP_MAX_RETRIES: 10 jobs: - check-features: - name: Check features + check-lints: + name: Check Lints runs-on: ubuntu-latest timeout-minutes: 60 + env: + RIPGREP_VERSION: 14.1.0 + FD_VERSION: 9.0.0 steps: - uses: actions/checkout@v4 - - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - toolchain: stable - - name: Install cargo-hack - uses: taiki-e/install-action@cargo-hack - - name: Run cargo hack - run: make check-features - - nightly_fmt: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - toolchain: nightly # Since fmt uses unstable features for organizing imports - components: rustfmt - - uses: actions-rs/cargo@v1 + - name: Install Rust nightly toolchain with rustfmt + uses: actions-rust-lang/setup-rust-toolchain@v1 with: - command: fmt - args: --all -- --check - - clippy_all_features: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions-rust-lang/setup-rust-toolchain@v1 + toolchain: nightly + components: rustfmt + - name: Install Rust stable toolchain with clippy + uses: actions-rust-lang/setup-rust-toolchain@v1 with: - toolchain: stable - components: clippy + components: clippy - uses: actions-rs/clippy-check@v1 with: token: ${{ secrets.GITHUB_TOKEN }} - args: --all-features --all-targets - - clippy_no_default_features: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions-rust-lang/setup-rust-toolchain@v1 + - name: Install Taplo + uses: baptiste0928/cargo-install@v3 with: - toolchain: stable - components: clippy - - uses: actions-rs/clippy-check@v1 + crate: taplo-cli + - name: Run Lint Checks (fmt, clippy, taplo) + run: make lint + - name: Spell Check with Typos + uses: crate-ci/typos@master with: - token: ${{ secrets.GITHUB_TOKEN }} - args: --no-default-features --lib + config: ./.github/typos.toml - doc_all_features: + check-docs: + name: Check Documentations runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: stable - - uses: actions-rs/cargo@v1 - with: - command: doc - args: --all-features --release + components: rust-docs + - name: Run cargo docs + run: make check-docs - doc_no_default_features: + check-features: + name: Check Features runs-on: ubuntu-latest + timeout-minutes: 60 steps: - uses: actions/checkout@v4 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: stable - - uses: actions-rs/cargo@v1 - with: - command: doc - args: --no-default-features --release + - name: Install cargo-hack + uses: taiki-e/install-action@cargo-hack + - name: Run cargo hack + run: make check-features - test-stable: + tests: + name: Run Tests runs-on: ubuntu-latest timeout-minutes: 30 steps: @@ -119,20 +103,11 @@ jobs: - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: stable - - uses: actions-rs/cargo@v1 - with: - command: test - args: --all-features --no-fail-fast --no-run - - uses: actions-rs/cargo@v1 - with: - command: test - args: --all-features --no-fail-fast --workspace -- --nocapture - - uses: actions-rs/cargo@v1 - with: - command: test - args: --no-default-features --no-fail-fast --no-run + - name: Run cargo test + run: make test test-msrv: + name: Test MSRV for `ibc` libraries timeout-minutes: 30 env: CARGO_MSRV_VERSION: 0.16.0-beta.23 diff --git a/.github/workflows/upload-cw-clients.yaml b/.github/workflows/upload-cw-clients.yaml index 605f40003d..a3685c869f 100644 --- a/.github/workflows/upload-cw-clients.yaml +++ b/.github/workflows/upload-cw-clients.yaml @@ -4,14 +4,12 @@ on: paths: - .github/workflows/upload-cw-clients.yaml - Cargo.toml - - ci/** + - cosmwasm/** - ibc/** - ibc-core/** - ibc-apps/** - - ibc-data-types/** - ibc-clients/** - ibc-primitives/** - - ibc-query/** - ibc-testkit/** - ibc-derive/** push: @@ -19,14 +17,12 @@ on: paths: - .github/workflows/upload-cw-clients.yaml - Cargo.toml - - ci/** + - cosmwasm/** - ibc/** - ibc-core/** - ibc-apps/** - - ibc-data-types/** - ibc-clients/** - ibc-primitives/** - - ibc-query/** - ibc-testkit/** - ibc-derive/** @@ -43,11 +39,6 @@ jobs: - uses: actions-rust-lang/setup-rust-toolchain@v1 - # `cosmwasm/optimizer` requires `Cargo.lock`. but currently, - # `Cargo.lock` is not committed, because `ibc-rs` is treated as library. - - name: Produce `Cargo.lock` file - run: cargo update -p ibc-client-tendermint-cw - - name: Create mount directories run: mkdir -p "${HOME}/.cargo/registry" "$(pwd)"/target @@ -57,7 +48,7 @@ jobs: -v "$(pwd)":/code \ -v "$(pwd)"/target:/target \ -v "${HOME}/.cargo/registry":/usr/local/cargo/registry \ - cosmwasm/optimizer:0.16.0 ./ibc-clients/ics07-tendermint/cw-contract + cosmwasm/optimizer:0.16.0 ./cosmwasm/ibc-clients/ics07-tendermint - name: Fix permissions run: | diff --git a/.gitignore b/.gitignore index 341707b207..56794f065e 100644 --- a/.gitignore +++ b/.gitignore @@ -33,7 +33,7 @@ mc.log /Cargo.lock # Ignore CosmWasm artifacts -/cw-contracts +cw-contracts/ # Ignore dotenv .env diff --git a/Cargo.toml b/Cargo.toml index c0aaa02528..aedb48945d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,8 +22,6 @@ members = [ "ibc-clients/ics07-tendermint/types", "ibc-clients/ics07-tendermint", "ibc-clients/ics08-wasm/types", - "ibc-clients/cw-context", - "ibc-clients/ics07-tendermint/cw-contract", "ibc-clients", "ibc-apps/ics20-transfer/types", "ibc-apps/ics20-transfer", @@ -87,9 +85,8 @@ ibc-core-handler = { version = "0.53.0", path = "./ibc-core/ics25-handler", d ibc-core-router = { version = "0.53.0", path = "./ibc-core/ics26-routing", default-features = false } ibc-query = { version = "0.53.0", path = "./ibc-query", default-features = false } -ibc-client-cw = { version = "0.53.0", path = "./ibc-clients/cw-context", default-features = false } -ibc-client-tendermint = { version = "0.53.0", path = "./ibc-clients/ics07-tendermint", default-features = false } -ibc-client-tendermint-cw = { version = "0.53.0", path = "./ibc-clients/ics07-tendermint/cw-contract", default-features = false } +ibc-client-cw = { version = "0.53.0", path = "./ibc-clients/cw-context", default-features = false } +ibc-client-tendermint = { version = "0.53.0", path = "./ibc-clients/ics07-tendermint", default-features = false } ibc-app-transfer = { version = "0.53.0", path = "./ibc-apps/ics20-transfer", default-features = false } ibc-app-nft-transfer = { version = "0.53.0", path = "./ibc-apps/ics721-nft-transfer", default-features = false } @@ -118,12 +115,6 @@ tendermint-proto = { version = "0.37.0", default-features = fals tendermint-rpc = { version = "0.37.0", default-features = false } tendermint-testgen = { version = "0.37.0", default-features = false } -# cosmwasm dependencies -cosmwasm-schema = { version = "2.1.0" } -cosmwasm-std = { version = "2.1.0" } -cosmwasm-vm = { version = "2.1.0" } -cw-storage-plus = { version = "2.0.0" } - # parity dependencies parity-scale-codec = { version = "3.6.12", default-features = false, features = [ "derive" ] } scale-info = { version = "2.11.3", default-features = false } diff --git a/Makefile b/Makefile index fd1f040701..c3323b2cda 100644 --- a/Makefile +++ b/Makefile @@ -4,26 +4,39 @@ help: ## Display help message. @echo "Usage: make " @awk 'BEGIN {FS = ":.*?## "}/^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) -install-tools: ## Install development tools including nightly rustfmt, cargo-hack and cargo-release. +setup: ## Install development tools including nightly rustfmt, cargo-hack and cargo-release. rustup component add rustfmt --toolchain nightly cargo install cargo-hack cargo install cargo-release cargo install typos-cli taplo-cli lint: ## Lint the code using rustfmt, clippy and whitespace lints. + $(MAKE) fmt + $(MAKE) clippy + $(MAKE) lint-toml + $(MAKE) -C ./cosmwasm lint $@ + bash ./ci/code-quality/whitespace-lints.sh + +fmt: ## Format the code using nightly rustfmt. cargo +nightly fmt --all --check + +clippy: ## Lint the code using clippy. cargo clippy --all-targets --all-features cargo clippy --all-targets --no-default-features - typos --config $(CURDIR)/.github/typos.toml - bash ./ci/code-quality/whitespace-lints.sh + +lint-toml: ## Lint the TOML files using taplo. taplo fmt --check +typos: ## Check for typos in the code. + typos --config $(CURDIR)/.github/typos.toml + check-features: ## Check that project compiles with all combinations of features. cargo hack check --workspace --feature-powerset --exclude-features default check-docs: ## Build documentation with all features and without default features. cargo doc --all --all-features --release cargo doc --all --no-default-features --release + $(MAKE) -C ./cosmwasm check-docs $@ check-no-std: ## Check that libraries compile with `no_std` feature. $(MAKE) -C ./ci/no-std-check $@ @@ -33,23 +46,21 @@ check-cw: ## Check that the CosmWasm smart contract compiles. && cargo build --target wasm32-unknown-unknown --no-default-features --release test: ## Run tests with all features and without default features. - cargo test --all-targets --all-features - cargo test --all-targets --no-default-features + cargo test --all-targets --all-features --no-fail-fast --release + cargo test --all-targets --no-default-features --no-fail-fast --release + $(MAKE) -C ./cosmwasm test $@ check-release: ## Check that the release build compiles. cargo release --workspace --no-push --no-tag \ --exclude ibc-derive \ - --exclude ibc-primitives \ - --exclude ibc-client-tendermint-cw + --exclude ibc-primitives + $(MAKE) -C ./cosmwasm check-release $@ release: ## Perform an actual release and publishes to crates.io. cargo release --workspace --no-push --no-tag --allow-branch HEAD --execute \ --exclude ibc-derive \ - --exclude ibc-primitives \ - --exclude ibc-client-tendermint-cw + --exclude ibc-primitives + $(MAKE) -C ./cosmwasm release $@ build-tendermint-cw: ## Build the WASM file for the ICS-07 Tendermint light client. - @echo "Building the WASM file for the ICS-07 Tendermint light client" - RUSTFLAGS='-C link-arg=-s' cargo build -p ibc-client-tendermint-cw --target wasm32-unknown-unknown --release --lib --locked - mkdir -p cw-contracts - cp target/wasm32-unknown-unknown/release/ibc_client_tendermint_cw.wasm cw-contracts/ + $(MAKE) -C ./cosmwasm build-tendermint-cw $@ diff --git a/README.md b/README.md index b785d43c96..d0cac37d54 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ sub-crates that can be used independently or together. | [ibc-testkit](ibc-testkit) | Provides testing toolkit to aid `ibc-rs` and host chains in writing integration tests. | | [ibc-query](ibc-query) | Contains utility traits and implementations for querying states of an integrated IBC module. | | [ibc-derive](ibc-derive) | Derive macros for `ClientState` and `ConsensusState` traits, reducing boilerplate. | +| [cosmwasm](cosmwasm) | Contains libraries that implement `ibc-rs` modules as CosmWasm contracts. | ## Contributing diff --git a/clippy.toml b/clippy.toml index 5b2db2ef3f..0c33cb48cc 100644 --- a/clippy.toml +++ b/clippy.toml @@ -7,4 +7,4 @@ disallowed-types = [ disallowed-methods = [ "std::time::Duration::as_secs_f64", ] -msrv = "1.72.1" + diff --git a/cosmwasm/Cargo.lock b/cosmwasm/Cargo.lock new file mode 100644 index 0000000000..fe5706c928 --- /dev/null +++ b/cosmwasm/Cargo.lock @@ -0,0 +1,3141 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[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 = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "anyhow" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[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 = "arrayref" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "async-trait" +version = "0.1.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "axum" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +dependencies = [ + "async-trait", + "axum-core", + "bitflags 1.3.2", + "bytes", + "futures-util", + "http 0.2.12", + "http-body", + "hyper", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 0.2.12", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", +] + +[[package]] +name = "backtrace" +version = "0.3.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base64" +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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "basecoin-store" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba52d2e35c5bdd0ec8cee00da32a0b89720e36e6363ac95965a5d8c61e59ac7" +dependencies = [ + "displaydoc", + "ics23", + "prost", + "serde", + "serde_json", + "sha2 0.10.8", + "tendermint 0.35.0", + "tracing", +] + +[[package]] +name = "bech32" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d965446196e3b7decd44aa7ee49e31d630118f90ef12f97900f262eb915c951d" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake3" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "bnum" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e31ea183f6ee62ac8b8a8cf7feddd766317adfb13ff469de57ce033efd6a790" + +[[package]] +name = "borsh" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.72", + "syn_derive", +] + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +dependencies = [ + "serde", +] + +[[package]] +name = "cc" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "cosmwasm-core" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "367fc87c43759098a476ef90f915aadc66c300480ad9c155b512081fbf327bc1" + +[[package]] +name = "cosmwasm-crypto" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b7c41f3e371ea457d3b98bb592c38858b46efcf614e0e988ec2ebbdb973954f" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff", + "ark-serialize", + "cosmwasm-core", + "digest 0.10.7", + "ecdsa", + "ed25519-zebra", + "k256", + "num-traits", + "p256", + "rand_core", + "rayon", + "sha2 0.10.8", + "thiserror", +] + +[[package]] +name = "cosmwasm-derive" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c10510e8eb66cf7e109741b1e2c76ad18f30b5a1daa064f5f7115c1f733aaea0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "cosmwasm-schema" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79879b6b7ef6a331b05030ce91ce46a7c4b0baf1ed6b382cce2e9a168109380" +dependencies = [ + "cosmwasm-schema-derive", + "schemars", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cosmwasm-schema-derive" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b53e33c0e97170c7ac9cb440f4bc599a07f9cbb9b7e87916cca37b1239d57b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "cosmwasm-std" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92011c39570876f340d5f9defa68bf92797b1c44421f1b9ea9b04a31d6defd33" +dependencies = [ + "base64 0.22.1", + "bech32", + "bnum", + "cosmwasm-core", + "cosmwasm-crypto", + "cosmwasm-derive", + "derive_more 1.0.0-beta.7", + "hex", + "rand_core", + "schemars", + "serde", + "serde-json-wasm", + "sha2 0.10.8", + "static_assertions", + "thiserror", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[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 = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[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.72", +] + +[[package]] +name = "curve25519-dalek-ng" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core", + "subtle-ng", + "zeroize", +] + +[[package]] +name = "cw-storage-plus" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f13360e9007f51998d42b1bc6b7fa0141f74feae61ed5fd1e5b0a89eec7b5de1" +dependencies = [ + "cosmwasm-std", + "schemars", + "serde", +] + +[[package]] +name = "der" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "derive_more" +version = "1.0.0-beta.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3249c0372e72f5f93b5c0ca54c0ab76bbf6216b6f718925476fd9bc4ffabb4fe" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0-beta.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27d919ced7590fc17b5d5a3c63b662e8a7d2324212c4e4dbbed975cafd22d16d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", + "unicode-xid", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle", +] + +[[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.72", +] + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + +[[package]] +name = "ecdsa" +version = "0.16.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature", +] + +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature", +] + +[[package]] +name = "ed25519-consensus" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8465edc8ee7436ffea81d21a019b16676ee3db267aa8d5a8d729581ecf998b" +dependencies = [ + "curve25519-dalek-ng", + "hex", + "rand_core", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-zebra" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d9ce6874da5d4415896cd45ffbc4d1cfc0c4f9c079427bd870742c30f2f65a9" +dependencies = [ + "curve25519-dalek", + "ed25519", + "hashbrown 0.14.5", + "hex", + "rand_core", + "sha2 0.10.8", + "zeroize", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "elliptic-curve" +version = "0.13.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array", + "group", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core", + "subtle", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "flex-error" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c606d892c9de11507fa0dcffc116434f94e105d0bbdc4e405b61519464c49d7b" +dependencies = [ + "paste", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + +[[package]] +name = "gumdrop" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bc700f989d2f6f0248546222d9b4258f5b02a171a431f8285a81c08142629e3" +dependencies = [ + "gumdrop_derive", +] + +[[package]] +name = "gumdrop_derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "729f9bd3449d77e7831a18abfb7ba2f99ee813dfd15b8c2167c9a54ba20aa99d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap 2.3.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" + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http 0.2.12", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +dependencies = [ + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", +] + +[[package]] +name = "ibc" +version = "0.53.0" +dependencies = [ + "ibc-apps", + "ibc-clients", + "ibc-core", + "ibc-core-host-cosmos", + "ibc-derive", + "ibc-primitives", +] + +[[package]] +name = "ibc-app-nft-transfer" +version = "0.53.0" +dependencies = [ + "ibc-app-nft-transfer-types", + "ibc-core", + "serde-json-wasm", +] + +[[package]] +name = "ibc-app-nft-transfer-types" +version = "0.53.0" +dependencies = [ + "base64 0.22.1", + "borsh", + "derive_more 0.99.18", + "displaydoc", + "http 1.1.0", + "ibc-app-transfer-types", + "ibc-core", + "ibc-proto", + "mime", + "parity-scale-codec", + "scale-info", + "schemars", + "serde", + "serde-json-wasm", +] + +[[package]] +name = "ibc-app-transfer" +version = "0.53.0" +dependencies = [ + "ibc-app-transfer-types", + "ibc-core", + "serde-json-wasm", +] + +[[package]] +name = "ibc-app-transfer-types" +version = "0.53.0" +dependencies = [ + "borsh", + "derive_more 0.99.18", + "displaydoc", + "ibc-core", + "ibc-proto", + "parity-scale-codec", + "primitive-types", + "scale-info", + "schemars", + "serde", + "uint", +] + +[[package]] +name = "ibc-apps" +version = "0.53.0" +dependencies = [ + "ibc-app-nft-transfer", + "ibc-app-transfer", +] + +[[package]] +name = "ibc-client-cw" +version = "0.53.0" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus", + "derive_more 0.99.18", + "ibc-client-wasm-types", + "ibc-core", + "prost", + "serde-json-wasm", +] + +[[package]] +name = "ibc-client-tendermint" +version = "0.53.0" +dependencies = [ + "derive_more 0.99.18", + "ibc-client-tendermint-types", + "ibc-core-client", + "ibc-core-commitment-types", + "ibc-core-handler-types", + "ibc-core-host", + "ibc-primitives", + "serde", + "tendermint 0.37.0", + "tendermint-light-client-verifier", +] + +[[package]] +name = "ibc-client-tendermint-cw" +version = "0.53.0" +dependencies = [ + "cosmwasm-std", + "ibc-client-cw", + "ibc-client-tendermint", + "ibc-core", + "ibc-testkit", + "serde-json-wasm", + "tendermint 0.37.0", + "tendermint-testgen", +] + +[[package]] +name = "ibc-client-tendermint-types" +version = "0.53.0" +dependencies = [ + "displaydoc", + "ibc-core-client-types", + "ibc-core-commitment-types", + "ibc-core-host-types", + "ibc-primitives", + "ibc-proto", + "serde", + "tendermint 0.37.0", + "tendermint-light-client-verifier", + "tendermint-proto 0.37.0", +] + +[[package]] +name = "ibc-client-wasm-types" +version = "0.53.0" +dependencies = [ + "base64 0.22.1", + "displaydoc", + "ibc-core-client", + "ibc-core-host-types", + "ibc-primitives", + "ibc-proto", + "schemars", + "serde", +] + +[[package]] +name = "ibc-clients" +version = "0.53.0" +dependencies = [ + "ibc-client-tendermint", + "ibc-client-wasm-types", +] + +[[package]] +name = "ibc-core" +version = "0.53.0" +dependencies = [ + "ibc-core-channel", + "ibc-core-client", + "ibc-core-commitment-types", + "ibc-core-connection", + "ibc-core-handler", + "ibc-core-host", + "ibc-core-router", + "ibc-derive", + "ibc-primitives", +] + +[[package]] +name = "ibc-core-channel" +version = "0.53.0" +dependencies = [ + "ibc-core-channel-types", + "ibc-core-client", + "ibc-core-commitment-types", + "ibc-core-connection", + "ibc-core-handler-types", + "ibc-core-host", + "ibc-core-router", + "ibc-primitives", +] + +[[package]] +name = "ibc-core-channel-types" +version = "0.53.0" +dependencies = [ + "borsh", + "derive_more 0.99.18", + "displaydoc", + "ibc-core-client-types", + "ibc-core-commitment-types", + "ibc-core-connection-types", + "ibc-core-host-types", + "ibc-primitives", + "ibc-proto", + "parity-scale-codec", + "scale-info", + "schemars", + "serde", + "sha2 0.10.8", + "subtle-encoding", + "tendermint 0.37.0", +] + +[[package]] +name = "ibc-core-client" +version = "0.53.0" +dependencies = [ + "ibc-core-client-context", + "ibc-core-client-types", + "ibc-core-commitment-types", + "ibc-core-handler-types", + "ibc-core-host", + "ibc-primitives", +] + +[[package]] +name = "ibc-core-client-context" +version = "0.53.0" +dependencies = [ + "derive_more 0.99.18", + "displaydoc", + "ibc-core-client-types", + "ibc-core-commitment-types", + "ibc-core-handler-types", + "ibc-core-host-types", + "ibc-primitives", + "subtle-encoding", + "tendermint 0.37.0", +] + +[[package]] +name = "ibc-core-client-types" +version = "0.53.0" +dependencies = [ + "borsh", + "derive_more 0.99.18", + "displaydoc", + "ibc-core-commitment-types", + "ibc-core-host-types", + "ibc-primitives", + "ibc-proto", + "parity-scale-codec", + "scale-info", + "schemars", + "serde", + "subtle-encoding", + "tendermint 0.37.0", +] + +[[package]] +name = "ibc-core-commitment-types" +version = "0.53.0" +dependencies = [ + "borsh", + "derive_more 0.99.18", + "displaydoc", + "ibc-core-host-types", + "ibc-primitives", + "ibc-proto", + "ics23", + "parity-scale-codec", + "scale-info", + "schemars", + "serde", + "subtle-encoding", +] + +[[package]] +name = "ibc-core-connection" +version = "0.53.0" +dependencies = [ + "ibc-client-wasm-types", + "ibc-core-client", + "ibc-core-connection-types", + "ibc-core-handler-types", + "ibc-core-host", + "ibc-primitives", + "prost", +] + +[[package]] +name = "ibc-core-connection-types" +version = "0.53.0" +dependencies = [ + "borsh", + "derive_more 0.99.18", + "displaydoc", + "ibc-core-client-types", + "ibc-core-commitment-types", + "ibc-core-host-types", + "ibc-primitives", + "ibc-proto", + "parity-scale-codec", + "scale-info", + "schemars", + "serde", + "subtle-encoding", + "tendermint 0.37.0", +] + +[[package]] +name = "ibc-core-handler" +version = "0.53.0" +dependencies = [ + "ibc-core-channel", + "ibc-core-client", + "ibc-core-commitment-types", + "ibc-core-connection", + "ibc-core-handler-types", + "ibc-core-host", + "ibc-core-router", + "ibc-primitives", +] + +[[package]] +name = "ibc-core-handler-types" +version = "0.53.0" +dependencies = [ + "borsh", + "derive_more 0.99.18", + "displaydoc", + "ibc-core-channel-types", + "ibc-core-client-types", + "ibc-core-commitment-types", + "ibc-core-connection-types", + "ibc-core-host-types", + "ibc-core-router-types", + "ibc-primitives", + "ibc-proto", + "parity-scale-codec", + "scale-info", + "schemars", + "serde", + "subtle-encoding", + "tendermint 0.37.0", +] + +[[package]] +name = "ibc-core-host" +version = "0.53.0" +dependencies = [ + "derive_more 0.99.18", + "displaydoc", + "ibc-core-channel-types", + "ibc-core-client-context", + "ibc-core-client-types", + "ibc-core-commitment-types", + "ibc-core-connection-types", + "ibc-core-handler-types", + "ibc-core-host-types", + "ibc-primitives", + "subtle-encoding", +] + +[[package]] +name = "ibc-core-host-cosmos" +version = "0.53.0" +dependencies = [ + "derive_more 0.99.18", + "displaydoc", + "ibc-app-transfer-types", + "ibc-client-tendermint", + "ibc-core-client-context", + "ibc-core-client-types", + "ibc-core-commitment-types", + "ibc-core-connection-types", + "ibc-core-handler-types", + "ibc-core-host-types", + "ibc-primitives", + "ibc-proto", + "serde", + "sha2 0.10.8", + "subtle-encoding", + "tendermint 0.37.0", +] + +[[package]] +name = "ibc-core-host-types" +version = "0.53.0" +dependencies = [ + "borsh", + "derive_more 0.99.18", + "displaydoc", + "ibc-primitives", + "parity-scale-codec", + "scale-info", + "schemars", + "serde", +] + +[[package]] +name = "ibc-core-router" +version = "0.53.0" +dependencies = [ + "derive_more 0.99.18", + "displaydoc", + "ibc-core-channel-types", + "ibc-core-host-types", + "ibc-core-router-types", + "ibc-primitives", + "subtle-encoding", +] + +[[package]] +name = "ibc-core-router-types" +version = "0.53.0" +dependencies = [ + "borsh", + "derive_more 0.99.18", + "displaydoc", + "ibc-core-host-types", + "ibc-primitives", + "ibc-proto", + "parity-scale-codec", + "scale-info", + "schemars", + "serde", + "subtle-encoding", + "tendermint 0.37.0", +] + +[[package]] +name = "ibc-derive" +version = "0.7.0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "ibc-primitives" +version = "0.53.0" +dependencies = [ + "borsh", + "derive_more 0.99.18", + "displaydoc", + "ibc-proto", + "parity-scale-codec", + "prost", + "scale-info", + "schemars", + "serde", + "tendermint 0.37.0", + "time", +] + +[[package]] +name = "ibc-proto" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cb09e0b52b8a16e98ce98845e7c15b018440f3c56defa12fa44782cd66bab65" +dependencies = [ + "base64 0.22.1", + "borsh", + "bytes", + "flex-error", + "ics23", + "informalsystems-pbjson", + "parity-scale-codec", + "prost", + "scale-info", + "schemars", + "serde", + "subtle-encoding", + "tendermint-proto 0.37.0", + "tonic", +] + +[[package]] +name = "ibc-query" +version = "0.53.0" +dependencies = [ + "displaydoc", + "ibc", + "ibc-proto", + "tonic", +] + +[[package]] +name = "ibc-testkit" +version = "0.53.0" +dependencies = [ + "basecoin-store", + "derive_more 0.99.18", + "displaydoc", + "ibc", + "ibc-proto", + "ibc-query", + "parking_lot", + "subtle-encoding", + "tendermint 0.37.0", + "tendermint-testgen", + "typed-builder", +] + +[[package]] +name = "ics23" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18798160736c1e368938ba6967dbcb3c7afb3256b442a5506ba5222eebb68a5a" +dependencies = [ + "anyhow", + "blake2", + "blake3", + "bytes", + "hex", + "informalsystems-pbjson", + "prost", + "ripemd", + "serde", + "sha2 0.10.8", + "sha3", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", +] + +[[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 = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "k256" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "sha2 0.10.8", +] + +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "libc" +version = "0.2.155" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +dependencies = [ + "hermit-abi", + "libc", + "wasi", + "windows-sys", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "object" +version = "0.36.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[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 = "parity-scale-codec" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +dependencies = [ + "arrayvec", + "bitvec", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[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", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + +[[package]] +name = "primitive-types" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-serde", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prost" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +dependencies = [ + "anyhow", + "itertools 0.12.1", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "prost-types" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" +dependencies = [ + "prost", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac", + "subtle", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "scale-info" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca070c12893629e2cc820a9761bedf6ce1dcddc9852984d1dc734b8bd9bd024" +dependencies = [ + "cfg-if", + "derive_more 0.99.18", + "parity-scale-codec", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d35494501194174bda522a32605929eefc9ecf7e0a326c26db1fdd85881eb62" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.72", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array", + "subtle", + "zeroize", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "serde" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +dependencies = [ + "serde_derive", +] + +[[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" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.204" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "serde_json" +version = "1.0.122" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "simple-error" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e2accd2c41a0e920d2abd91b2badcfa1da784662f54fbc47e0e3a51f1e2e1cf" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "subtle-encoding" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" +dependencies = [ + "zeroize", +] + +[[package]] +name = "subtle-ng" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "734676eb262c623cec13c3155096e08d1f8f29adce39ba17948b18dad1e54142" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys", +] + +[[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", + "flex-error", + "futures", + "num-traits", + "once_cell", + "prost", + "prost-types", + "serde", + "serde_bytes", + "serde_json", + "serde_repr", + "signature", + "subtle", + "subtle-encoding", + "tendermint-proto 0.35.0", + "time", + "zeroize", +] + +[[package]] +name = "tendermint" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "954496fbc9716eb4446cdd6d00c071a3e2f22578d62aa03b40c7e5b4fda3ed42" +dependencies = [ + "bytes", + "digest 0.10.7", + "ed25519", + "ed25519-consensus", + "flex-error", + "futures", + "num-traits", + "once_cell", + "prost", + "prost-types", + "serde", + "serde_bytes", + "serde_json", + "serde_repr", + "sha2 0.10.8", + "signature", + "subtle", + "subtle-encoding", + "tendermint-proto 0.37.0", + "time", + "zeroize", +] + +[[package]] +name = "tendermint-light-client-verifier" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3848090df4502a09ee27cb1a00f1835e1111c8993b22c5e1e41ffb7f6f09d57e" +dependencies = [ + "derive_more 0.99.18", + "flex-error", + "serde", + "tendermint 0.37.0", + "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", + "num-traits", + "prost", + "prost-types", + "serde", + "serde_bytes", + "subtle-encoding", + "time", +] + +[[package]] +name = "tendermint-proto" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc87024548c7f3da479885201e3da20ef29e85a3b13d04606b380ac4c7120d87" +dependencies = [ + "bytes", + "flex-error", + "prost", + "prost-types", + "serde", + "serde_bytes", + "subtle-encoding", + "time", +] + +[[package]] +name = "tendermint-testgen" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "318a0e38b3b7b36b4078d78446d4284088aa9b173d519fc804c3ee4683972934" +dependencies = [ + "ed25519-consensus", + "gumdrop", + "serde", + "serde_json", + "simple-error", + "tempfile", + "tendermint 0.37.0", + "time", +] + +[[package]] +name = "thiserror" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tokio" +version = "1.39.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys", +] + +[[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-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.3.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tonic" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.21.7", + "bytes", + "h2", + "http 0.2.12", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand", + "slab", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typed-builder" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06fbd5b8de54c5f7c91f6fe4cebb949be2125d7758e630bb58b1d831dbce600" +dependencies = [ + "typed-builder-macro", +] + +[[package]] +name = "typed-builder-macro" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9534daa9fd3ed0bd911d462a37f172228077e7abf18c18a5f67199d959205f8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] diff --git a/cosmwasm/Cargo.toml b/cosmwasm/Cargo.toml new file mode 100644 index 0000000000..31416d983b --- /dev/null +++ b/cosmwasm/Cargo.toml @@ -0,0 +1,38 @@ +[workspace] +resolver = "2" + +members = [ + "ibc-clients/cw-context", + "ibc-clients/ics07-tendermint", +] + +[workspace.package] +version = "0.53.0" +license = "Apache-2.0" +edition = "2021" +rust-version = "1.75.0" +readme = "README.md" +repository = "https://github.com/cosmos/ibc-rs" +authors = [ "Informal Systems " ] + +[workspace.dependencies] +# external dependencies +derive_more = { version = "0.99.18", default-features = false } +prost = { version = "0.12", default-features = false } +serde-json = { package = "serde-json-wasm", version = "1.0.1", default-features = false } + +# cosmwasm dependencies +cosmwasm-std = { version = "2.1.0" } +cosmwasm-schema = { version = "2.1.0" } +cw-storage-plus = { version = "2.0.0" } + +# ibc dependencies +ibc-core = { version = "0.53.0", path = "./../ibc-core", default-features = false } +ibc-client-cw = { version = "0.53.0", path = "./ibc-clients/cw-context", default-features = false } +ibc-client-tendermint = { version = "0.53.0", path = "./../ibc-clients/ics07-tendermint", default-features = false } +ibc-client-wasm-types = { version = "0.53.0", path = "./../ibc-clients/ics08-wasm/types", default-features = false } +ibc-testkit = { version = "0.53.0", path = "./../ibc-testkit", default-features = false } + +# cosmos dependencies +tendermint = { version = "0.37.0", default-features = false } +tendermint-testgen = { version = "0.37.0", default-features = false } diff --git a/cosmwasm/Makefile b/cosmwasm/Makefile new file mode 100644 index 0000000000..da83d71824 --- /dev/null +++ b/cosmwasm/Makefile @@ -0,0 +1,37 @@ +.PHONY: help + +help: ## Display help message. + @echo "Usage: make " + @awk 'BEGIN {FS = ":.*?## "}/^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) + +setup: ## Install development tools including nightly rustfmt, cargo-hack and cargo-release. + rustup target add wasm32-unknown-unknown + +lint: fmt clippy ## Lint the code using rustfmt, clippy. + +fmt: ## Format the code using nightly rustfmt. + cargo +nightly fmt --all --check + +clippy: ## Lint the code using clippy. + cargo clippy --all-targets --all-features + cargo clippy --all-targets --no-default-features + +check-docs: ## Build documentation with all features and without default features. + cargo doc --all --all-features --release + +test: ## Run tests with all features and without default features. + cargo test --all-targets --all-features --no-fail-fast --release + +check-release: ## Check that the release build compiles. + cargo release --workspace --no-push --no-tag \ + --exclude ibc-client-tendermint-cw + +release: ## Perform an actual release and publishes to crates.io. + cargo release --workspace --no-push --no-tag --allow-branch HEAD --execute \ + --exclude ibc-client-tendermint-cw + +build-tendermint-cw: ## Build the WASM file for the ICS-07 Tendermint light client. + @echo "Building the WASM file for the ICS-07 Tendermint light client" + RUSTFLAGS='-C link-arg=-s' cargo build -p ibc-client-tendermint-cw --target wasm32-unknown-unknown --release --lib --locked && \ + mkdir -p cw-contracts && \ + cp target/wasm32-unknown-unknown/release/ibc_client_tendermint_cw.wasm cw-contracts/ diff --git a/cosmwasm/README.md b/cosmwasm/README.md new file mode 100644 index 0000000000..7678360b29 --- /dev/null +++ b/cosmwasm/README.md @@ -0,0 +1,31 @@ +
+

CosmWasm Integration

+
+ +This collection is designed to offer libraries that facilitate the +implementation of various `ibc-rs` core, clients and applications as CosmWasm +contracts. Currently, the available packages are: + +## IBC Clients + +- [ibc-client-cw](./cw-context): Provides utilities and a generic `Context` object + to streamline the implementation of any ibc-rs-powered light clients as + CosmWasm contracts. + - To utilize the CosmWasm contracts developed with this library, hosting + environments must support the CosmWasm module and be using the version of + `ibc-go` that supports the `08-wasm` proxy light client. + + > [!CAUTION] + > The `ibc-client-cw` is currently in development and should not be + deployed for production use. Users are advised to exercise caution and test + thoroughly in non-production environments. + +- [ibc-client-tendermint-cw](./../cosmwasm/ibc-clients/ics07-tendermint): CosmWasm Contract + + > [!TIP] + > The pre-compiled CosmWasm contract for `ibc-client-tendermint-cw` is available + > as Github workflow artifacts at + > [_Actions_](https://github.com/cosmos/ibc-rs/actions/workflows/upload-cw-clients.yaml) + > tab. They can be downloaded + > [during a Github workflow](https://github.com/cosmos/ibc-rs/blob/1098f252c04152812f026520e28e323f3bc0507e/.github/workflows/upload-cw-clients.yaml#L87-L96) + > using `actions/download-artifact@v4` action. diff --git a/ibc-clients/cw-context/Cargo.toml b/cosmwasm/ibc-clients/cw-context/Cargo.toml similarity index 92% rename from ibc-clients/cw-context/Cargo.toml rename to cosmwasm/ibc-clients/cw-context/Cargo.toml index ead5e26018..619dfb93ab 100644 --- a/ibc-clients/cw-context/Cargo.toml +++ b/cosmwasm/ibc-clients/cw-context/Cargo.toml @@ -7,7 +7,7 @@ repository = { workspace = true } rust-version = { workspace = true } version = { workspace = true } keywords = [ "ibc", "light-client", "CosmWasm", "ICS-08" ] -readme = "./../README.md" +readme = "./../../README.md" description = """ Contains types and implementations that are needed to integrate a light client, built using ibc-rs, @@ -20,7 +20,6 @@ description = """ # external dependencies derive_more = { workspace = true } prost = { workspace = true } -serde = { workspace = true, features = [ "derive" ] } # ibc dependencies ibc-core = { workspace = true } @@ -38,7 +37,6 @@ serde-json = { workspace = true } default = [ "std" ] std = [ "prost/std", - "serde/std", "ibc-core/std", "ibc-client-wasm-types/std", ] diff --git a/ibc-clients/cw-context/src/api.rs b/cosmwasm/ibc-clients/cw-context/src/api.rs similarity index 100% rename from ibc-clients/cw-context/src/api.rs rename to cosmwasm/ibc-clients/cw-context/src/api.rs diff --git a/ibc-clients/cw-context/src/context/client_ctx.rs b/cosmwasm/ibc-clients/cw-context/src/context/client_ctx.rs similarity index 100% rename from ibc-clients/cw-context/src/context/client_ctx.rs rename to cosmwasm/ibc-clients/cw-context/src/context/client_ctx.rs diff --git a/ibc-clients/cw-context/src/context/custom_ctx.rs b/cosmwasm/ibc-clients/cw-context/src/context/custom_ctx.rs similarity index 100% rename from ibc-clients/cw-context/src/context/custom_ctx.rs rename to cosmwasm/ibc-clients/cw-context/src/context/custom_ctx.rs diff --git a/ibc-clients/cw-context/src/context/mod.rs b/cosmwasm/ibc-clients/cw-context/src/context/mod.rs similarity index 100% rename from ibc-clients/cw-context/src/context/mod.rs rename to cosmwasm/ibc-clients/cw-context/src/context/mod.rs diff --git a/ibc-clients/cw-context/src/handlers.rs b/cosmwasm/ibc-clients/cw-context/src/handlers.rs similarity index 100% rename from ibc-clients/cw-context/src/handlers.rs rename to cosmwasm/ibc-clients/cw-context/src/handlers.rs diff --git a/ibc-clients/cw-context/src/lib.rs b/cosmwasm/ibc-clients/cw-context/src/lib.rs similarity index 100% rename from ibc-clients/cw-context/src/lib.rs rename to cosmwasm/ibc-clients/cw-context/src/lib.rs diff --git a/ibc-clients/cw-context/src/types/error.rs b/cosmwasm/ibc-clients/cw-context/src/types/error.rs similarity index 100% rename from ibc-clients/cw-context/src/types/error.rs rename to cosmwasm/ibc-clients/cw-context/src/types/error.rs diff --git a/ibc-clients/cw-context/src/types/helper.rs b/cosmwasm/ibc-clients/cw-context/src/types/helper.rs similarity index 100% rename from ibc-clients/cw-context/src/types/helper.rs rename to cosmwasm/ibc-clients/cw-context/src/types/helper.rs diff --git a/ibc-clients/cw-context/src/types/mod.rs b/cosmwasm/ibc-clients/cw-context/src/types/mod.rs similarity index 100% rename from ibc-clients/cw-context/src/types/mod.rs rename to cosmwasm/ibc-clients/cw-context/src/types/mod.rs diff --git a/ibc-clients/cw-context/src/types/msgs.rs b/cosmwasm/ibc-clients/cw-context/src/types/msgs.rs similarity index 100% rename from ibc-clients/cw-context/src/types/msgs.rs rename to cosmwasm/ibc-clients/cw-context/src/types/msgs.rs diff --git a/ibc-clients/cw-context/src/types/response.rs b/cosmwasm/ibc-clients/cw-context/src/types/response.rs similarity index 100% rename from ibc-clients/cw-context/src/types/response.rs rename to cosmwasm/ibc-clients/cw-context/src/types/response.rs diff --git a/ibc-clients/cw-context/src/utils/codec.rs b/cosmwasm/ibc-clients/cw-context/src/utils/codec.rs similarity index 100% rename from ibc-clients/cw-context/src/utils/codec.rs rename to cosmwasm/ibc-clients/cw-context/src/utils/codec.rs diff --git a/ibc-clients/cw-context/src/utils/mod.rs b/cosmwasm/ibc-clients/cw-context/src/utils/mod.rs similarity index 100% rename from ibc-clients/cw-context/src/utils/mod.rs rename to cosmwasm/ibc-clients/cw-context/src/utils/mod.rs diff --git a/ibc-clients/ics07-tendermint/cw-contract/Cargo.toml b/cosmwasm/ibc-clients/ics07-tendermint/Cargo.toml similarity index 60% rename from ibc-clients/ics07-tendermint/cw-contract/Cargo.toml rename to cosmwasm/ibc-clients/ics07-tendermint/Cargo.toml index 8c5c357337..acedd5a272 100644 --- a/ibc-clients/ics07-tendermint/cw-contract/Cargo.toml +++ b/cosmwasm/ibc-clients/ics07-tendermint/Cargo.toml @@ -6,11 +6,12 @@ license = { workspace = true } repository = { workspace = true } rust-version = { workspace = true } version = { workspace = true } -keywords = [ "ibc", "light-client", "ics07", "tendermint", "CosmWasm" ] +keywords = [ "ibc", "light-client", "CosmWasm", "ICS-07", "Tendermint" ] readme = "./../../README.md" description = """ - The ICS-08 CosmWasm contract implementation of the ICS-07 Tendermint light client. + Contains the implementation of the ICS-07 Tendermint Client logic as a CosmWasm contract. + It leverages the `ibc-client-cw` crate to integrate the Tendermint light client into a CosmWasm contract. """ [lib] @@ -25,6 +26,12 @@ ibc-client-tendermint = { workspace = true } # cosmwasm dependencies cosmwasm-std = { workspace = true } +[dev-dependencies] +ibc-testkit = { workspace = true } +serde-json = { workspace = true } +tendermint = { workspace = true } +tendermint-testgen = { workspace = true } + [features] default = [ "std" ] std = [ diff --git a/ibc-clients/ics07-tendermint/cw-contract/README.md b/cosmwasm/ibc-clients/ics07-tendermint/README.md similarity index 100% rename from ibc-clients/ics07-tendermint/cw-contract/README.md rename to cosmwasm/ibc-clients/ics07-tendermint/README.md diff --git a/ibc-clients/ics07-tendermint/cw-contract/src/client_type.rs b/cosmwasm/ibc-clients/ics07-tendermint/src/client_type.rs similarity index 100% rename from ibc-clients/ics07-tendermint/cw-contract/src/client_type.rs rename to cosmwasm/ibc-clients/ics07-tendermint/src/client_type.rs diff --git a/ibc-clients/ics07-tendermint/cw-contract/src/entrypoint.rs b/cosmwasm/ibc-clients/ics07-tendermint/src/entrypoint.rs similarity index 100% rename from ibc-clients/ics07-tendermint/cw-contract/src/entrypoint.rs rename to cosmwasm/ibc-clients/ics07-tendermint/src/entrypoint.rs diff --git a/ibc-clients/ics07-tendermint/cw-contract/src/lib.rs b/cosmwasm/ibc-clients/ics07-tendermint/src/lib.rs similarity index 93% rename from ibc-clients/ics07-tendermint/cw-contract/src/lib.rs rename to cosmwasm/ibc-clients/ics07-tendermint/src/lib.rs index 4a4a642f08..3b8e9492be 100644 --- a/ibc-clients/ics07-tendermint/cw-contract/src/lib.rs +++ b/cosmwasm/ibc-clients/ics07-tendermint/src/lib.rs @@ -13,3 +13,6 @@ pub mod client_type; pub mod entrypoint; + +#[cfg(test)] +mod tests; diff --git a/tests-integration/tests/cosmwasm/fixture.rs b/cosmwasm/ibc-clients/ics07-tendermint/src/tests/fixture.rs similarity index 93% rename from tests-integration/tests/cosmwasm/fixture.rs rename to cosmwasm/ibc-clients/ics07-tendermint/src/tests/fixture.rs index 90d590dca6..cc8042b338 100644 --- a/tests-integration/tests/cosmwasm/fixture.rs +++ b/cosmwasm/ibc-clients/ics07-tendermint/src/tests/fixture.rs @@ -1,24 +1,26 @@ use std::time::Duration; use cosmwasm_std::{from_json, Binary, Deps, DepsMut, Empty, Response, StdError, StdResult}; -use ibc::clients::tendermint::client_state::ClientState as TmClientState; -use ibc::clients::tendermint::consensus_state::ConsensusState as TmConsensusState; -use ibc::clients::tendermint::types::Header; -use ibc::core::client::types::{Height, Status}; -use ibc::core::host::types::identifiers::ChainId; -use ibc::core::primitives::Timestamp; use ibc_client_cw::types::{ CheckForMisbehaviourMsgRaw, CheckForMisbehaviourResponse, ContractError, InstantiateMsg, MigrationPrefix, QueryMsg, StatusMsg, StatusResponse, UpdateStateMsgRaw, UpdateStateOnMisbehaviourMsgRaw, VerifyClientMessageRaw, VerifyClientMessageResponse, }; use ibc_client_cw::utils::AnyCodec; -use ibc_client_tendermint_cw::entrypoint::TendermintContext; +use ibc_client_tendermint::client_state::ClientState as TmClientState; +use ibc_client_tendermint::consensus_state::ConsensusState as TmConsensusState; +use ibc_client_tendermint::types::Header; +use ibc_core::client::types::{Height, Status}; +use ibc_core::host::types::identifiers::ChainId; +use ibc_core::primitives::Timestamp; use ibc_testkit::fixtures::clients::tendermint::ClientStateConfig; use tendermint::Time; use tendermint_testgen::{Generator, Validator}; -use super::helper::{dummy_checksum, dummy_sov_consensus_state, mock_env_with_timestamp_now}; +use crate::entrypoint::TendermintContext; +use crate::tests::helper::{ + dummy_checksum, dummy_sov_consensus_state, mock_env_with_timestamp_now, +}; /// Test fixture #[derive(Clone, Debug)] diff --git a/tests-integration/tests/cosmwasm/helper.rs b/cosmwasm/ibc-clients/ics07-tendermint/src/tests/helper.rs similarity index 68% rename from tests-integration/tests/cosmwasm/helper.rs rename to cosmwasm/ibc-clients/ics07-tendermint/src/tests/helper.rs index b0ba53b0c3..f7a4daf6c2 100644 --- a/tests-integration/tests/cosmwasm/helper.rs +++ b/cosmwasm/ibc-clients/ics07-tendermint/src/tests/helper.rs @@ -1,18 +1,11 @@ use std::str::FromStr; -use cosmwasm_std::testing::{message_info, mock_dependencies, mock_env}; -use cosmwasm_std::{coins, Binary, Checksum, Env, MessageInfo, Timestamp as CwTimestamp}; -use ibc::clients::tendermint::types::ConsensusState; -use ibc::core::primitives::Timestamp as IbcTimestamp; +use cosmwasm_std::testing::mock_env; +use cosmwasm_std::{Binary, Checksum, Env, Timestamp as CwTimestamp}; +use ibc_client_tendermint::types::ConsensusState; +use ibc_core::primitives::Timestamp as IbcTimestamp; use tendermint::Hash; -pub fn dummy_msg_info() -> MessageInfo { - let deps = mock_dependencies(); - let creator = deps.api.addr_make("creator"); - - message_info(&creator, &coins(1000, "ibc")) -} - pub fn dummy_checksum() -> Binary { let hex_bytes = Checksum::from_hex("2469f43c3ca20d476442bd3d98cbd97a180776ab37332aa7b02cae5a620acfc6") diff --git a/tests-integration/tests/cosmwasm/mod.rs b/cosmwasm/ibc-clients/ics07-tendermint/src/tests/mod.rs similarity index 97% rename from tests-integration/tests/cosmwasm/mod.rs rename to cosmwasm/ibc-clients/ics07-tendermint/src/tests/mod.rs index baea213668..70bbf14e20 100644 --- a/tests-integration/tests/cosmwasm/mod.rs +++ b/cosmwasm/ibc-clients/ics07-tendermint/src/tests/mod.rs @@ -1,17 +1,19 @@ -pub mod fixture; -pub mod helper; - use std::time::Duration; use cosmwasm_std::from_json; use cosmwasm_std::testing::{mock_dependencies, mock_env}; -use fixture::Fixture; -use ibc::core::client::types::{Height, Status}; use ibc_client_cw::types::{ ContractResult, MigrateClientStoreMsg, MigrationPrefix, VerifyClientMessageRaw, VerifyClientMessageResponse, }; -use ibc_client_tendermint_cw::entrypoint::sudo; +use ibc_core::client::types::{Height, Status}; + +use crate::entrypoint::sudo; + +pub mod fixture; +pub mod helper; + +use fixture::Fixture; #[test] fn test_cw_create_client_ok() { diff --git a/ibc-clients/README.md b/ibc-clients/README.md index f65b3c7bdb..4edd4abf13 100644 --- a/ibc-clients/README.md +++ b/ibc-clients/README.md @@ -25,32 +25,12 @@ IBC light clients: - [ibc-client-tendermint-types](./ics07-tendermint/types): Data Structures - [ibc-client-tendermint](./ics07-tendermint): Implementation -- [ibc-client-tendermint-cw](./ics07-tendermint/cw-contract): CosmWasm Contract - -> [!TIP] -> The pre-compiled CosmWasm contract for `ibc-client-tendermint-cw` is available -> as Github workflow artifacts at -> [_Actions_](https://github.com/cosmos/ibc-rs/actions/workflows/upload-cw-clients.yaml) -> tab. They can be downloaded -> [during a Github workflow](https://github.com/cosmos/ibc-rs/blob/1098f252c04152812f026520e28e323f3bc0507e/.github/workflows/upload-cw-clients.yaml#L87-L96) -> using `actions/download-artifact@v4` action. +- [ibc-client-tendermint-cw](./../cosmwasm/ibc-clients/ics07-tendermint): CosmWasm Contract ### ICS-08: WASM Proxy Light Client - [ibc-client-wasm-types](./ics08-wasm/types) -### CosmWasm Integration - -- [ibc-client-cw](./cw-context): Types and Utilities for CosmWasm Integration - - To utilize the CosmWasm contracts developed with this library, hosting - environments must support the CosmWasm module and be using the version of - `ibc-go` that supports the `08-wasm` proxy light client. - -> [!CAUTION] -> The `ibc-client-cw` is currently in development and should not be - deployed for production use. Users are advised to exercise caution and test - thoroughly in non-production environments. - ## Third-party Clients Here, we list IBC third-party clients that are compatible with `ibc-rs`. You diff --git a/tests-integration/Cargo.toml b/tests-integration/Cargo.toml index cb4a4c7e47..e9c981a4d8 100644 --- a/tests-integration/Cargo.toml +++ b/tests-integration/Cargo.toml @@ -21,8 +21,6 @@ tracing = { version = "0.1.40", default-features = false } ibc = { workspace = true } ibc-core-client-types = { workspace = true } ibc-core-commitment-types = { workspace = true } -ibc-client-cw = { workspace = true } -ibc-client-tendermint-cw = { workspace = true } ibc-client-tendermint-types = { workspace = true } ibc-core-host-types = { workspace = true } ibc-primitives = { workspace = true } @@ -37,7 +35,6 @@ tendermint = { workspace = true } tendermint-testgen = { workspace = true } [dev-dependencies] -cosmwasm-std = { workspace = true } rstest = { workspace = true } test-log = { version = "0.2.16", features = [ "trace" ] } tendermint-rpc = { workspace = true } diff --git a/tests-integration/tests/mod.rs b/tests-integration/tests/mod.rs index d9b64093dc..9c45bc97cf 100644 --- a/tests-integration/tests/mod.rs +++ b/tests-integration/tests/mod.rs @@ -9,4 +9,3 @@ pub mod applications; pub mod clients; pub mod core; -pub mod cosmwasm; From ccf6ce6415807aef617cbc3af399e0760c6b5429 Mon Sep 17 00:00:00 2001 From: srdtrk <59252793+srdtrk@users.noreply.github.com> Date: Wed, 7 Aug 2024 02:34:33 +0200 Subject: [PATCH 2/2] chore(cw-context)!: renamed 'path' to 'merkle_path' (#1293) * chore!: renamed 'path' to 'merkle_path' * chore: add changelog * nit: fix warnings in cosmwasm readme --------- Co-authored-by: Farhad Shabani --- ...ename-path-to-merkle-path-in-cw-context.md | 2 ++ cosmwasm/README.md | 26 +++++++++---------- .../ibc-clients/cw-context/src/types/msgs.rs | 14 +++++----- 3 files changed, 22 insertions(+), 20 deletions(-) create mode 100644 .changelog/unreleased/breaking-changes/1291-rename-path-to-merkle-path-in-cw-context.md diff --git a/.changelog/unreleased/breaking-changes/1291-rename-path-to-merkle-path-in-cw-context.md b/.changelog/unreleased/breaking-changes/1291-rename-path-to-merkle-path-in-cw-context.md new file mode 100644 index 0000000000..c5bfb52792 --- /dev/null +++ b/.changelog/unreleased/breaking-changes/1291-rename-path-to-merkle-path-in-cw-context.md @@ -0,0 +1,2 @@ +- [ibc-client-cw] Rename `path` to `merkle_path` in `cw-context` for verify + (non)membership ([\#1291](https://github.com/cosmos/ibc-rs/issues/1291)) diff --git a/cosmwasm/README.md b/cosmwasm/README.md index 7678360b29..bc6c323f72 100644 --- a/cosmwasm/README.md +++ b/cosmwasm/README.md @@ -8,24 +8,24 @@ contracts. Currently, the available packages are: ## IBC Clients -- [ibc-client-cw](./cw-context): Provides utilities and a generic `Context` object +- [ibc-client-cw](./ibc-clients/cw-context): Provides utilities and a generic `Context` object to streamline the implementation of any ibc-rs-powered light clients as CosmWasm contracts. - To utilize the CosmWasm contracts developed with this library, hosting environments must support the CosmWasm module and be using the version of `ibc-go` that supports the `08-wasm` proxy light client. - > [!CAUTION] - > The `ibc-client-cw` is currently in development and should not be - deployed for production use. Users are advised to exercise caution and test - thoroughly in non-production environments. +> [!CAUTION] +> The `ibc-client-cw` is currently in development and should not be + deployed for production use. Users are advised to exercise caution and test + thoroughly in non-production environments. -- [ibc-client-tendermint-cw](./../cosmwasm/ibc-clients/ics07-tendermint): CosmWasm Contract +- [ibc-client-tendermint-cw](./ibc-clients/ics07-tendermint): CosmWasm Contract - > [!TIP] - > The pre-compiled CosmWasm contract for `ibc-client-tendermint-cw` is available - > as Github workflow artifacts at - > [_Actions_](https://github.com/cosmos/ibc-rs/actions/workflows/upload-cw-clients.yaml) - > tab. They can be downloaded - > [during a Github workflow](https://github.com/cosmos/ibc-rs/blob/1098f252c04152812f026520e28e323f3bc0507e/.github/workflows/upload-cw-clients.yaml#L87-L96) - > using `actions/download-artifact@v4` action. +> [!TIP] +> The pre-compiled CosmWasm contract for `ibc-client-tendermint-cw` is available +> as Github workflow artifacts at +> [_Actions_](https://github.com/cosmos/ibc-rs/actions/workflows/upload-cw-clients.yaml) +> tab. They can be downloaded +> [during a Github workflow](https://github.com/cosmos/ibc-rs/blob/1098f252c04152812f026520e28e323f3bc0507e/.github/workflows/upload-cw-clients.yaml#L87-L96) +> using `actions/download-artifact@v4` action. diff --git a/cosmwasm/ibc-clients/cw-context/src/types/msgs.rs b/cosmwasm/ibc-clients/cw-context/src/types/msgs.rs index 59f96ed489..499bb9548f 100644 --- a/cosmwasm/ibc-clients/cw-context/src/types/msgs.rs +++ b/cosmwasm/ibc-clients/cw-context/src/types/msgs.rs @@ -122,7 +122,7 @@ pub struct MerklePath { #[cw_serde] pub struct VerifyMembershipMsgRaw { pub proof: Binary, - pub path: MerklePath, + pub merkle_path: MerklePath, pub value: Binary, pub height: RawHeight, pub delay_block_period: u64, @@ -144,8 +144,8 @@ impl TryFrom for VerifyMembershipMsg { fn try_from(mut raw: VerifyMembershipMsgRaw) -> Result { let proof = CommitmentProofBytes::try_from(raw.proof.to_vec())?; - let prefix = CommitmentPrefix::from_bytes(raw.path.key_path.remove(0)); - let path = PathBytes::flatten(raw.path.key_path); + let prefix = CommitmentPrefix::from_bytes(raw.merkle_path.key_path.remove(0)); + let path = PathBytes::flatten(raw.merkle_path.key_path); let height = Height::try_from(raw.height)?; Ok(Self { @@ -163,7 +163,7 @@ impl TryFrom for VerifyMembershipMsg { #[cw_serde] pub struct VerifyNonMembershipMsgRaw { pub proof: Binary, - pub path: MerklePath, + pub merkle_path: MerklePath, pub height: RawHeight, pub delay_block_period: u64, pub delay_time_period: u64, @@ -183,8 +183,8 @@ impl TryFrom for VerifyNonMembershipMsg { fn try_from(mut raw: VerifyNonMembershipMsgRaw) -> Result { let proof = CommitmentProofBytes::try_from(raw.proof.to_vec())?; - let prefix = CommitmentPrefix::from_bytes(raw.path.key_path.remove(0)); - let path = PathBytes::flatten(raw.path.key_path); + let prefix = CommitmentPrefix::from_bytes(raw.merkle_path.key_path.remove(0)); + let path = PathBytes::flatten(raw.merkle_path.key_path); let height = raw.height.try_into()?; Ok(Self { @@ -277,7 +277,7 @@ mod test { "delay_time_period":0, "delay_block_period":0, "proof":"CuECCt4CChhjb25uZWN0aW9ucy9jb25uZWN0aW9uLTASWgoPMDctdGVuZGVybWludC0wEiMKATESDU9SREVSX09SREVSRUQSD09SREVSX1VOT1JERVJFRBgCIiAKCTA4LXdhc20tMBIMY29ubmVjdGlvbi0wGgUKA2liYxoLCAEYASABKgMAAkgiKQgBEiUCBHAg3HTYmBAMxlr6u0mv6wCpm3ur2WQc7A3Af6aV7Ye0Fe0gIisIARIEBAZwIBohIHXEkQ9RIH08ZZYBIP6THxOOJiRmjXWGn1G4RCWT3V6rIisIARIEBgxwIBohIEUjGWV7YLPEzdFVLAb0lv4VvP7A+l1TqFkjpx1kDKAPIikIARIlCBhwILWsAKEot+2MknVyn5zcS0qsqVhRj4AHpgDx7fNPbfhtICIpCAESJQxAcCCzyYMGE+CdCltudr1ddHvCJrqv3kl/i7YnMLx3XWJt/yAK/AEK+QEKA2liYxIg2nvqL76rejXXGlX6ng/UKrbw+72C8uKKgM2vP0JKj1QaCQgBGAEgASoBACIlCAESIQEGuZwNgRn/HtvL4WXQ8ZM327wIDmd8iOV6oq52fr8PDyInCAESAQEaIKplBAbqDXbjndQ9LqapHj/aockI/CGnymjl5izIEVY5IiUIARIhAdt4G8DCLINAaaJnhUMIzv74AV3zZiugAyyZ/lWYRv+cIiUIARIhAf+sohoEV+uWeKThAPEbqCUivWT4H8KNT7Giw9//LsyvIicIARIBARogNHO4HC5KxPCwBdQGgBCscVtEKw+YSn2pnf654Y3Oxik=", - "path":{"key_path":["aWJj","Y29ubmVjdGlvbnMvY29ubmVjdGlvbi0w"]}, + "merkle_path":{"key_path":["aWJj","Y29ubmVjdGlvbnMvY29ubmVjdGlvbi0w"]}, "value":"Cg8wNy10ZW5kZXJtaW50LTASIwoBMRINT1JERVJfT1JERVJFRBIPT1JERVJfVU5PUkRFUkVEGAIiIAoJMDgtd2FzbS0wEgxjb25uZWN0aW9uLTAaBQoDaWJj" } }"#;