From 0ee13805c11973818bd74dadf3554828d563f1da Mon Sep 17 00:00:00 2001 From: Christian Gorenflo Date: Fri, 22 Sep 2023 17:39:26 -0400 Subject: [PATCH 01/11] refactor: extract gateway execute module (#122) --- contracts/gateway/src/contract.rs | 112 +--------------------- contracts/gateway/src/contract/execute.rs | 104 ++++++++++++++++++++ 2 files changed, 106 insertions(+), 110 deletions(-) create mode 100644 contracts/gateway/src/contract/execute.rs diff --git a/contracts/gateway/src/contract.rs b/contracts/gateway/src/contract.rs index dca0ff58a..5c75c421b 100644 --- a/contracts/gateway/src/contract.rs +++ b/contracts/gateway/src/contract.rs @@ -8,10 +8,10 @@ use crate::{ state::{Config, CONFIG, OUTGOING_MESSAGES}, }; -use connection_router::state::NewMessage; - use self::execute::{route_incoming_messages, route_outgoing_messages, verify_messages}; +mod execute; + #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( deps: DepsMut, @@ -48,114 +48,6 @@ pub fn execute( .map_err(axelar_wasm_std::ContractError::from) } -pub mod execute { - - use connection_router::state::CrossChainId; - use cosmwasm_std::{to_binary, QueryRequest, WasmMsg, WasmQuery}; - - use crate::{events::GatewayEvent, state::OUTGOING_MESSAGES}; - - use super::*; - - fn contains_duplicates(msgs: &mut Vec) -> bool { - let orig_len = msgs.len(); - msgs.sort_unstable_by_key(|msg| msg.cc_id.to_string()); - msgs.dedup_by(|a, b| a.cc_id == b.cc_id); - orig_len != msgs.len() - } - - fn partition_by_verified( - deps: DepsMut, - msgs: Vec, - ) -> Result<(Vec, Vec), ContractError> { - let verifier = CONFIG.load(deps.storage)?.verifier; - - let query_msg = aggregate_verifier::msg::QueryMsg::IsVerified { - messages: msgs.clone(), - }; - let query_response: Vec<(CrossChainId, bool)> = - deps.querier.query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: verifier.to_string(), - msg: to_binary(&query_msg)?, - }))?; - - Ok(msgs.into_iter().partition(|msg| -> bool { - match query_response.iter().find(|r| msg.cc_id == r.0) { - Some((_, v)) => *v, - None => false, - } - })) - } - - pub fn verify_messages( - deps: DepsMut, - mut msgs: Vec, - ) -> Result { - let config = CONFIG.load(deps.storage)?; - let verifier = config.verifier; - - if contains_duplicates(&mut msgs) { - return Err(ContractError::DuplicateMessageID); - } - - let (_, unverified) = partition_by_verified(deps, msgs)?; - - Ok(Response::new().add_message(WasmMsg::Execute { - contract_addr: verifier.to_string(), - msg: to_binary(&aggregate_verifier::msg::ExecuteMsg::VerifyMessages { - messages: unverified, - })?, - funds: vec![], - })) - } - - pub fn route_incoming_messages( - deps: DepsMut, - mut msgs: Vec, - ) -> Result { - let router = CONFIG.load(deps.storage)?.router; - - if contains_duplicates(&mut msgs) { - return Err(ContractError::DuplicateMessageID); - } - - let (verified, unverified) = partition_by_verified(deps, msgs.clone())?; - - Ok(Response::new() - .add_message(WasmMsg::Execute { - contract_addr: router.to_string(), - msg: to_binary(&connection_router::msg::ExecuteMsg::RouteMessages( - verified.clone(), - ))?, - funds: vec![], - }) - .add_events( - verified - .into_iter() - .map(|msg| GatewayEvent::MessageRouted { msg }.into()), - ) - .add_events( - unverified - .into_iter() - .map(|msg| GatewayEvent::MessageRoutingFailed { msg }.into()), - )) - } - - pub fn route_outgoing_messages( - deps: DepsMut, - msgs: Vec, - ) -> Result { - for m in &msgs { - OUTGOING_MESSAGES.save(deps.storage, m.cc_id.clone(), m)?; - } - - Ok(Response::new().add_events( - msgs.into_iter() - .map(|msg| GatewayEvent::MessageRouted { msg }.into()), - )) - } -} - #[cfg_attr(not(feature = "library"), entry_point)] pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { match msg { diff --git a/contracts/gateway/src/contract/execute.rs b/contracts/gateway/src/contract/execute.rs new file mode 100644 index 000000000..5d269c23f --- /dev/null +++ b/contracts/gateway/src/contract/execute.rs @@ -0,0 +1,104 @@ +use connection_router::state::{CrossChainId, NewMessage}; +use cosmwasm_std::{to_binary, QueryRequest, WasmMsg, WasmQuery}; + +use crate::{events::GatewayEvent, state::OUTGOING_MESSAGES}; + +use super::*; + +fn contains_duplicates(msgs: &mut Vec) -> bool { + let orig_len = msgs.len(); + msgs.sort_unstable_by_key(|msg| msg.cc_id.to_string()); + msgs.dedup_by(|a, b| a.cc_id == b.cc_id); + orig_len != msgs.len() +} + +fn partition_by_verified( + deps: DepsMut, + msgs: Vec, +) -> Result<(Vec, Vec), ContractError> { + let verifier = CONFIG.load(deps.storage)?.verifier; + + let query_msg = aggregate_verifier::msg::QueryMsg::IsVerified { + messages: msgs.clone(), + }; + let query_response: Vec<(CrossChainId, bool)> = + deps.querier.query(&QueryRequest::Wasm(WasmQuery::Smart { + contract_addr: verifier.to_string(), + msg: to_binary(&query_msg)?, + }))?; + + Ok(msgs.into_iter().partition(|msg| -> bool { + match query_response.iter().find(|r| msg.cc_id == r.0) { + Some((_, v)) => *v, + None => false, + } + })) +} + +pub fn verify_messages( + deps: DepsMut, + mut msgs: Vec, +) -> Result { + let config = CONFIG.load(deps.storage)?; + let verifier = config.verifier; + + if contains_duplicates(&mut msgs) { + return Err(ContractError::DuplicateMessageID); + } + + let (_, unverified) = partition_by_verified(deps, msgs)?; + + Ok(Response::new().add_message(WasmMsg::Execute { + contract_addr: verifier.to_string(), + msg: to_binary(&aggregate_verifier::msg::ExecuteMsg::VerifyMessages { + messages: unverified, + })?, + funds: vec![], + })) +} + +pub fn route_incoming_messages( + deps: DepsMut, + mut msgs: Vec, +) -> Result { + let router = CONFIG.load(deps.storage)?.router; + + if contains_duplicates(&mut msgs) { + return Err(ContractError::DuplicateMessageID); + } + + let (verified, unverified) = partition_by_verified(deps, msgs.clone())?; + + Ok(Response::new() + .add_message(WasmMsg::Execute { + contract_addr: router.to_string(), + msg: to_binary(&connection_router::msg::ExecuteMsg::RouteMessages( + verified.clone(), + ))?, + funds: vec![], + }) + .add_events( + verified + .into_iter() + .map(|msg| GatewayEvent::MessageRouted { msg }.into()), + ) + .add_events( + unverified + .into_iter() + .map(|msg| GatewayEvent::MessageRoutingFailed { msg }.into()), + )) +} + +pub fn route_outgoing_messages( + deps: DepsMut, + msgs: Vec, +) -> Result { + for m in &msgs { + OUTGOING_MESSAGES.save(deps.storage, m.cc_id.clone(), m)?; + } + + Ok(Response::new().add_events( + msgs.into_iter() + .map(|msg| GatewayEvent::MessageRouted { msg }.into()), + )) +} From aceb0ec0b86c27a3942a437f012a8322bbb72b6a Mon Sep 17 00:00:00 2001 From: haiyizxx Date: Fri, 22 Sep 2023 18:16:54 -0400 Subject: [PATCH 02/11] feat: sui JSON RPC (#114) --- .github/workflows/basic.yaml | 4 +- .github/workflows/codecov.yaml | 5 +- Cargo.lock | 15399 ++++++++++++++++++++++++------- ampd/Cargo.toml | 2 + ampd/src/evm/json_rpc.rs | 59 +- ampd/src/json_rpc.rs | 43 + ampd/src/lib.rs | 6 +- ampd/src/sui/json_rpc.rs | 39 + ampd/src/sui/mod.rs | 1 + 9 files changed, 11983 insertions(+), 3575 deletions(-) create mode 100644 ampd/src/json_rpc.rs create mode 100644 ampd/src/sui/json_rpc.rs create mode 100644 ampd/src/sui/mod.rs diff --git a/.github/workflows/basic.yaml b/.github/workflows/basic.yaml index 0b50f572a..a53633275 100644 --- a/.github/workflows/basic.yaml +++ b/.github/workflows/basic.yaml @@ -12,7 +12,7 @@ name: Basic jobs: test: name: Test Suite - runs-on: ubuntu-latest + runs-on: ubuntu-latest-large steps: - uses: actions/checkout@v4 @@ -69,7 +69,7 @@ jobs: lints: name: Lints - runs-on: ubuntu-latest + runs-on: ubuntu-latest-large steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/codecov.yaml b/.github/workflows/codecov.yaml index 9415571fa..9e73046a1 100644 --- a/.github/workflows/codecov.yaml +++ b/.github/workflows/codecov.yaml @@ -9,7 +9,7 @@ on: jobs: coverage: - runs-on: ubuntu-latest + runs-on: ubuntu-latest-large env: CARGO_TERM_COLOR: always steps: @@ -25,6 +25,9 @@ jobs: - name: Install protoc uses: arduino/setup-protoc@v2 + - name: Install libclang-dev + run: sudo apt-get install libclang-dev + - name: Cache build artifacts uses: Swatinem/rust-cache@v2 with: diff --git a/Cargo.lock b/Cargo.lock index 4a84bdf9b..96237f411 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -12,13 +12,22 @@ dependencies = [ "regex", ] +[[package]] +name = "addr2line" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +dependencies = [ + "gimli 0.27.3", +] + [[package]] name = "addr2line" version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ - "gimli", + "gimli 0.28.0", ] [[package]] @@ -27,6 +36,16 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + [[package]] name = "aes" version = "0.8.3" @@ -38,6 +57,20 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "aes-gcm" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + [[package]] name = "aggregate-verifier" version = "0.1.0" @@ -67,27 +100,68 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom", + "getrandom 0.2.10", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +dependencies = [ + "cfg-if", "once_cell", "version_check", ] [[package]] name = "aho-corasick" -version = "1.0.5" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + +[[package]] +name = "aho-corasick" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" dependencies = [ "memchr", ] +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + [[package]] name = "ampd" version = "0.1.0" dependencies = [ "async-trait", "axelar-wasm-std", - "base64 0.21.3", + "base64 0.21.4", "clap", "config", "connection-router", @@ -96,7 +170,7 @@ dependencies = [ "cosmwasm-std", "deref-derive", "derive_builder", - "dirs", + "dirs 5.0.1", "ecdsa 0.16.8", "elliptic-curve 0.13.5", "enum-display-derive", @@ -113,24 +187,26 @@ dependencies = [ "mockall", "multisig", "prost 0.11.9", - "rand", + "rand 0.8.5", "random-string", "report", "serde", "serde_json", - "serde_with", + "serde_with 3.3.0", + "sui-json-rpc-types", + "sui-types", "tendermint 0.33.0", "tendermint-rpc", "thiserror", "tokio", "tokio-stream", - "tokio-util", + "tokio-util 0.7.9", "toml 0.5.11", - "tonic", + "tonic 0.8.3", "tonic-build", "tracing", "tracing-core", - "tracing-subscriber", + "tracing-subscriber 0.3.17", "url", "valuable", "valuable-serde", @@ -152,6 +228,101 @@ dependencies = [ "libc", ] +[[package]] +name = "anemo" +version = "0.0.0" +source = "git+https://github.com/mystenlabs/anemo.git?rev=1169850e6af127397068cd86764c29b1d49dbe35#1169850e6af127397068cd86764c29b1d49dbe35" +dependencies = [ + "anyhow", + "async-trait", + "bincode", + "bytes", + "ed25519 1.5.3", + "futures", + "hex", + "http", + "matchit 0.5.0", + "pin-project-lite", + "pkcs8 0.9.0", + "quinn", + "quinn-proto", + "rand 0.8.5", + "rcgen", + "ring", + "rustls 0.21.7", + "rustls-webpki 0.101.5", + "serde", + "serde_json", + "socket2 0.5.4", + "tap", + "thiserror", + "tokio", + "tokio-util 0.7.9", + "tower", + "tracing", + "x509-parser", +] + +[[package]] +name = "anemo-build" +version = "0.0.0" +source = "git+https://github.com/mystenlabs/anemo.git?rev=1169850e6af127397068cd86764c29b1d49dbe35#1169850e6af127397068cd86764c29b1d49dbe35" +dependencies = [ + "prettyplease 0.1.25", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "anemo-cli" +version = "0.0.0" +source = "git+https://github.com/mystenlabs/anemo.git?rev=1169850e6af127397068cd86764c29b1d49dbe35#1169850e6af127397068cd86764c29b1d49dbe35" +dependencies = [ + "anemo", + "anemo-tower", + "bytes", + "clap", + "dashmap", + "rand 0.8.5", + "tokio", + "tower", + "tracing", +] + +[[package]] +name = "anemo-tower" +version = "0.0.0" +source = "git+https://github.com/mystenlabs/anemo.git?rev=1169850e6af127397068cd86764c29b1d49dbe35#1169850e6af127397068cd86764c29b1d49dbe35" +dependencies = [ + "anemo", + "bytes", + "dashmap", + "futures", + "governor", + "nonzero_ext", + "pin-project-lite", + "tokio", + "tower", + "tracing", + "uuid 1.4.1", +] + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + [[package]] name = "anstream" version = "0.5.0" @@ -168,9 +339,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea" +checksum = "b84bf0a05bbb2a83e5eb6fa36bb6e87baa08193c35ff52bbf6b38d8af2890e46" [[package]] name = "anstyle-parse" @@ -187,7 +358,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" dependencies = [ - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -197,7 +368,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -205,5637 +376,13759 @@ name = "anyhow" version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +dependencies = [ + "backtrace", +] [[package]] -name = "array-init" -version = "0.0.4" +name = "arbitrary" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23589ecb866b460d3a0f1278834750268c607e8e28a1b982c907219f3178cd72" +checksum = "e2d098ff73c1ca148721f37baad5ea6a465a13f9573aba8641fbbbae8164a54e" dependencies = [ - "nodrop", + "derive_arbitrary", ] [[package]] -name = "arrayvec" -version = "0.7.4" +name = "arc-swap" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" +dependencies = [ + "serde", +] [[package]] -name = "ascii-canvas" -version = "3.0.0" +name = "ark-bls12-381" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" dependencies = [ - "term", + "ark-ec", + "ark-ff", + "ark-serialize", + "ark-std", ] [[package]] -name = "async-stream" -version = "0.3.5" +name = "ark-bn254" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "a22f4561524cd949590d78d7d4c5df8f592430d221f7f3c9497bbafd8972120f" dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", + "ark-ec", + "ark-ff", + "ark-std", ] [[package]] -name = "async-stream-impl" -version = "0.3.5" +name = "ark-crypto-primitives" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "1f3a13b34da09176a8baba701233fdffbaa7c1b1192ce031a3da4e55ce1f1a56" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", + "ark-ec", + "ark-ff", + "ark-r1cs-std", + "ark-relations", + "ark-serialize", + "ark-snark", + "ark-std", + "blake2", + "derivative", + "digest 0.10.7", + "rayon", + "sha2 0.10.7", + "tracing", ] [[package]] -name = "async-trait" -version = "0.1.73" +name = "ark-ec" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", + "ark-ff", + "ark-poly", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "itertools 0.10.5", + "num-traits", + "rayon", + "zeroize", ] [[package]] -name = "async_io_stream" -version = "0.3.3" +name = "ark-ff" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" dependencies = [ - "futures", - "pharos", + "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 = "auto_impl" -version = "1.1.0" +name = "ark-ff-asm" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", + "quote 1.0.33", "syn 1.0.109", ] [[package]] -name = "autocfg" -version = "1.1.0" +name = "ark-ff-macros" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "axelar-wasm-std" -version = "0.1.0" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cosmwasm-storage", - "cw-multi-test", - "cw-storage-plus 1.1.0", - "error-stack", - "flagset", + "num-bigint", "num-traits", - "rand", - "report", - "schemars", - "serde", - "serde_json", - "sha3", - "thiserror", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] -name = "axelar-wasm-std-derive" -version = "0.1.0" +name = "ark-groth16" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20ceafa83848c3e390f1cbf124bc3193b3e639b3f02009e0e290809a501b95fc" dependencies = [ - "axelar-wasm-std", - "error-stack", - "quote", - "report", - "syn 2.0.29", - "thiserror", + "ark-crypto-primitives", + "ark-ec", + "ark-ff", + "ark-poly", + "ark-relations", + "ark-serialize", + "ark-std", + "rayon", ] [[package]] -name = "axum" -version = "0.6.20" +name = "ark-poly" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" dependencies = [ - "async-trait", - "axum-core", - "bitflags 1.3.2", - "bytes", - "futures-util", - "http", - "http-body", - "hyper", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper", - "tower", - "tower-layer", - "tower-service", + "ark-ff", + "ark-serialize", + "ark-std", + "derivative", + "hashbrown 0.13.2", + "rayon", ] [[package]] -name = "axum-core" -version = "0.3.4" +name = "ark-r1cs-std" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "de1d1472e5cb020cb3405ce2567c91c8d43f21b674aef37b0202f5c3304761db" dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "mime", - "rustversion", - "tower-layer", - "tower-service", + "ark-ec", + "ark-ff", + "ark-relations", + "ark-std", + "derivative", + "num-bigint", + "num-integer", + "num-traits", + "tracing", ] [[package]] -name = "backtrace" -version = "0.3.69" +name = "ark-relations" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "00796b6efc05a3f48225e59cb6a2cda78881e7c390872d5786aaf112f31fb4f0" dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", + "ark-ff", + "ark-std", + "tracing", + "tracing-subscriber 0.2.25", ] [[package]] -name = "base16ct" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" - -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414dcefbc63d77c526a76b3afcf6fbb9b5e2791c19c3aa2297733208750c6e53" - -[[package]] -name = "base64ct" -version = "1.6.0" +name = "ark-secp256r1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "batching" -version = "0.1.0" +checksum = "3975a01b0a6e3eae0f72ec7ca8598a6620fc72fa5981f6f5cca33b7cd788f633" dependencies = [ - "axelar-wasm-std", - "axelar-wasm-std-derive", - "cosmwasm-schema", - "cosmwasm-std", - "cw2 0.15.1", - "error-stack", - "report", - "thiserror", + "ark-ec", + "ark-ff", + "ark-std", ] [[package]] -name = "bcs" -version = "0.1.5" +name = "ark-serialize" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd3ffe8b19a604421a5d461d4a70346223e535903fbc3067138bddbebddcf77" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ - "serde", - "thiserror", + "ark-serialize-derive", + "ark-std", + "digest 0.10.7", + "num-bigint", ] [[package]] -name = "bech32" -version = "0.9.1" +name = "ark-serialize-derive" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] [[package]] -name = "bip32" -version = "0.5.1" +name = "ark-snark" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e141fb0f8be1c7b45887af94c88b182472b57c96b56773250ae00cd6a14a164" +checksum = "84d3cc6833a335bb8a600241889ead68ee89a3cf8448081fb7694c0fe503da63" dependencies = [ - "bs58", - "hmac", - "k256 0.13.1", - "once_cell", - "pbkdf2 0.12.2", - "rand_core 0.6.4", - "ripemd", - "sha2 0.10.7", - "subtle", - "zeroize", + "ark-ff", + "ark-relations", + "ark-serialize", + "ark-std", ] [[package]] -name = "bit-set" -version = "0.5.3" +name = "ark-std" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ - "bit-vec", + "num-traits", + "rand 0.8.5", + "rayon", ] [[package]] -name = "bit-vec" -version = "0.6.3" +name = "arrayref" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] -name = "bitflags" -version = "1.3.2" +name = "arrayvec" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] -name = "bitflags" -version = "2.4.0" +name = "arrayvec" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] -name = "bitvec" -version = "1.0.1" +name = "ascii-canvas" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" dependencies = [ - "funty", - "radium", - "tap", - "wyz", + "term", ] [[package]] -name = "block-buffer" -version = "0.9.0" +name = "ascii_utils" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] +checksum = "71938f30533e4d95a6d17aa530939da3842c2ab6f4f84b9dae68447e4129f74a" [[package]] -name = "block-buffer" -version = "0.10.4" +name = "asn1-rs" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" dependencies = [ - "generic-array", + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", + "time 0.3.28", ] [[package]] -name = "bnum" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "845141a4fade3f790628b7daaaa298a25b204fb28907eb54febe5142db6ce653" - -[[package]] -name = "bs58" -version = "0.5.0" +name = "asn1-rs-derive" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "sha2 0.10.7", - "tinyvec", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", + "synstructure", ] [[package]] -name = "bumpalo" -version = "3.13.0" +name = "asn1-rs-impl" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] [[package]] -name = "byte-slice-cast" -version = "1.2.2" +name = "assert_cmd" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "88903cb14723e4d4003335bb7f8a14f27691649105346a0f0957466c096adfe6" +dependencies = [ + "anstyle", + "bstr", + "doc-comment", + "predicates 3.0.4", + "predicates-core", + "predicates-tree", + "wait-timeout", +] [[package]] -name = "byteorder" -version = "1.4.3" +name = "async-compression" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" +dependencies = [ + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", +] [[package]] -name = "bytes" -version = "1.4.0" +name = "async-graphql" +version = "5.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "b35ef8f9be23ee30fe1eb1cf175c689bc33517c6c6d0fd0669dade611e5ced7f" dependencies = [ + "async-graphql-derive", + "async-graphql-parser", + "async-graphql-value", + "async-stream", + "async-trait", + "base64 0.13.1", + "bytes", + "fast_chemail", + "fnv", + "futures-util", + "handlebars", + "http", + "indexmap 1.9.3", + "mime", + "multer", + "num-traits", + "once_cell", + "pin-project-lite", + "regex", "serde", + "serde_json", + "serde_urlencoded", + "static_assertions", + "tempfile", + "thiserror", ] [[package]] -name = "bzip2" -version = "0.4.4" +name = "async-graphql-axum" +version = "5.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +checksum = "777d02b4b35c1eb15bb63391f45b4622206fe1199940fa8b4b6136904fae035c" dependencies = [ - "bzip2-sys", - "libc", + "async-graphql", + "async-trait", + "axum", + "bytes", + "futures-util", + "http-body", + "serde_json", + "tokio-util 0.7.9", + "tower-service", ] [[package]] -name = "bzip2-sys" -version = "0.1.11+1.0.8" +name = "async-graphql-derive" +version = "5.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "1a0f6ceed3640b4825424da70a5107e79d48d9b2bc6318dfc666b2fc4777f8c4" dependencies = [ - "cc", - "libc", - "pkg-config", + "Inflector", + "async-graphql-parser", + "darling 0.14.4", + "proc-macro-crate", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", + "thiserror", ] [[package]] -name = "camino" -version = "1.1.6" +name = "async-graphql-parser" +version = "5.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +checksum = "ecc308cd3bc611ee86c9cf19182d2b5ee583da40761970e41207f088be3db18f" dependencies = [ + "async-graphql-value", + "pest", "serde", + "serde_json", ] [[package]] -name = "cargo-platform" -version = "0.1.3" +name = "async-graphql-value" +version = "5.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479" +checksum = "d461325bfb04058070712296601dfe5e5bd6cdff84780a0a8c569ffb15c87eb3" dependencies = [ + "bytes", + "indexmap 1.9.3", "serde", + "serde_json", ] [[package]] -name = "cargo_metadata" -version = "0.17.0" +name = "async-lock" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror", + "event-listener", ] [[package]] -name = "cc" -version = "1.0.83" +name = "async-recursion" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ - "jobserver", - "libc", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] -name = "cfg-if" -version = "1.0.0" +name = "async-stream" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] [[package]] -name = "chrono" -version = "0.4.27" +name = "async-stream-impl" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f56b4c72906975ca04becb8a30e102dfecddd0c06181e3e95ddc444be28881f8" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "android-tzdata", - "iana-time-zone", - "num-traits", - "serde", - "windows-targets", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] -name = "cipher" -version = "0.4.4" +name = "async-task" +version = "4.3.0" +source = "git+https://github.com/mystenmark/async-task?rev=4e45b26e11126b191701b9b2ce5e2346b8d7682f#4e45b26e11126b191701b9b2ce5e2346b8d7682f" + +[[package]] +name = "async-trait" +version = "0.1.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ - "crypto-common", - "inout", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] -name = "clap" -version = "4.4.1" +name = "async_io_stream" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c8d502cbaec4595d2e7d5f61e318f05417bd2b66fdc3809498f0d3fdf0bea27" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" dependencies = [ - "clap_builder", - "clap_derive", - "once_cell", + "futures", + "pharos", + "rustc_version", ] [[package]] -name = "clap_builder" -version = "4.4.1" +name = "async_once" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ce4f10ea3abcd6617873bae9f91d1c5332b4a778bd9ce34d0cd517474c1de82" + +[[package]] +name = "atomicwrites" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5891c7bc0edb3e1c2204fc5e94009affabeb1821c9e5fdc3959536c5c0bb984d" +checksum = "eb8f2cd6962fa53c0e2a9d3f97eaa7dbd1e3cbbeeb4745403515b42ae07b3ff6" dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "once_cell", - "strsim", + "tempfile", + "winapi", ] [[package]] -name = "clap_derive" -version = "4.4.0" +name = "auto_impl" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fd1a5729c4548118d7d70ff234a44868d00489a4b6597b0b020918a0e91a1a" +checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.29", + "proc-macro-error", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] -name = "clap_lex" -version = "0.5.1" +name = "auto_ops" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +checksum = "7460f7dd8e100147b82a63afca1a20eb6c231ee36b90ba7272e14951cb58af59" [[package]] -name = "coins-bip32" -version = "0.8.7" +name = "autocfg" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" -dependencies = [ - "bs58", - "coins-core", - "digest 0.10.7", - "hmac", - "k256 0.13.1", - "serde", - "sha2 0.10.7", - "thiserror", -] +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] -name = "coins-bip39" -version = "0.8.7" +name = "autotools" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" +checksum = "aef8da1805e028a172334c3b680f93e71126f2327622faef2ec3d893c0a4ad77" dependencies = [ - "bitvec", - "coins-bip32", - "hmac", - "once_cell", - "pbkdf2 0.12.2", - "rand", - "sha2 0.10.7", - "thiserror", + "cc", ] [[package]] -name = "coins-core" -version = "0.8.7" +name = "aws-config" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" +checksum = "fc6b3804dca60326e07205179847f17a4fce45af3a1106939177ad41ac08a6de" dependencies = [ - "base64 0.21.3", - "bech32", - "bs58", - "digest 0.10.7", - "generic-array", + "aws-credential-types", + "aws-http", + "aws-sdk-sso", + "aws-sdk-sts", + "aws-smithy-async", + "aws-smithy-client", + "aws-smithy-http", + "aws-smithy-http-tower", + "aws-smithy-json", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand 2.0.0", "hex", - "ripemd", - "serde", - "serde_derive", - "sha2 0.10.7", - "sha3", - "thiserror", + "http", + "hyper", + "ring", + "time 0.3.28", + "tokio", + "tower", + "tracing", + "zeroize", ] [[package]] -name = "colorchoice" -version = "1.0.0" +name = "aws-credential-types" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "70a66ac8ef5fa9cf01c2d999f39d16812e90ec1467bd382cbbb74ba23ea86201" +dependencies = [ + "aws-smithy-async", + "aws-smithy-types", + "fastrand 2.0.0", + "tokio", + "tracing", + "zeroize", +] [[package]] -name = "config" -version = "0.13.3" +name = "aws-http" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d379af7f68bfc21714c6c7dea883544201741d2ce8274bb12fa54f89507f52a7" +checksum = "3e626370f9ba806ae4c439e49675fd871f5767b093075cdf4fef16cac42ba900" dependencies = [ - "async-trait", - "json5", + "aws-credential-types", + "aws-smithy-http", + "aws-smithy-types", + "aws-types", + "bytes", + "http", + "http-body", "lazy_static", - "nom", - "pathdiff", - "ron", - "rust-ini", - "serde", - "serde_json", - "toml 0.5.11", - "yaml-rust", + "percent-encoding", + "pin-project-lite", + "tracing", ] [[package]] -name = "connection-router" -version = "0.1.0" +name = "aws-runtime" +version = "0.56.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ac5cf0ff19c1bca0cea7932e11b239d1025a45696a4f44f72ea86e2b8bdd07" dependencies = [ - "axelar-wasm-std", - "axelar-wasm-std-derive", - "cosmwasm-schema", - "cosmwasm-std", - "cosmwasm-storage", - "cw-multi-test", - "cw-storage-plus 1.1.0", - "cw2 0.15.1", - "error-stack", - "flagset", - "hex", - "itertools 0.11.0", - "rand", - "report", - "schemars", - "serde", - "serde_json", - "sha3", - "thiserror", + "aws-credential-types", + "aws-http", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-eventstream", + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "fastrand 2.0.0", + "http", + "percent-encoding", + "tracing", + "uuid 1.4.1", ] [[package]] -name = "const-hex" -version = "1.8.0" +name = "aws-sdk-dynamodb" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08849ed393c907c90016652a01465a12d86361cd38ad2a7de026c56a520cc259" +checksum = "d3b4df8750310555fa980f020f152e91013cf83d01036dab992cb64286e11431" dependencies = [ - "cfg-if", - "cpufeatures", - "hex", - "serde", + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-client", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "fastrand 2.0.0", + "http", + "regex", + "tokio-stream", + "tracing", ] [[package]] -name = "const-oid" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" - -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - -[[package]] -name = "core-foundation" -version = "0.9.3" +name = "aws-sdk-s3" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "1e30370b61599168d38190ad272bb91842cd81870a6ca035c05dd5726d22832c" dependencies = [ - "core-foundation-sys", - "libc", + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-checksums", + "aws-smithy-client", + "aws-smithy-eventstream", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-smithy-xml", + "aws-types", + "bytes", + "http", + "http-body", + "once_cell", + "percent-encoding", + "regex", + "tokio-stream", + "tracing", + "url", ] [[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "cosmos-sdk-proto" -version = "0.16.0" +name = "aws-sdk-sso" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4776e787b24d9568dd61d3237eeb4eb321d622fb881b858c7b82806420e87d4" +checksum = "903f888ff190e64f6f5c83fb0f8d54f9c20481f1dc26359bb8896f5d99908949" dependencies = [ - "prost 0.11.9", - "prost-types", - "tendermint-proto 0.27.0", - "tonic", + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-client", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-types", + "bytes", + "http", + "regex", + "tokio-stream", + "tracing", ] [[package]] -name = "cosmos-sdk-proto" -version = "0.19.0" +name = "aws-sdk-sts" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73c9d2043a9e617b0d602fbc0a0ecd621568edbf3a9774890a6d562389bd8e1c" +checksum = "a47ad6bf01afc00423d781d464220bf69fb6a674ad6629cbbcb06d88cdc2be82" dependencies = [ - "prost 0.11.9", - "prost-types", - "tendermint-proto 0.32.2", + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-smithy-async", + "aws-smithy-client", + "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-query", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-smithy-xml", + "aws-types", + "http", + "regex", + "tracing", ] [[package]] -name = "cosmrs" -version = "0.14.0" +name = "aws-sigv4" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af13955d6f356272e6def9ff5e2450a7650df536d8934f47052a20c76513d2f6" +checksum = "b7b28f4910bb956b7ab320b62e98096402354eca976c587d1eeccd523d9bac03" dependencies = [ - "bip32", - "cosmos-sdk-proto 0.19.0", - "ecdsa 0.16.8", - "eyre", - "getrandom", - "k256 0.13.1", - "rand_core 0.6.4", - "serde", - "serde_json", - "subtle-encoding", - "tendermint 0.32.2", - "thiserror", + "aws-smithy-eventstream", + "aws-smithy-http", + "bytes", + "form_urlencoded", + "hex", + "hmac 0.12.1", + "http", + "once_cell", + "percent-encoding", + "regex", + "sha2 0.10.7", + "time 0.3.28", + "tracing", ] [[package]] -name = "cosmwasm-crypto" -version = "1.3.3" +name = "aws-smithy-async" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "871ce1d5a4b00ed1741f84b377eec19fadd81a904a227bc1e268d76539d26f5e" +checksum = "2cdb73f85528b9d19c23a496034ac53703955a59323d581c06aa27b4e4e247af" dependencies = [ - "digest 0.10.7", - "ed25519-zebra", - "k256 0.11.6", - "rand_core 0.6.4", - "thiserror", + "futures-util", + "pin-project-lite", + "tokio", + "tokio-stream", ] [[package]] -name = "cosmwasm-derive" -version = "1.3.3" +name = "aws-smithy-checksums" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ce8b44b45a7c8c6d6f770cd0a51458c2445c7c15b6115e1d215fa35c77b305c" +checksum = "afb15946af1b8d3beeff53ad991d9bff68ac22426b6d40372b958a75fa61eaed" dependencies = [ - "syn 1.0.109", + "aws-smithy-http", + "aws-smithy-types", + "bytes", + "crc32c", + "crc32fast", + "hex", + "http", + "http-body", + "md-5 0.10.5", + "pin-project-lite", + "sha1", + "sha2 0.10.7", + "tracing", ] [[package]] -name = "cosmwasm-schema" -version = "1.3.3" +name = "aws-smithy-client" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99222fa0401ee36389550d8a065700380877a2299c3043d24c38d705708c9d9d" +checksum = "c27b2756264c82f830a91cb4d2d485b2d19ad5bea476d9a966e03d27f27ba59a" dependencies = [ - "cosmwasm-schema-derive", - "schemars", - "serde", - "serde_json", - "thiserror", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-http-tower", + "aws-smithy-types", + "bytes", + "fastrand 2.0.0", + "http", + "http-body", + "hyper", + "hyper-rustls 0.24.1", + "lazy_static", + "pin-project-lite", + "rustls 0.21.7", + "tokio", + "tower", + "tracing", ] [[package]] -name = "cosmwasm-schema-derive" -version = "1.3.3" +name = "aws-smithy-eventstream" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b74eaf9e585ef8e5e3486b240b13ee593cb0f658b5879696937d8c22243d4fb" +checksum = "850233feab37b591b7377fd52063aa37af615687f5896807abe7f49bd4e1d25b" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "aws-smithy-types", + "bytes", + "crc32fast", ] [[package]] -name = "cosmwasm-std" -version = "1.3.3" +name = "aws-smithy-http" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da78abcf059181e8cb01e95e5003cf64fe95dde6c72b3fe37e5cabc75cdba32a" +checksum = "54cdcf365d8eee60686885f750a34c190e513677db58bbc466c44c588abf4199" dependencies = [ - "base64 0.13.1", - "bnum", - "cosmwasm-crypto", - "cosmwasm-derive", - "derivative", - "forward_ref", - "hex", - "schemars", - "serde", - "serde-json-wasm", - "sha2 0.10.7", - "thiserror", + "aws-smithy-eventstream", + "aws-smithy-types", + "bytes", + "bytes-utils", + "futures-core", + "http", + "http-body", + "hyper", + "once_cell", + "percent-encoding", + "pin-project-lite", + "pin-utils", + "tokio", + "tokio-util 0.7.9", + "tracing", ] [[package]] -name = "cosmwasm-storage" -version = "1.3.3" +name = "aws-smithy-http-tower" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b52be0d56b78f502f3acb75e40908a0d04d9f265b6beb0f86b36ec2ece048748" +checksum = "822de399d0ce62829a69dfa8c5cd08efdbe61a7426b953e2268f8b8b52a607bd" dependencies = [ - "cosmwasm-std", - "serde", + "aws-smithy-http", + "aws-smithy-types", + "bytes", + "http", + "http-body", + "pin-project-lite", + "tower", + "tracing", ] [[package]] -name = "cpufeatures" -version = "0.2.9" +name = "aws-smithy-json" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "4fb1e7ab8fa7ad10c193af7ae56d2420989e9f4758bf03601a342573333ea34f" dependencies = [ - "libc", + "aws-smithy-types", ] [[package]] -name = "crc32fast" -version = "1.3.2" +name = "aws-smithy-query" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "28556a3902091c1f768a34f6c998028921bdab8d47d92586f363f14a4a32d047" dependencies = [ - "cfg-if", + "aws-smithy-types", + "urlencoding", ] [[package]] -name = "crossbeam-channel" -version = "0.5.8" +name = "aws-smithy-runtime" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +checksum = "745e096b3553e7e0f40622aa04971ce52765af82bebdeeac53aa6fc82fe801e6" dependencies = [ - "cfg-if", - "crossbeam-utils", + "aws-smithy-async", + "aws-smithy-client", + "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", + "bytes", + "fastrand 2.0.0", + "http", + "http-body", + "once_cell", + "pin-project-lite", + "pin-utils", + "tokio", + "tracing", ] [[package]] -name = "crossbeam-deque" -version = "0.8.3" +name = "aws-smithy-runtime-api" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "93d0ae0c9cfd57944e9711ea610b48a963fb174a53aabacc08c5794a594b1d02" dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", + "aws-smithy-async", + "aws-smithy-http", + "aws-smithy-types", + "bytes", + "http", + "tokio", + "tracing", ] [[package]] -name = "crossbeam-epoch" -version = "0.9.15" +name = "aws-smithy-types" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "d90dbc8da2f6be461fa3c1906b20af8f79d14968fe47f2b7d29d086f62a51728" dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "memoffset", - "scopeguard", + "base64-simd", + "itoa", + "num-integer", + "ryu", + "serde", + "time 0.3.28", ] [[package]] -name = "crossbeam-utils" -version = "0.8.16" +name = "aws-smithy-xml" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +checksum = "e01d2dedcdd8023043716cfeeb3c6c59f2d447fce365d8e194838891794b23b6" dependencies = [ - "cfg-if", + "xmlparser", ] [[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.4.9" +name = "aws-types" +version = "0.56.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +checksum = "85aa0451bf8af1bf22a4f028d5d28054507a14be43cb8ac0597a8471fba9edfe" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", + "aws-credential-types", + "aws-smithy-async", + "aws-smithy-client", + "aws-smithy-http", + "aws-smithy-types", + "http", + "rustc_version", + "tracing", ] [[package]] -name = "crypto-bigint" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15" +name = "axelar-wasm-std" +version = "0.1.0" dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", + "cosmwasm-schema", + "cosmwasm-std", + "cosmwasm-storage", + "cw-multi-test", + "cw-storage-plus 1.1.0", + "error-stack", + "flagset", + "num-traits", + "rand 0.8.5", + "report", + "schemars", + "serde", + "serde_json", + "sha3 0.10.8", + "thiserror", ] [[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +name = "axelar-wasm-std-derive" +version = "0.1.0" dependencies = [ - "generic-array", - "typenum", + "axelar-wasm-std", + "error-stack", + "quote 1.0.33", + "report", + "syn 2.0.37", + "thiserror", ] [[package]] -name = "ct-logs" -version = "0.8.0" +name = "axum" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ - "sct 0.6.1", + "async-trait", + "axum-core", + "base64 0.21.4", + "bitflags 1.3.2", + "bytes", + "futures-util", + "headers", + "http", + "http-body", + "hyper", + "itoa", + "matchit 0.7.2", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sha1", + "sync_wrapper", + "tokio", + "tokio-tungstenite 0.20.0", + "tower", + "tower-layer", + "tower-service", ] [[package]] -name = "ctr" -version = "0.9.2" +name = "axum-core" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" dependencies = [ - "cipher", + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "mime", + "rustversion", + "tower-layer", + "tower-service", ] [[package]] -name = "curve25519-dalek" -version = "3.2.0" +name = "axum-extra" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +checksum = "f9a320103719de37b7b4da4c8eb629d4573f6bcfd3dfe80d3208806895ccf81d" dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.5.1", - "subtle", - "zeroize", + "axum", + "bytes", + "futures-util", + "http", + "mime", + "pin-project-lite", + "tokio", + "tower", + "tower-http", + "tower-layer", + "tower-service", ] [[package]] -name = "curve25519-dalek-ng" -version = "4.1.1" +name = "axum-server" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" +checksum = "447f28c85900215cc1bea282f32d4a2f22d55c5a300afdfbc661c8d6a632e063" dependencies = [ - "byteorder", - "digest 0.9.0", - "rand_core 0.6.4", - "subtle-ng", - "zeroize", + "arc-swap", + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "rustls 0.21.7", + "rustls-pemfile", + "tokio", + "tokio-rustls 0.24.1", + "tower-service", ] [[package]] -name = "cw-multi-test" -version = "0.15.1" +name = "backoff" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8e81b4a7821d5eeba0d23f737c16027b39a600742ca8c32eb980895ffd270f4" +checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ - "anyhow", - "cosmwasm-std", - "cosmwasm-storage", - "cw-storage-plus 0.15.1", - "cw-utils 0.15.1", - "derivative", - "itertools 0.10.5", - "prost 0.9.0", - "schemars", - "serde", - "thiserror", + "futures-core", + "getrandom 0.2.10", + "instant", + "pin-project-lite", + "rand 0.8.5", + "tokio", ] [[package]] -name = "cw-storage-plus" -version = "0.15.1" +name = "backtrace" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6cf70ef7686e2da9ad7b067c5942cd3e88dd9453f7af42f54557f8af300fb0" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ - "cosmwasm-std", - "schemars", - "serde", + "addr2line 0.21.0", + "cc", + "cfg-if", + "libc", + "miniz_oxide 0.7.1", + "object 0.32.1", + "rustc-demangle", ] [[package]] -name = "cw-storage-plus" -version = "1.1.0" +name = "base-x" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f0e92a069d62067f3472c62e30adedb4cab1754725c0f2a682b3128d2bf3c79" -dependencies = [ - "cosmwasm-std", - "schemars", - "serde", -] +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" [[package]] -name = "cw-utils" -version = "0.15.1" +name = "base16ct" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ae0b69fa7679de78825b4edeeec045066aa2b2c4b6e063d80042e565bb4da5c" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw2 0.15.1", - "schemars", - "semver", - "serde", - "thiserror", -] +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" [[package]] -name = "cw-utils" -version = "1.0.1" +name = "base16ct" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c80e93d1deccb8588db03945016a292c3c631e6325d349ebb35d2db6f4f946f7" -dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw2 1.1.0", - "schemars", - "semver", - "serde", - "thiserror", -] +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" [[package]] -name = "cw0" -version = "0.10.3" +name = "base64" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae676b6cced78a3d38ad4b01ab4ed66fc78ac191c3c0d6bfd5372cb2efd473b" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" + +[[package]] +name = "base64-simd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" dependencies = [ - "cosmwasm-std", - "schemars", - "serde", - "thiserror", + "outref", + "vsimd", ] [[package]] -name = "cw2" -version = "0.15.1" +name = "base64-url" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5abb8ecea72e09afff830252963cb60faf945ce6cef2c20a43814516082653da" +checksum = "9c5b0a88aa36e9f095ee2e2b13fb8c5e4313e022783aedacc123328c0084916d" dependencies = [ - "cosmwasm-schema", - "cosmwasm-std", - "cw-storage-plus 0.15.1", - "schemars", - "serde", + "base64 0.21.4", ] [[package]] -name = "cw2" -version = "1.1.0" +name = "base64ct" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ac2dc7a55ad64173ca1e0a46697c31b7a5c51342f55a1e84a724da4eb99908" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "batching" +version = "0.1.0" dependencies = [ + "axelar-wasm-std", + "axelar-wasm-std-derive", "cosmwasm-schema", "cosmwasm-std", - "cw-storage-plus 1.1.0", - "schemars", - "serde", + "cw2 0.15.1", + "error-stack", + "report", "thiserror", ] [[package]] -name = "darling" -version = "0.14.4" +name = "bcs" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +checksum = "4bd3ffe8b19a604421a5d461d4a70346223e535903fbc3067138bddbebddcf77" dependencies = [ - "darling_core 0.14.4", - "darling_macro 0.14.4", + "serde", + "thiserror", ] [[package]] -name = "darling" -version = "0.20.3" +name = "bech32" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" -dependencies = [ - "darling_core 0.20.3", - "darling_macro 0.20.3", -] +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" [[package]] -name = "darling_core" -version = "0.14.4" +name = "beef" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 1.0.109", + "serde", ] [[package]] -name = "darling_core" -version = "0.20.3" +name = "better_any" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "b359aebd937c17c725e19efcb661200883f04c49c53e7132224dac26da39d4a0" dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.29", + "better_typeid_derive", ] [[package]] -name = "darling_macro" -version = "0.14.4" +name = "better_typeid_derive" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +checksum = "3deeecb812ca5300b7d3f66f730cc2ebd3511c3d36c691dd79c165d5b19a26e3" dependencies = [ - "darling_core 0.14.4", - "quote", + "proc-macro2 1.0.67", + "quote 1.0.33", "syn 1.0.109", ] [[package]] -name = "darling_macro" -version = "0.20.3" +name = "bimap" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "darling_core 0.20.3", - "quote", - "syn 2.0.29", + "serde", ] [[package]] -name = "data-encoding" -version = "2.4.0" +name = "bindgen" +version = "0.65.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5" +dependencies = [ + "bitflags 1.3.2", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "prettyplease 0.2.15", + "proc-macro2 1.0.67", + "quote 1.0.33", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.37", +] [[package]] -name = "der" -version = "0.6.1" +name = "bip32" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +checksum = "b30ed1d6f8437a487a266c8293aeb95b61a23261273e3e02912cdb8b68bf798b" dependencies = [ - "const-oid", + "bs58 0.4.0", + "hmac 0.12.1", + "k256 0.11.6", + "once_cell", + "pbkdf2 0.11.0", + "rand_core 0.6.4", + "ripemd", + "sha2 0.10.7", + "subtle", "zeroize", ] [[package]] -name = "der" -version = "0.7.8" +name = "bip32" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +checksum = "7e141fb0f8be1c7b45887af94c88b182472b57c96b56773250ae00cd6a14a164" dependencies = [ - "const-oid", + "bs58 0.5.0", + "hmac 0.12.1", + "k256 0.13.1", + "once_cell", + "pbkdf2 0.12.2", + "rand_core 0.6.4", + "ripemd", + "sha2 0.10.7", + "subtle", "zeroize", ] [[package]] -name = "deranged" -version = "0.3.8" +name = "bit-set" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" dependencies = [ - "serde", + "bit-vec", ] [[package]] -name = "deref-derive" +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitcoin-private" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4255bb7dd538590188bd0aea52e48bd699b19bd90b0d069ec2ced8461fe23273" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "73290177011694f38ec25e165d0387ab7ea749a4b81cd4c80dae5988229f7a57" [[package]] -name = "derivative" -version = "2.2.0" +name = "bitcoin_hashes" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +checksum = "5d7066118b13d4b20b23645932dfb3a81ce7e29f95726c2036fa33cd7b092501" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "bitcoin-private", ] [[package]] -name = "derive_builder" -version = "0.12.0" +name = "bitflags" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" dependencies = [ - "derive_builder_macro", + "serde", ] [[package]] -name = "derive_builder_core" -version = "0.12.0" +name = "bitmaps" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" +checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" dependencies = [ - "darling 0.14.4", - "proc-macro2", - "quote", - "syn 1.0.109", + "typenum", ] [[package]] -name = "derive_builder_macro" -version = "0.12.0" +name = "bitvec" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" +checksum = "7774144344a4faa177370406a7ff5f1da24303817368584c6206c8303eb07848" dependencies = [ - "derive_builder_core", - "syn 1.0.109", + "funty 1.1.0", + "radium 0.6.2", + "tap", + "wyz 0.2.0", ] [[package]] -name = "derive_more" -version = "0.99.17" +name = "bitvec" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "funty 2.0.0", + "radium 0.7.0", + "tap", + "wyz 0.5.1", ] [[package]] -name = "diff" -version = "0.1.13" +name = "blake2" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] [[package]] -name = "difflib" -version = "0.4.0" +name = "blake3" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" +checksum = "199c42ab6972d92c9f8995f086273d25c42fc0f7b2a1fcefba465c1352d25ba5" +dependencies = [ + "arrayref", + "arrayvec 0.7.4", + "cc", + "cfg-if", + "constant_time_eq 0.3.0", + "digest 0.10.7", +] [[package]] -name = "digest" +name = "block-buffer" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ + "block-padding 0.2.1", "generic-array", ] [[package]] -name = "digest" -version = "0.10.7" +name = "block-buffer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "block-buffer 0.10.4", - "const-oid", - "crypto-common", - "subtle", + "generic-array", ] [[package]] -name = "dirs" -version = "5.0.1" +name = "block-padding" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys", -] +checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" +name = "block-padding" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys", + "generic-array", ] [[package]] -name = "dirs-sys-next" -version = "0.1.2" +name = "blst" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +checksum = "c94087b935a822949d3291a9989ad2b2051ea141eda0fd4e478a75f6aa3e604b" dependencies = [ - "libc", - "redox_users", - "winapi", + "cc", + "glob", + "threadpool", + "zeroize", ] [[package]] -name = "dlv-list" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" - -[[package]] -name = "downcast" -version = "0.11.0" +name = "bnum" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" +checksum = "128a44527fc0d6abf05f9eda748b9027536e12dff93f5acc8449f51583309350" [[package]] -name = "dunce" -version = "1.0.4" +name = "brotli" +version = "3.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] [[package]] -name = "dyn-clone" -version = "1.0.13" +name = "brotli-decompressor" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfc4744c1b8f2a09adc0e55242f60b1af195d88596bd8700be74418c056c555" +checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] [[package]] -name = "ecdsa" -version = "0.14.8" +name = "bs58" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" dependencies = [ - "der 0.6.1", - "elliptic-curve 0.12.3", - "rfc6979 0.3.1", - "signature 1.6.4", + "sha2 0.9.9", ] [[package]] -name = "ecdsa" -version = "0.16.8" +name = "bs58" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" dependencies = [ - "der 0.7.8", - "digest 0.10.7", - "elliptic-curve 0.13.5", - "rfc6979 0.4.0", - "signature 2.1.0", - "spki 0.7.2", + "sha2 0.10.7", + "tinyvec", ] [[package]] -name = "ed25519" -version = "2.2.2" +name = "bstr" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60f6d271ca33075c88028be6f04d502853d63a5ece419d269c15315d4fc1cf1d" +checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a" dependencies = [ - "pkcs8 0.10.2", - "signature 2.1.0", + "memchr", + "regex-automata 0.3.8", + "serde", ] [[package]] -name = "ed25519-consensus" -version = "2.1.0" +name = "bulletproofs" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c8465edc8ee7436ffea81d21a019b16676ee3db267aa8d5a8d729581ecf998b" +checksum = "40e698f1df446cc6246afd823afbe2d121134d089c9102c1dd26d1264991ba32" dependencies = [ + "byteorder", + "clear_on_drop", "curve25519-dalek-ng", - "hex", + "digest 0.9.0", + "merlin", + "rand 0.8.5", "rand_core 0.6.4", - "sha2 0.9.9", - "zeroize", + "serde", + "serde_derive", + "sha3 0.9.1", + "subtle-ng", + "thiserror", ] [[package]] -name = "ed25519-zebra" -version = "3.1.0" +name = "bumpalo" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "bytecode-interpreter-crypto" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" dependencies = [ - "curve25519-dalek", - "hashbrown 0.12.3", - "hex", - "rand_core 0.6.4", - "serde", + "anyhow", + "curve25519-dalek-fiat", + "ed25519-dalek-fiat", "sha2 0.9.9", - "zeroize", + "sha3 0.9.1", ] [[package]] -name = "either" -version = "1.9.0" +name = "bytecount" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" [[package]] -name = "elliptic-curve" -version = "0.12.3" +name = "bytemuck" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" -dependencies = [ - "base16ct 0.1.1", - "crypto-bigint 0.4.9", - "der 0.6.1", - "digest 0.10.7", - "ff 0.12.1", - "generic-array", - "group 0.12.1", - "pkcs8 0.9.0", - "rand_core 0.6.4", - "sec1 0.3.0", - "subtle", - "zeroize", -] +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] -name = "elliptic-curve" -version = "0.13.5" +name = "byteorder" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" -dependencies = [ - "base16ct 0.2.0", - "crypto-bigint 0.5.2", - "digest 0.10.7", - "ff 0.13.0", - "generic-array", - "group 0.13.0", - "pkcs8 0.10.2", - "rand_core 0.6.4", - "sec1 0.7.3", - "subtle", - "zeroize", -] +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] -name = "ena" -version = "0.14.2" +name = "bytes" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" dependencies = [ - "log", + "serde", ] [[package]] -name = "encoding_rs" -version = "0.8.33" +name = "bytes-utils" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "e47d3a8076e283f3acd27400535992edb3ba4b5bb72f8891ad8fbe7932a7d4b9" dependencies = [ - "cfg-if", + "bytes", + "either", ] [[package]] -name = "enr" -version = "0.9.0" +name = "bzip2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be7b2ac146c1f99fe245c02d16af0696450d8e06c135db75e10eeb9e642c20d" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" dependencies = [ - "base64 0.21.3", - "bytes", - "hex", - "k256 0.13.1", - "log", - "rand", - "rlp", - "serde", - "serde-hex", - "sha3", - "zeroize", + "bzip2-sys", + "libc", ] [[package]] -name = "enum-display-derive" -version = "0.1.1" +name = "bzip2-sys" +version = "0.1.11+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ef37b2a9b242295d61a154ee91ae884afff6b8b933b486b12481cc58310ca" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "cc", + "libc", + "pkg-config", ] [[package]] -name = "equivalent" -version = "1.0.1" +name = "cached" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "bc2fafddf188d13788e7099295a59b99e99b2148ab2195cae454e754cc099925" +dependencies = [ + "async-trait", + "async_once", + "cached_proc_macro", + "cached_proc_macro_types", + "futures", + "hashbrown 0.13.2", + "instant", + "lazy_static", + "once_cell", + "thiserror", + "tokio", +] [[package]] -name = "errno" -version = "0.3.3" +name = "cached_proc_macro" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +checksum = "e10ca87c81aaa3a949dbbe2b5e6c2c45dbc94ba4897e45ea31ff9ec5087be3dc" dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", + "cached_proc_macro_types", + "darling 0.14.4", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] -name = "errno-dragonfly" -version = "0.1.2" +name = "cached_proc_macro_types" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663" + +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" dependencies = [ - "cc", - "libc", + "serde", ] [[package]] -name = "error-stack" -version = "0.4.0" +name = "cargo-platform" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6a37ef405b504fc3b87a24fa52906d98cdd1a7d4e5ef2b49f0d5fead138fced" +checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479" dependencies = [ - "anyhow", - "eyre", - "rustc_version", + "serde", ] [[package]] -name = "eth-keystore" -version = "0.5.0" +name = "cargo_metadata" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ - "aes", - "ctr", - "digest 0.10.7", - "hex", - "hmac", - "pbkdf2 0.11.0", - "rand", - "scrypt", + "camino", + "cargo-platform", + "semver 1.0.18", "serde", "serde_json", - "sha2 0.10.7", - "sha3", "thiserror", - "uuid", ] [[package]] -name = "ethabi" -version = "18.0.0" +name = "cargo_metadata" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" dependencies = [ - "ethereum-types", - "hex", - "once_cell", - "regex", + "camino", + "cargo-platform", + "semver 1.0.18", "serde", "serde_json", - "sha3", "thiserror", - "uint", ] [[package]] -name = "ethbloom" -version = "0.13.0" +name = "cassowary" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +checksum = "df8670b8c7b9dae1793364eafadf7239c40d669904660c5960d74cfd80b46a53" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "tiny-keccak", + "cipher", ] [[package]] -name = "ethereum-types" -version = "0.14.1" +name = "cc" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "primitive-types", - "scale-info", - "uint", + "jobserver", + "libc", ] [[package]] -name = "ethers" -version = "2.0.9" +name = "cexpr" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba3fd516c15a9a587135229466dbbfc85796de55c5660afbbb1b1c78517d85c" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ - "ethers-addressbook", - "ethers-contract", - "ethers-core", - "ethers-etherscan", - "ethers-middleware", - "ethers-providers", - "ethers-signers", - "ethers-solc", + "nom", ] [[package]] -name = "ethers-addressbook" -version = "2.0.9" +name = "cfg-expr" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0245617f11b8178fa50b52e433e2c34ac69f39116b62c8be2437decf2edf1986" +checksum = "a327683d7499ecc47369531a679fe38acdd300e09bf8c852d08b1e10558622bd" dependencies = [ - "ethers-core", - "once_cell", - "serde", - "serde_json", + "smallvec", + "target-lexicon", ] [[package]] -name = "ethers-contract" -version = "2.0.9" +name = "cfg-expr" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bb80fd2c22631a5eb8a02cbf373cc5fd86937fc966bb670b9a884580c8e71c" +checksum = "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3" dependencies = [ - "const-hex", - "ethers-contract-abigen", - "ethers-contract-derive", - "ethers-core", - "ethers-providers", - "futures-util", - "once_cell", - "pin-project", - "serde", - "serde_json", - "thiserror", + "smallvec", + "target-lexicon", ] [[package]] -name = "ethers-contract-abigen" -version = "2.0.9" +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22c54db0d393393e732a5b20273e4f8ab89f0cce501c84e75fab9c126799a6e6" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ - "Inflector", - "const-hex", - "dunce", - "ethers-core", - "ethers-etherscan", - "eyre", - "prettyplease 0.2.12", - "proc-macro2", - "quote", - "regex", - "reqwest", + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", "serde", - "serde_json", - "syn 2.0.29", - "toml 0.7.6", - "walkdir", + "wasm-bindgen", + "windows-targets 0.48.5", ] [[package]] -name = "ethers-contract-derive" -version = "2.0.9" +name = "chrono-tz" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ee4f216184a1304b707ed258f4f70aa40bf7e1522ab8963d127a8d516eaa1a" +checksum = "29c39203181991a7dd4343b8005bd804e7a9a37afb8ac070e43771e8c820bbde" dependencies = [ - "Inflector", - "const-hex", - "ethers-contract-abigen", - "ethers-core", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.29", + "chrono", + "chrono-tz-build 0.0.3", + "phf", ] [[package]] -name = "ethers-core" -version = "2.0.9" +name = "chrono-tz" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c29523f73c12753165781c6e5dc11c84d3e44c080a15f7c6cfbd70b514cb6f1" +checksum = "f1369bc6b9e9a7dfdae2055f6ec151fe9c554a9d23d357c0237cee2e25eaabb7" dependencies = [ - "arrayvec", - "bytes", - "cargo_metadata", "chrono", - "const-hex", - "elliptic-curve 0.13.5", - "ethabi", - "generic-array", - "k256 0.13.1", - "num_enum", - "once_cell", - "open-fastrlp", - "rand", - "rlp", - "serde", - "serde_json", - "strum", - "syn 2.0.29", - "tempfile", - "thiserror", - "tiny-keccak", - "unicode-xid", + "chrono-tz-build 0.2.0", + "phf", ] [[package]] -name = "ethers-etherscan" -version = "2.0.9" +name = "chrono-tz-build" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aab5af432b3fe5b7756b60df5c9ddeb85a13414575ad8a9acd707c24f0a77a5" +checksum = "6f509c3a87b33437b05e2458750a0700e5bdd6956176773e6c7d6dd15a283a0c" dependencies = [ - "ethers-core", - "reqwest", - "semver", - "serde", - "serde_json", - "thiserror", - "tracing", + "parse-zoneinfo", + "phf", + "phf_codegen", ] [[package]] -name = "ethers-middleware" -version = "2.0.9" +name = "chrono-tz-build" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "356151d5ded56d4918146366abc9dfc9df367cf0096492a7a5477b21b7693615" +checksum = "e2f5ebdc942f57ed96d560a6d1a459bae5851102a25d5bf89dc04ae453e31ecf" dependencies = [ - "async-trait", - "auto_impl", - "ethers-contract", - "ethers-core", - "ethers-etherscan", - "ethers-providers", - "ethers-signers", - "futures-channel", - "futures-locks", - "futures-util", - "instant", - "reqwest", - "serde", - "serde_json", - "thiserror", - "tokio", - "tracing", - "tracing-futures", - "url", + "parse-zoneinfo", + "phf", + "phf_codegen", ] [[package]] -name = "ethers-providers" -version = "2.0.9" +name = "ciborium" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00c84664b294e47fc2860d6db0db0246f79c4c724e552549631bb9505b834bee" +checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" dependencies = [ - "async-trait", - "auto_impl", - "base64 0.21.3", - "bytes", - "const-hex", - "enr", - "ethers-core", - "futures-core", - "futures-timer", - "futures-util", - "hashers", - "http", - "instant", - "jsonwebtoken", - "once_cell", - "pin-project", - "reqwest", + "ciborium-io", + "ciborium-ll", "serde", - "serde_json", - "thiserror", - "tokio", - "tokio-tungstenite", - "tracing", - "tracing-futures", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "ws_stream_wasm", ] [[package]] -name = "ethers-signers" -version = "2.0.9" +name = "ciborium-io" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" + +[[package]] +name = "ciborium-ll" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170b299698702ef1f53d2275af7d6d97409cfa4f9398ee9ff518f6bc9102d0ad" +checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" dependencies = [ - "async-trait", - "coins-bip32", - "coins-bip39", - "const-hex", - "elliptic-curve 0.13.5", - "eth-keystore", - "ethers-core", - "rand", - "sha2 0.10.7", - "thiserror", - "tracing", + "ciborium-io", + "half", ] [[package]] -name = "ethers-solc" -version = "2.0.9" +name = "cipher" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66559c8f774712df303c907d087275a52a2046b256791aaa566d5abc8ea66731" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "cfg-if", - "const-hex", - "dirs", - "dunce", - "ethers-core", - "glob", - "home", - "md-5", - "num_cpus", - "once_cell", - "path-slash", - "rayon", - "regex", - "semver", - "serde", - "serde_json", - "solang-parser", - "svm-rs", - "thiserror", - "tiny-keccak", - "tokio", - "tracing", - "walkdir", - "yansi", + "crypto-common", + "inout", ] [[package]] -name = "events" -version = "0.1.0" +name = "clang-sys" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" dependencies = [ - "axelar-wasm-std", - "base64 0.21.3", - "error-stack", - "serde_json", - "tendermint 0.33.0", - "thiserror", + "glob", + "libc", + "libloading", ] [[package]] -name = "events-derive" -version = "0.1.0" +name = "clap" +version = "4.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d7b8d5ec32af0fadc644bf1fd509a688c2103b185644bb1e29d164e0703136" dependencies = [ - "error-stack", - "events", - "quote", - "serde", - "serde_json", - "syn 2.0.29", + "clap_builder", + "clap_derive", ] [[package]] -name = "eyre" -version = "0.6.8" +name = "clap_builder" +version = "4.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" +checksum = "5179bb514e4d7c2051749d8fcefa2ed6d06a9f4e6d69faf3805f5d80b8cf8d56" dependencies = [ - "indenter", - "once_cell", + "anstream", + "anstyle", + "clap_lex", + "strsim", + "terminal_size 0.3.0", ] [[package]] -name = "fastrand" -version = "1.9.0" +name = "clap_derive" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" dependencies = [ - "instant", + "heck 0.4.1", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] -name = "fastrand" -version = "2.0.0" +name = "clap_lex" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" [[package]] -name = "ff" -version = "0.12.1" +name = "clear_on_drop" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +checksum = "38508a63f4979f0048febc9966fadbd48e5dab31fd0ec6a3f151bbf4a74f7423" dependencies = [ - "rand_core 0.6.4", - "subtle", + "cc", ] [[package]] -name = "ff" -version = "0.13.0" +name = "clipboard-win" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" dependencies = [ - "rand_core 0.6.4", - "subtle", + "error-code", + "str-buf", + "winapi", ] [[package]] -name = "fixed-hash" -version = "0.8.0" +name = "codespan" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +checksum = "3362992a0d9f1dd7c3d0e89e0ab2bb540b7a95fea8cd798090e758fda2899b5e" dependencies = [ - "byteorder", - "rand", - "rustc-hex", - "static_assertions", + "codespan-reporting", + "serde", ] [[package]] -name = "fixedbitset" -version = "0.4.2" +name = "codespan-reporting" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "serde", + "termcolor", + "unicode-width", +] [[package]] -name = "flagset" -version = "0.4.3" +name = "coins-bip32" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda653ca797810c02f7ca4b804b40b8b95ae046eb989d356bce17919a8c25499" +checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" dependencies = [ + "bs58 0.5.0", + "coins-core", + "digest 0.10.7", + "hmac 0.12.1", + "k256 0.13.1", "serde", + "sha2 0.10.7", + "thiserror", ] [[package]] -name = "flate2" -version = "1.0.27" +name = "coins-bip39" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" dependencies = [ - "crc32fast", - "miniz_oxide", + "bitvec 1.0.1", + "coins-bip32", + "hmac 0.12.1", + "once_cell", + "pbkdf2 0.12.2", + "rand 0.8.5", + "sha2 0.10.7", + "thiserror", ] [[package]] -name = "flex-error" -version = "0.4.4" +name = "coins-core" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c606d892c9de11507fa0dcffc116434f94e105d0bbdc4e405b61519464c49d7b" +checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" dependencies = [ - "eyre", - "paste", + "base64 0.21.4", + "bech32", + "bs58 0.5.0", + "digest 0.10.7", + "generic-array", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2 0.10.7", + "sha3 0.10.8", + "thiserror", ] [[package]] -name = "float-cmp" -version = "0.9.0" +name = "collectable" +version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" -dependencies = [ - "num-traits", -] +checksum = "08abddbaad209601e53c7dd4308d8c04c06f17bb7df006434e586a22b83be45a" [[package]] -name = "fnv" -version = "1.0.7" +name = "colorchoice" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] -name = "form_urlencoded" -version = "1.2.0" +name = "colored" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" dependencies = [ - "percent-encoding", + "is-terminal", + "lazy_static", + "windows-sys 0.48.0", ] [[package]] -name = "forward_ref" -version = "1.0.0" +name = "colored-diff" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" +checksum = "410208eb08c3f3ad44b95b51c4fc0d5993cbcc9dd39cfadb4214b9115a97dcb5" +dependencies = [ + "ansi_term", + "dissimilar", + "itertools 0.10.5", +] [[package]] -name = "fragile" -version = "2.0.0" +name = "combine" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "memchr", +] [[package]] -name = "fs2" -version = "0.4.3" +name = "comfy-table" +version = "6.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +checksum = "7e959d788268e3bf9d35ace83e81b124190378e4c91c9067524675e33394b8ba" dependencies = [ - "libc", - "winapi", + "crossterm 0.26.1", + "strum 0.24.1", + "strum_macros 0.24.3", + "unicode-width", ] [[package]] -name = "funty" -version = "2.0.0" +name = "config" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +checksum = "d379af7f68bfc21714c6c7dea883544201741d2ce8274bb12fa54f89507f52a7" +dependencies = [ + "async-trait", + "json5", + "lazy_static", + "nom", + "pathdiff", + "ron 0.7.1", + "rust-ini", + "serde", + "serde_json", + "toml 0.5.11", + "yaml-rust", +] [[package]] -name = "futures" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +name = "connection-router" +version = "0.1.0" dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", + "axelar-wasm-std", + "axelar-wasm-std-derive", + "cosmwasm-schema", + "cosmwasm-std", + "cosmwasm-storage", + "cw-multi-test", + "cw-storage-plus 1.1.0", + "cw2 0.15.1", + "error-stack", + "flagset", + "hex", + "itertools 0.11.0", + "rand 0.8.5", + "report", + "schemars", + "serde", + "serde_json", + "sha3 0.10.8", + "thiserror", ] [[package]] -name = "futures-channel" -version = "0.3.28" +name = "console" +version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" dependencies = [ - "futures-core", - "futures-sink", + "encode_unicode 0.3.6", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.45.0", ] [[package]] -name = "futures-core" -version = "0.3.28" +name = "console-api" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "e57ff02e8ad8e06ab9731d5dc72dc23bef9200778eae1a89d555d8c42e5d4a86" +dependencies = [ + "prost 0.11.9", + "prost-types", + "tonic 0.8.3", + "tracing-core", +] [[package]] -name = "futures-executor" -version = "0.3.28" +name = "console-api" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "c2895653b4d9f1538a83970077cb01dfc77a4810524e51a110944688e916b18e" dependencies = [ - "futures-core", - "futures-task", - "futures-util", + "prost 0.11.9", + "prost-types", + "tonic 0.9.2", + "tracing-core", ] [[package]] -name = "futures-io" -version = "0.3.28" +name = "console-subscriber" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "d4cf42660ac07fcebed809cfe561dd8730bcd35b075215e6479c516bcd0d11cb" +dependencies = [ + "console-api 0.5.0", + "crossbeam-channel", + "crossbeam-utils", + "futures", + "hdrhistogram", + "humantime", + "prost-types", + "serde", + "serde_json", + "thread_local", + "tokio", + "tokio-stream", + "tonic 0.9.2", + "tracing", + "tracing-core", + "tracing-subscriber 0.3.17", +] [[package]] -name = "futures-locks" -version = "0.7.1" +name = "const-hex" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +checksum = "08849ed393c907c90016652a01465a12d86361cd38ad2a7de026c56a520cc259" dependencies = [ - "futures-channel", - "futures-task", + "cfg-if", + "cpufeatures", + "hex", + "serde", ] [[package]] -name = "futures-macro" -version = "0.3.28" +name = "const-oid" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", -] +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] -name = "futures-sink" -version = "0.3.28" +name = "const-str" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "aca749d3d3f5b87a0d6100509879f9cf486ab510803a4a4e1001da1ff61c2bd6" [[package]] -name = "futures-task" -version = "0.3.28" +name = "constant_time_eq" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] -name = "futures-timer" -version = "3.0.2" +name = "constant_time_eq" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" -dependencies = [ - "gloo-timers", - "send_wrapper 0.4.0", -] +checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6" [[package]] -name = "futures-util" -version = "0.3.28" +name = "constant_time_eq" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", + "unicode-segmentation", ] [[package]] -name = "fxhash" -version = "0.2.1" +name = "core-foundation" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ - "byteorder", + "core-foundation-sys", + "libc", ] [[package]] -name = "gateway" -version = "0.1.0" -dependencies = [ - "aggregate-verifier", - "axelar-wasm-std", - "axelar-wasm-std-derive", - "connection-router", - "cosmwasm-schema", - "cosmwasm-std", - "cosmwasm-storage", - "cw-multi-test", - "cw-storage-plus 1.1.0", - "cw-utils 1.0.1", - "cw2 0.15.1", - "error-stack", - "report", - "schemars", - "serde", - "serde_json", - "thiserror", -] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] -name = "generic-array" -version = "0.14.7" +name = "core2" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" dependencies = [ - "typenum", - "version_check", - "zeroize", + "memchr", ] [[package]] -name = "getrandom" -version = "0.2.10" +name = "cosmos-sdk-proto" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "c4776e787b24d9568dd61d3237eeb4eb321d622fb881b858c7b82806420e87d4" dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", + "prost 0.11.9", + "prost-types", + "tendermint-proto 0.27.0", + "tonic 0.8.3", ] [[package]] -name = "gimli" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" - -[[package]] -name = "glob" -version = "0.3.1" +name = "cosmos-sdk-proto" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "73c9d2043a9e617b0d602fbc0a0ecd621568edbf3a9774890a6d562389bd8e1c" +dependencies = [ + "prost 0.11.9", + "prost-types", + "tendermint-proto 0.32.2", +] [[package]] -name = "gloo-timers" -version = "0.2.6" +name = "cosmrs" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +checksum = "af13955d6f356272e6def9ff5e2450a7650df536d8934f47052a20c76513d2f6" dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", + "bip32 0.5.1", + "cosmos-sdk-proto 0.19.0", + "ecdsa 0.16.8", + "eyre", + "getrandom 0.2.10", + "k256 0.13.1", + "rand_core 0.6.4", + "serde", + "serde_json", + "subtle-encoding", + "tendermint 0.32.2", + "thiserror", ] [[package]] -name = "group" -version = "0.12.1" +name = "cosmwasm-crypto" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +checksum = "1ca101fbf2f76723711a30ea3771ef312ec3ec254ad021b237871ed802f9f175" dependencies = [ - "ff 0.12.1", + "digest 0.10.7", + "ed25519-zebra", + "k256 0.13.1", "rand_core 0.6.4", - "subtle", + "thiserror", ] [[package]] -name = "group" -version = "0.13.0" +name = "cosmwasm-derive" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "c73d2dd292f60e42849d2b07c03d809cf31e128a4299a805abd6d24553bcaaf5" dependencies = [ - "ff 0.13.0", - "rand_core 0.6.4", - "subtle", + "syn 1.0.109", ] [[package]] -name = "h2" -version = "0.3.21" +name = "cosmwasm-schema" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "6ce34a08020433989af5cc470104f6bd22134320fe0221bd8aeb919fd5ec92d5" dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap 1.9.3", - "slab", - "tokio", - "tokio-util", - "tracing", + "cosmwasm-schema-derive", + "schemars", + "serde", + "serde_json", + "thiserror", ] [[package]] -name = "hashbrown" -version = "0.12.3" +name = "cosmwasm-schema-derive" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "96694ec781a7dd6dea1f968a2529ade009c21ad999c88b5f53d6cc495b3b96f7" dependencies = [ - "ahash", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] -name = "hashbrown" -version = "0.14.0" +name = "cosmwasm-std" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "2a44d3f9c25b2f864737c6605a98f2e4675d53fd8bbc7cf4d7c02475661a793d" +dependencies = [ + "base64 0.21.4", + "bnum", + "cosmwasm-crypto", + "cosmwasm-derive", + "derivative", + "forward_ref", + "hex", + "schemars", + "serde", + "serde-json-wasm", + "sha2 0.10.7", + "thiserror", +] [[package]] -name = "hashers" -version = "1.0.1" +name = "cosmwasm-storage" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +checksum = "ab544dfcad7c9e971933d522d99ec75cc8ddfa338854bb992b092e11bcd7e818" dependencies = [ - "fxhash", + "cosmwasm-std", + "serde", ] [[package]] -name = "headers" -version = "0.3.8" +name = "cpp_demangle" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +checksum = "7e8227005286ec39567949b33df9896bcadfa6051bccca2488129f108ca23119" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", - "bytes", - "headers-core", - "http", - "httpdate", - "mime", - "sha1", + "cfg-if", ] [[package]] -name = "headers-core" -version = "0.2.0" +name = "cpufeatures" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ - "http", + "libc", ] [[package]] -name = "heck" -version = "0.4.1" +name = "crc32c" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "d8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74" +dependencies = [ + "rustc_version", +] [[package]] -name = "hermit-abi" -version = "0.3.2" +name = "crc32fast" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] [[package]] -name = "hex" -version = "0.4.3" +name = "criterion" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "futures", + "is-terminal", + "itertools 0.10.5", + "num-traits", + "once_cell", + "oorandom", + "plotters", + "rayon", + "regex", "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "tokio", + "walkdir", ] [[package]] -name = "hmac" -version = "0.12.1" +name = "criterion-plot" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ - "digest 0.10.7", + "cast", + "itertools 0.10.5", ] [[package]] -name = "home" -version = "0.5.5" +name = "crossbeam-channel" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ - "windows-sys", + "cfg-if", + "crossbeam-utils", ] [[package]] -name = "http" -version = "0.2.9" +name = "crossbeam-deque" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ - "bytes", - "fnv", - "itoa", + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", ] [[package]] -name = "http-body" -version = "0.4.5" +name = "crossbeam-epoch" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ - "bytes", - "http", - "pin-project-lite", + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset 0.9.0", + "scopeguard", ] [[package]] -name = "httparse" -version = "1.8.0" +name = "crossbeam-utils" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] [[package]] -name = "httpdate" -version = "1.0.3" +name = "crossterm" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "486d44227f71a1ef39554c0dc47e44b9f4139927c75043312690c3f476d1d788" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi 0.8.0", + "libc", + "mio 0.7.14", + "parking_lot 0.11.2", + "signal-hook", + "signal-hook-mio", + "winapi", +] [[package]] -name = "humantime-serde" -version = "1.1.1" +name = "crossterm" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" +checksum = "c85525306c4291d1b73ce93c8acf9c339f9b213aef6c1d85c3830cbf1c16325c" dependencies = [ - "humantime", - "serde", + "bitflags 1.3.2", + "crossterm_winapi 0.9.1", + "libc", + "mio 0.7.14", + "parking_lot 0.11.2", + "signal-hook", + "signal-hook-mio", + "winapi", ] [[package]] -name = "hyper" -version = "0.14.27" +name = "crossterm" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.4.9", - "tokio", - "tower-service", - "tracing", - "want", + "bitflags 1.3.2", + "crossterm_winapi 0.9.1", + "libc", + "mio 0.8.8", + "parking_lot 0.12.1", + "signal-hook", + "signal-hook-mio", + "winapi", ] [[package]] -name = "hyper-proxy" -version = "0.9.1" +name = "crossterm" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca815a891b24fdfb243fa3239c86154392b0953ee584aa1a2a1f66d20cbe75cc" +checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13" dependencies = [ - "bytes", - "futures", - "headers", - "http", - "hyper", - "hyper-rustls 0.22.1", - "rustls-native-certs", - "tokio", - "tokio-rustls 0.22.0", - "tower-service", - "webpki", + "bitflags 1.3.2", + "crossterm_winapi 0.9.1", + "libc", + "mio 0.8.8", + "parking_lot 0.12.1", + "signal-hook", + "signal-hook-mio", + "winapi", ] [[package]] -name = "hyper-rustls" -version = "0.22.1" +name = "crossterm_winapi" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" +checksum = "3a6966607622438301997d3dac0d2f6e9a90c68bb6bc1785ea98456ab93c0507" dependencies = [ - "ct-logs", - "futures-util", - "hyper", - "log", - "rustls 0.19.1", - "rustls-native-certs", - "tokio", - "tokio-rustls 0.22.0", - "webpki", - "webpki-roots 0.21.1", + "winapi", ] [[package]] -name = "hyper-rustls" -version = "0.24.1" +name = "crossterm_winapi" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" dependencies = [ - "futures-util", - "http", - "hyper", - "rustls 0.21.7", - "tokio", - "tokio-rustls 0.24.1", + "winapi", ] [[package]] -name = "hyper-timeout" -version = "0.4.1" +name = "crunchy" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -dependencies = [ - "hyper", - "pin-project-lite", - "tokio", - "tokio-io-timeout", -] +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] -name = "iana-time-zone" -version = "0.1.57" +name = "crypto-bigint" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows", + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", ] [[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" +name = "crypto-bigint" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" dependencies = [ - "cc", + "generic-array", + "rand_core 0.6.4", + "subtle", + "zeroize", ] [[package]] -name = "ident_case" -version = "1.0.1" +name = "crypto-common" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] [[package]] -name = "idna" -version = "0.4.0" +name = "crypto-mac" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "generic-array", + "subtle", ] [[package]] -name = "impl-codec" -version = "0.6.0" +name = "csv" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" dependencies = [ - "parity-scale-codec", + "csv-core", + "itoa", + "ryu", + "serde", ] [[package]] -name = "impl-rlp" -version = "0.3.0" +name = "csv-core" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" dependencies = [ - "rlp", + "memchr", ] [[package]] -name = "impl-serde" -version = "0.4.0" +name = "ct-logs" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +checksum = "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" dependencies = [ - "serde", + "sct 0.6.1", ] [[package]] -name = "impl-trait-for-tuples" -version = "0.2.2" +name = "ctor" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" dependencies = [ - "proc-macro2", - "quote", + "quote 1.0.33", "syn 1.0.109", ] [[package]] -name = "indenter" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" - -[[package]] -name = "indexmap" -version = "1.9.3" +name = "ctr" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", + "cipher", ] [[package]] -name = "indexmap" -version = "2.0.0" +name = "curve25519-dalek" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" dependencies = [ - "equivalent", - "hashbrown 0.14.0", - "serde", + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", ] [[package]] -name = "inout" -version = "0.1.3" +name = "curve25519-dalek-fiat" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "44339b9ecede7f72a0d3b012bf9bb5a616dc8bfde23ce544e42da075c87198f0" dependencies = [ - "generic-array", + "byteorder", + "digest 0.9.0", + "fiat-crypto", + "rand_core 0.6.4", + "subtle", + "zeroize", ] [[package]] -name = "instant" -version = "0.1.12" +name = "curve25519-dalek-ng" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" dependencies = [ - "cfg-if", + "byteorder", + "digest 0.9.0", + "rand_core 0.6.4", + "serde", + "subtle-ng", + "zeroize", ] [[package]] -name = "ipnet" -version = "2.8.0" +name = "cw-multi-test" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" +checksum = "e8e81b4a7821d5eeba0d23f737c16027b39a600742ca8c32eb980895ffd270f4" +dependencies = [ + "anyhow", + "cosmwasm-std", + "cosmwasm-storage", + "cw-storage-plus 0.15.1", + "cw-utils 0.15.1", + "derivative", + "itertools 0.10.5", + "prost 0.9.0", + "schemars", + "serde", + "thiserror", +] [[package]] -name = "is-terminal" -version = "0.4.9" +name = "cw-storage-plus" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "dc6cf70ef7686e2da9ad7b067c5942cd3e88dd9453f7af42f54557f8af300fb0" dependencies = [ - "hermit-abi", - "rustix", - "windows-sys", + "cosmwasm-std", + "schemars", + "serde", ] [[package]] -name = "itertools" -version = "0.10.5" +name = "cw-storage-plus" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "3f0e92a069d62067f3472c62e30adedb4cab1754725c0f2a682b3128d2bf3c79" dependencies = [ - "either", + "cosmwasm-std", + "schemars", + "serde", ] [[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +name = "cw-utils" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae0b69fa7679de78825b4edeeec045066aa2b2c4b6e063d80042e565bb4da5c" dependencies = [ - "either", + "cosmwasm-schema", + "cosmwasm-std", + "cw2 0.15.1", + "schemars", + "semver 1.0.18", + "serde", + "thiserror", ] [[package]] -name = "itoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" - -[[package]] -name = "jobserver" -version = "0.1.26" +name = "cw-utils" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "c80e93d1deccb8588db03945016a292c3c631e6325d349ebb35d2db6f4f946f7" dependencies = [ - "libc", + "cosmwasm-schema", + "cosmwasm-std", + "cw2 1.1.0", + "schemars", + "semver 1.0.18", + "serde", + "thiserror", ] [[package]] -name = "js-sys" -version = "0.3.64" +name = "cw0" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "8ae676b6cced78a3d38ad4b01ab4ed66fc78ac191c3c0d6bfd5372cb2efd473b" dependencies = [ - "wasm-bindgen", + "cosmwasm-std", + "schemars", + "serde", + "thiserror", ] [[package]] -name = "json5" -version = "0.4.1" +name = "cw2" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +checksum = "5abb8ecea72e09afff830252963cb60faf945ce6cef2c20a43814516082653da" dependencies = [ - "pest", - "pest_derive", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 0.15.1", + "schemars", "serde", ] [[package]] -name = "jsonwebtoken" -version = "8.3.0" +name = "cw2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" +checksum = "29ac2dc7a55ad64173ca1e0a46697c31b7a5c51342f55a1e84a724da4eb99908" dependencies = [ - "base64 0.21.3", - "pem", - "ring", + "cosmwasm-schema", + "cosmwasm-std", + "cw-storage-plus 1.1.0", + "schemars", "serde", - "serde_json", - "simple_asn1", + "thiserror", ] [[package]] -name = "k256" -version = "0.11.6" +name = "darling" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" dependencies = [ - "cfg-if", - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.7", + "darling_core 0.14.4", + "darling_macro 0.14.4", ] [[package]] -name = "k256" -version = "0.13.1" +name = "darling" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ - "cfg-if", - "ecdsa 0.16.8", - "elliptic-curve 0.13.5", - "once_cell", - "sha2 0.10.7", - "signature 2.1.0", + "darling_core 0.20.3", + "darling_macro 0.20.3", ] [[package]] -name = "keccak" -version = "0.1.4" +name = "darling_core" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" dependencies = [ - "cpufeatures", + "fnv", + "ident_case", + "proc-macro2 1.0.67", + "quote 1.0.33", + "strsim", + "syn 1.0.109", ] [[package]] -name = "lalrpop" -version = "0.20.0" +name = "darling_core" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ - "ascii-canvas", - "bit-set", - "diff", - "ena", - "is-terminal", - "itertools 0.10.5", - "lalrpop-util", - "petgraph", - "regex", - "regex-syntax", - "string_cache", - "term", - "tiny-keccak", - "unicode-xid", + "fnv", + "ident_case", + "proc-macro2 1.0.67", + "quote 1.0.33", + "strsim", + "syn 2.0.37", ] [[package]] -name = "lalrpop-util" -version = "0.20.0" +name = "darling_macro" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +dependencies = [ + "darling_core 0.14.4", + "quote 1.0.33", + "syn 1.0.109", +] [[package]] -name = "lazy_static" -version = "1.4.0" +name = "darling_macro" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +dependencies = [ + "darling_core 0.20.3", + "quote 1.0.33", + "syn 2.0.37", +] [[package]] -name = "libc" -version = "0.2.147" +name = "dashmap" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.0", + "lock_api", + "once_cell", + "parking_lot_core 0.9.8", +] [[package]] -name = "linked-hash-map" -version = "0.5.6" +name = "data-encoding" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] -name = "linux-raw-sys" -version = "0.4.5" +name = "data-encoding-macro" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "c904b33cc60130e1aeea4956ab803d08a3f4a0ca82d64ed757afac3891f2bb99" +dependencies = [ + "data-encoding", + "data-encoding-macro-internal", +] [[package]] -name = "lock_api" -version = "0.4.10" +name = "data-encoding-macro-internal" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "8fdf3fce3ce863539ec1d7fd1b6dcc3c645663376b43ed376bbf887733e4f772" dependencies = [ - "autocfg", - "scopeguard", + "data-encoding", + "syn 1.0.109", ] [[package]] -name = "log" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +name = "datatest-stable" +version = "0.1.3" +source = "git+https://github.com/nextest-rs/datatest-stable.git?rev=72db7f6d1bbe36a5407e96b9488a581f763e106f#72db7f6d1bbe36a5407e96b9488a581f763e106f" +dependencies = [ + "libtest-mimic", + "regex", + "walkdir", +] [[package]] -name = "matchit" -version = "0.7.2" +name = "debug-ignore" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed1202b2a6f884ae56f04cff409ab315c5ce26b5e58d7412e484f01fd52f52ef" +checksum = "ffe7ed1d93f4553003e20b629abe9085e1e81b1429520f897f8f8860bc6dfc21" [[package]] -name = "maybe-uninit" -version = "2.0.0" +name = "debugid" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" +dependencies = [ + "uuid 1.4.1", +] [[package]] -name = "md-5" -version = "0.10.5" +name = "der" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" dependencies = [ - "digest 0.10.7", + "const-oid", + "pem-rfc7468 0.6.0", + "zeroize", ] [[package]] -name = "memchr" -version = "2.6.1" +name = "der" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f478948fd84d9f8e86967bf432640e46adfb5a4bd4f14ef7e864ab38220534ae" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "pem-rfc7468 0.7.0", + "zeroize", +] [[package]] -name = "memoffset" -version = "0.9.0" +name = "der-parser" +version = "8.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" dependencies = [ - "autocfg", + "asn1-rs", + "displaydoc", + "nom", + "num-bigint", + "num-traits", + "rusticata-macros", ] [[package]] -name = "mime" -version = "0.3.17" +name = "deranged" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" +dependencies = [ + "serde", +] [[package]] -name = "minimal-lexical" -version = "0.2.1" +name = "deref-derive" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +checksum = "4255bb7dd538590188bd0aea52e48bd699b19bd90b0d069ec2ced8461fe23273" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] [[package]] -name = "miniz_oxide" -version = "0.7.1" +name = "derivative" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "adler", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] -name = "mio" -version = "0.8.8" +name = "derive-syn-parse" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "e79116f119dd1dba1abf1f3405f03b9b0e79a27a3883864bfebded8a3dc768cd" dependencies = [ - "libc", - "wasi", - "windows-sys", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] -name = "mockall" -version = "0.11.4" +name = "derive_arbitrary" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" +checksum = "53e0efad4403bfc52dc201159c4b842a246a14b98c64b55dfd0f2d89729dfeb8" dependencies = [ - "cfg-if", - "downcast", - "fragile", - "lazy_static", - "mockall_derive", - "predicates", - "predicates-tree", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] -name = "mockall_derive" -version = "0.11.4" +name = "derive_builder" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" +checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" dependencies = [ - "cfg-if", - "proc-macro2", - "quote", - "syn 1.0.109", + "derive_builder_macro", ] [[package]] -name = "multimap" -version = "0.8.3" +name = "derive_builder_core" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" - -[[package]] -name = "multisig" -version = "0.1.0" +checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" dependencies = [ - "axelar-wasm-std", - "axelar-wasm-std-derive", - "cosmwasm-crypto", - "cosmwasm-schema", - "cosmwasm-std", - "cosmwasm-storage", - "cw-multi-test", - "cw-storage-plus 1.1.0", - "cw2 0.15.1", - "error-stack", - "getrandom", - "rand", - "report", - "schemars", - "serde", - "serde_json", - "thiserror", + "darling 0.14.4", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] -name = "multisig-prover" -version = "0.1.0" +name = "derive_builder_macro" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" dependencies = [ - "anyhow", - "axelar-wasm-std", - "axelar-wasm-std-derive", - "bcs", - "connection-router", - "cosmwasm-schema", - "cosmwasm-std", - "cosmwasm-storage", - "cw-multi-test", - "cw-storage-plus 1.1.0", - "cw-utils 1.0.1", - "cw2 0.15.1", - "either", - "error-stack", - "ethabi", - "gateway", - "hex", - "itertools 0.11.0", - "k256 0.13.1", - "multisig", - "report", - "schemars", - "serde", - "serde_json", - "service-registry", - "sha3", - "thiserror", - "voting-verifier", + "derive_builder_core", + "syn 1.0.109", ] [[package]] -name = "new_debug_unreachable" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" - -[[package]] -name = "nodrop" -version = "0.1.14" +name = "derive_more" +version = "0.99.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case 0.4.0", + "proc-macro2 1.0.67", + "quote 1.0.33", + "rustc_version", + "syn 1.0.109", +] [[package]] -name = "nom" -version = "7.1.3" +name = "determinator" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +checksum = "c644b91adb5bcc66d3533607b6d3ee5c1c2d858d2d95e41dd6aae673e29e0509" dependencies = [ - "memchr", - "minimal-lexical", + "camino", + "globset", + "guppy", + "guppy-workspace-hack", + "once_cell", + "petgraph 0.6.4", + "rayon", + "serde", + "toml 0.5.11", ] [[package]] -name = "normalize-line-endings" -version = "0.3.0" +name = "deunicode" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" +checksum = "d95203a6a50906215a502507c0f879a0ce7ff205a6111e2db2a5ef8e4bb92e43" [[package]] -name = "nu-ansi-term" -version = "0.46.0" +name = "diesel" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d98235fdc2f355d330a8244184ab6b4b33c28679c0b4158f63138e51d6cf7e88" dependencies = [ - "overload", - "winapi", + "bitflags 2.4.0", + "byteorder", + "chrono", + "diesel_derives", + "itoa", + "pq-sys", + "r2d2", + "serde_json", ] [[package]] -name = "num-bigint" -version = "0.4.4" +name = "diesel-derive-enum" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "81c5131a2895ef64741dad1d483f358c2a229a3a2d1b256778cdc5e146db64d4" dependencies = [ - "autocfg", - "num-integer", - "num-traits", + "heck 0.4.1", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] -name = "num-derive" -version = "0.3.3" +name = "diesel_derives" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +checksum = "e054665eaf6d97d1e7125512bb2d35d07c73ac86cc6920174cb42d1ab697a554" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "diesel_table_macro_syntax", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] -name = "num-integer" -version = "0.1.45" +name = "diesel_migrations" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "6036b3f0120c5961381b570ee20a02432d7e2d27ea60de9578799cf9156914ac" dependencies = [ - "autocfg", - "num-traits", + "diesel", + "migrations_internals", + "migrations_macros", ] [[package]] -name = "num-traits" -version = "0.2.16" +name = "diesel_table_macro_syntax" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5" dependencies = [ - "autocfg", + "syn 2.0.37", ] [[package]] -name = "num_cpus" -version = "1.16.0" +name = "diff" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" [[package]] -name = "num_enum" -version = "0.7.0" +name = "difference" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb" -dependencies = [ - "num_enum_derive", -] +checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" [[package]] -name = "num_enum_derive" -version = "0.7.0" +name = "difflib" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.29", -] +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" [[package]] -name = "object" -version = "0.32.0" +name = "diffus" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe" +checksum = "3c0ff24a73b51d9009c40897faf87d31b77345c90ffbf4dc3a1d2957032c5653" dependencies = [ - "memchr", + "itertools 0.10.5", ] [[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "opaque-debug" +name = "diffy" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "e616e59155c92257e84970156f506287853355f58cd4a6eb167385722c32b790" +dependencies = [ + "nu-ansi-term", +] [[package]] -name = "open-fastrlp" -version = "0.1.4" +name = "digest" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types", - "open-fastrlp-derive", + "generic-array", ] [[package]] -name = "open-fastrlp-derive" -version = "0.1.1" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn 1.0.109", + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle", ] [[package]] -name = "openssl-probe" -version = "0.1.5" +name = "dirs" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys 0.3.7", +] [[package]] -name = "option-ext" -version = "0.2.0" +name = "dirs" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys 0.4.1", +] [[package]] -name = "ordered-multimap" -version = "0.4.3" +name = "dirs-next" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" dependencies = [ - "dlv-list", - "hashbrown 0.12.3", + "cfg-if", + "dirs-sys-next", ] [[package]] -name = "overload" -version = "0.1.1" +name = "dirs-sys" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] [[package]] -name = "parity-scale-codec" -version = "3.6.5" +name = "dirs-sys" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "impl-trait-for-tuples", - "parity-scale-codec-derive", - "serde", + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", ] [[package]] -name = "parity-scale-codec-derive" -version = "3.6.5" +name = "dirs-sys-next" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", + "libc", + "redox_users", + "winapi", ] [[package]] -name = "parking_lot" -version = "0.12.1" +name = "displaydoc" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ - "lock_api", - "parking_lot_core", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] -name = "parking_lot_core" -version = "0.9.8" +name = "dissimilar" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.3.5", - "smallvec 1.11.0", - "windows-targets", -] +checksum = "86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632" [[package]] -name = "password-hash" -version = "0.4.2" +name = "dlv-list" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", -] +checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" [[package]] -name = "paste" -version = "1.0.14" +name = "doc-comment" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] -name = "path-slash" -version = "0.2.1" +name = "downcast" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] -name = "pathdiff" -version = "0.2.1" +name = "downcast-rs" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] -name = "pbkdf2" -version = "0.11.0" +name = "dunce" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", - "hmac", - "password-hash", - "sha2 0.10.7", -] +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] -name = "pbkdf2" -version = "0.12.2" +name = "duration-str" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +checksum = "d9f037c488d179e21c87ef5fa9c331e8e62f5dddfa84618b41bb197da03edff1" dependencies = [ - "digest 0.10.7", - "hmac", + "chrono", + "nom", + "rust_decimal", + "serde", + "thiserror", + "time 0.3.28", ] [[package]] -name = "peg" -version = "0.7.0" +name = "dyn-clone" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07c0b841ea54f523f7aa556956fbd293bcbe06f2e67d2eb732b7278aaf1d166a" -dependencies = [ - "peg-macros", - "peg-runtime", -] +checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" [[package]] -name = "peg-macros" -version = "0.7.0" +name = "ecdsa" +version = "0.14.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aa52829b8decbef693af90202711348ab001456803ba2a98eb4ec8fb70844c" +checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" dependencies = [ - "peg-runtime", - "proc-macro2", - "quote", + "der 0.6.1", + "elliptic-curve 0.12.3", + "rfc6979 0.3.1", + "signature 1.6.4", ] [[package]] -name = "peg-runtime" -version = "0.7.0" +name = "ecdsa" +version = "0.16.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c719dcf55f09a3a7e764c6649ab594c18a177e3599c467983cdf644bfc0a4088" +checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" +dependencies = [ + "der 0.7.8", + "digest 0.10.7", + "elliptic-curve 0.13.5", + "rfc6979 0.4.0", + "signature 2.1.0", + "spki 0.7.2", +] [[package]] -name = "pem" -version = "1.1.1" +name = "ed25519" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ - "base64 0.13.1", + "pkcs8 0.9.0", + "serde", + "signature 1.6.4", + "zeroize", ] [[package]] -name = "percent-encoding" -version = "2.3.0" +name = "ed25519" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "60f6d271ca33075c88028be6f04d502853d63a5ece419d269c15315d4fc1cf1d" +dependencies = [ + "pkcs8 0.10.2", + "signature 2.1.0", +] [[package]] -name = "pest" -version = "2.7.2" +name = "ed25519-consensus" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1acb4a4365a13f749a93f1a094a7805e5cfa0955373a9de860d962eaa3a5fe5a" +checksum = "3c8465edc8ee7436ffea81d21a019b16676ee3db267aa8d5a8d729581ecf998b" dependencies = [ + "curve25519-dalek-ng", + "hex", + "rand_core 0.6.4", + "serde", + "sha2 0.9.9", "thiserror", - "ucd-trie", + "zeroize", ] [[package]] -name = "pest_derive" -version = "2.7.2" +name = "ed25519-dalek-fiat" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666d00490d4ac815001da55838c500eafb0320019bbaa44444137c48b443a853" +checksum = "97c6ac152eba578c1c53d2cefe8ad02e239e3d6f971b0f1ef3cb54cd66037fa0" dependencies = [ - "pest", - "pest_generator", + "curve25519-dalek-fiat", + "ed25519 1.5.3", + "rand 0.8.5", + "serde", + "serde_bytes", + "sha2 0.9.9", + "zeroize", ] [[package]] -name = "pest_generator" -version = "2.7.2" +name = "ed25519-zebra" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ca01446f50dbda87c1786af8770d535423fa8a53aec03b8f4e3d7eb10e0929" +checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn 2.0.29", + "curve25519-dalek", + "hashbrown 0.12.3", + "hex", + "rand_core 0.6.4", + "serde", + "sha2 0.9.9", + "zeroize", ] [[package]] -name = "pest_meta" -version = "2.7.2" +name = "either" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56af0a30af74d0445c0bf6d9d051c979b516a1a5af790d251daee76005420a48" -dependencies = [ - "once_cell", - "pest", - "sha2 0.10.7", -] +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] -name = "petgraph" -version = "0.6.4" +name = "elliptic-curve" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" dependencies = [ - "fixedbitset", - "indexmap 2.0.0", + "base16ct 0.1.1", + "crypto-bigint 0.4.9", + "der 0.6.1", + "digest 0.10.7", + "ff 0.12.1", + "generic-array", + "group 0.12.1", + "rand_core 0.6.4", + "sec1 0.3.0", + "subtle", + "zeroize", ] [[package]] -name = "pharos" -version = "0.5.3" +name = "elliptic-curve" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" dependencies = [ - "futures", - "rustc_version", + "base16ct 0.2.0", + "crypto-bigint 0.5.3", + "digest 0.10.7", + "ff 0.13.0", + "generic-array", + "group 0.13.0", + "pem-rfc7468 0.7.0", + "pkcs8 0.10.2", + "rand_core 0.6.4", + "sec1 0.7.3", + "subtle", + "zeroize", ] [[package]] -name = "phf" -version = "0.11.2" +name = "ena" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" dependencies = [ - "phf_macros", - "phf_shared 0.11.2", + "log", ] [[package]] -name = "phf_generator" -version = "0.11.2" +name = "encode_unicode" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" -dependencies = [ - "phf_shared 0.11.2", - "rand", -] +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] -name = "phf_macros" -version = "0.11.2" +name = "encode_unicode" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" -dependencies = [ - "phf_generator", - "phf_shared 0.11.2", - "proc-macro2", - "quote", - "syn 2.0.29", -] +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] -name = "phf_shared" -version = "0.10.0" +name = "encoding_rs" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ - "siphasher", + "cfg-if", ] [[package]] -name = "phf_shared" -version = "0.11.2" +name = "endian-type" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "enr" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" dependencies = [ - "siphasher", + "base64 0.21.4", + "bytes", + "hex", + "k256 0.13.1", + "log", + "rand 0.8.5", + "rlp", + "serde", + "sha3 0.10.8", + "zeroize", ] [[package]] -name = "pin-project" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +name = "enum-compat-util" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" dependencies = [ - "pin-project-internal", + "serde_yaml 0.8.26", ] [[package]] -name = "pin-project-internal" -version = "1.1.3" +name = "enum-display-derive" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "f16ef37b2a9b242295d61a154ee91ae884afff6b8b933b486b12481cc58310ca" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] -name = "pin-project-lite" -version = "0.2.13" +name = "enum_dispatch" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e" +dependencies = [ + "once_cell", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] [[package]] -name = "pin-utils" -version = "0.1.0" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] -name = "pkcs8" -version = "0.9.0" +name = "erasable" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +checksum = "5f11890ce181d47a64e5d1eb4b6caba0e7bae911a356723740d058a5d0340b7d" dependencies = [ - "der 0.6.1", - "spki 0.6.0", + "autocfg", + "scopeguard", ] [[package]] -name = "pkcs8" -version = "0.10.2" +name = "errno" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" dependencies = [ - "der 0.7.8", - "spki 0.7.2", + "errno-dragonfly", + "libc", + "winapi", ] [[package]] -name = "pkg-config" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "precomputed-hash" -version = "0.1.1" +name = "errno" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] [[package]] -name = "predicates" -version = "2.1.5" +name = "errno-dragonfly" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" dependencies = [ - "difflib", - "float-cmp", - "itertools 0.10.5", - "normalize-line-endings", - "predicates-core", - "regex", + "cc", + "libc", ] [[package]] -name = "predicates-core" -version = "1.0.6" +name = "error-code" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" +checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +dependencies = [ + "libc", + "str-buf", +] [[package]] -name = "predicates-tree" -version = "1.0.9" +name = "error-stack" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +checksum = "27a72baa257b5e0e2de241967bc5ee8f855d6072351042688621081d66b2a76b" dependencies = [ - "predicates-core", - "termtree", + "anyhow", + "eyre", + "rustc_version", ] [[package]] -name = "prettyplease" -version = "0.1.25" +name = "eth-keystore" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" dependencies = [ - "proc-macro2", - "syn 1.0.109", + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac 0.12.1", + "pbkdf2 0.11.0", + "rand 0.8.5", + "scrypt", + "serde", + "serde_json", + "sha2 0.10.7", + "sha3 0.10.8", + "thiserror", + "uuid 0.8.2", ] [[package]] -name = "prettyplease" -version = "0.2.12" +name = "ethabi" +version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" dependencies = [ - "proc-macro2", - "syn 2.0.29", + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3 0.10.8", + "thiserror", + "uint", ] [[package]] -name = "primitive-types" -version = "0.12.1" +name = "ethbloom" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" dependencies = [ - "fixed-hash", - "impl-codec", + "crunchy", + "fixed-hash 0.8.0", + "impl-codec 0.6.0", "impl-rlp", - "impl-serde", + "impl-serde 0.4.0", "scale-info", - "uint", + "tiny-keccak", ] [[package]] -name = "proc-macro-crate" -version = "1.3.1" +name = "ethereum-types" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" dependencies = [ - "once_cell", - "toml_edit", + "ethbloom", + "fixed-hash 0.8.0", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "primitive-types 0.12.1", + "scale-info", + "uint", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "ethers" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "1ad13497f6e0a24292fc7b408e30d22fe9dc262da1f40d7b542c3a44e7fc0476" dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-middleware", + "ethers-providers", + "ethers-signers", + "ethers-solc", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "ethers-addressbook" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "c6e9e8acd0ed348403cc73a670c24daba3226c40b98dc1a41903766b3ab6240a" dependencies = [ - "proc-macro2", - "quote", - "version_check", + "ethers-core", + "once_cell", + "serde", + "serde_json", ] [[package]] -name = "proc-macro2" -version = "1.0.66" +name = "ethers-contract" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "d79269278125006bb0552349c03593ffa9702112ca88bc7046cc669f148fb47c" dependencies = [ - "unicode-ident", + "const-hex", + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "futures-util", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror", ] [[package]] -name = "prost" -version = "0.9.0" +name = "ethers-contract-abigen" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +checksum = "ce95a43c939b2e4e2f3191c5ad4a1f279780b8a39139c9905b43a7433531e2ab" dependencies = [ - "bytes", - "prost-derive 0.9.0", + "Inflector", + "const-hex", + "dunce", + "ethers-core", + "ethers-etherscan", + "eyre", + "prettyplease 0.2.15", + "proc-macro2 1.0.67", + "quote 1.0.33", + "regex", + "reqwest", + "serde", + "serde_json", + "syn 2.0.37", + "toml 0.7.8", + "walkdir", ] [[package]] -name = "prost" -version = "0.11.9" +name = "ethers-contract-derive" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +checksum = "8e9ce44906fc871b3ee8c69a695ca7ec7f70e50cb379c9b9cb5e532269e492f6" dependencies = [ - "bytes", - "prost-derive 0.11.9", + "Inflector", + "const-hex", + "ethers-contract-abigen", + "ethers-core", + "proc-macro2 1.0.67", + "quote 1.0.33", + "serde_json", + "syn 2.0.37", ] [[package]] -name = "prost-build" -version = "0.11.9" +name = "ethers-core" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" +checksum = "c0a17f0708692024db9956b31d7a20163607d2745953f5ae8125ab368ba280ad" dependencies = [ + "arrayvec 0.7.4", "bytes", - "heck", - "itertools 0.10.5", - "lazy_static", - "log", - "multimap", - "petgraph", - "prettyplease 0.1.25", - "prost 0.11.9", - "prost-types", - "regex", - "syn 1.0.109", + "cargo_metadata 0.17.0", + "chrono", + "const-hex", + "elliptic-curve 0.13.5", + "ethabi", + "generic-array", + "k256 0.13.1", + "num_enum 0.7.0", + "once_cell", + "open-fastrlp", + "rand 0.8.5", + "rlp", + "serde", + "serde_json", + "strum 0.25.0", + "syn 2.0.37", "tempfile", - "which", + "thiserror", + "tiny-keccak", + "unicode-xid 0.2.4", ] [[package]] -name = "prost-derive" -version = "0.9.0" +name = "ethers-etherscan" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +checksum = "0e53451ea4a8128fbce33966da71132cf9e1040dcfd2a2084fd7733ada7b2045" dependencies = [ - "anyhow", - "itertools 0.10.5", - "proc-macro2", - "quote", - "syn 1.0.109", + "ethers-core", + "reqwest", + "semver 1.0.18", + "serde", + "serde_json", + "thiserror", + "tracing", ] [[package]] -name = "prost-derive" -version = "0.11.9" +name = "ethers-middleware" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +checksum = "473f1ccd0c793871bbc248729fa8df7e6d2981d6226e4343e3bbaa9281074d5d" dependencies = [ - "anyhow", - "itertools 0.10.5", - "proc-macro2", - "quote", - "syn 1.0.109", + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "url", ] [[package]] -name = "prost-types" -version = "0.11.9" +name = "ethers-providers" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +checksum = "6838fa110e57d572336178b7c79e94ff88ef976306852d8cb87d9e5b1fc7c0b5" dependencies = [ - "prost 0.11.9", -] - -[[package]] -name = "quote" -version = "1.0.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" -dependencies = [ - "proc-macro2", + "async-trait", + "auto_impl", + "base64 0.21.4", + "bytes", + "const-hex", + "enr", + "ethers-core", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "http", + "instant", + "jsonwebtoken", + "once_cell", + "pin-project", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-tungstenite 0.20.0", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", ] [[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" +name = "ethers-signers" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "5ea44bec930f12292866166f9ddbea6aa76304850e4d8dcd66dc492b43d00ff1" dependencies = [ - "libc", - "rand_chacha", - "rand_core 0.6.4", + "async-trait", + "coins-bip32", + "coins-bip39", + "const-hex", + "elliptic-curve 0.13.5", + "eth-keystore", + "ethers-core", + "rand 0.8.5", + "sha2 0.10.7", + "thiserror", + "tracing", ] [[package]] -name = "rand_chacha" -version = "0.3.1" +name = "ethers-solc" +version = "2.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "de34e484e7ae3cab99fbfd013d6c5dc7f9013676a4e0e414d8b12e1213e8b3ba" dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", + "cfg-if", + "const-hex", + "dirs 5.0.1", + "dunce", + "ethers-core", + "glob", + "home", + "md-5 0.10.5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.18", + "serde", + "serde_json", + "solang-parser", + "svm-rs", + "thiserror", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi", ] [[package]] -name = "rand_core" -version = "0.5.1" +name = "ethnum" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "6c8ff382b2fa527fb7fb06eeebfc5bbb3f17e3cc6b9d70b006c41daa8824adac" [[package]] -name = "rand_core" -version = "0.6.4" +name = "event-listener" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "events" +version = "0.1.0" dependencies = [ - "getrandom", + "axelar-wasm-std", + "base64 0.21.4", + "error-stack", + "serde_json", + "tendermint 0.33.0", + "thiserror", ] [[package]] -name = "random-string" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4e63111ec5292d8af9c220f06fe3bb87991cc78b6f1f7e291d1ae6b8a60817" +name = "events-derive" +version = "0.1.0" dependencies = [ - "fastrand 1.9.0", + "error-stack", + "events", + "quote 1.0.33", + "serde", + "serde_json", + "syn 2.0.37", ] [[package]] -name = "rayon" -version = "1.7.0" +name = "expect-test" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "30d9eafeadd538e68fb28016364c9732d78e420b9ff8853fa5e4058861e9f8d3" dependencies = [ - "either", - "rayon-core", + "dissimilar", + "once_cell", ] [[package]] -name = "rayon-core" -version = "1.11.0" +name = "eyre" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" dependencies = [ - "crossbeam-channel", - "crossbeam-deque", - "crossbeam-utils", - "num_cpus", + "indenter", + "once_cell", ] [[package]] -name = "redox_syscall" -version = "0.2.16" +name = "fail" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "3be3c61c59fdc91f5dbc3ea31ee8623122ce80057058be560654c5d410d181a6" dependencies = [ - "bitflags 1.3.2", + "lazy_static", + "log", + "rand 0.7.3", ] [[package]] -name = "redox_syscall" -version = "0.3.5" +name = "fast_chemail" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "495a39d30d624c2caabe6312bfead73e7717692b44e0b32df168c275a2e8e9e4" dependencies = [ - "bitflags 1.3.2", + "ascii_utils", ] [[package]] -name = "redox_users" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +name = "fastcrypto" +version = "0.1.6" +source = "git+https://github.com/MystenLabs/fastcrypto?rev=4e7debce78340848f0009b648f56d912d6bd02d5#4e7debce78340848f0009b648f56d912d6bd02d5" dependencies = [ - "getrandom", - "redox_syscall 0.2.16", + "aes", + "aes-gcm", + "ark-ec", + "ark-ff", + "ark-secp256r1", + "ark-serialize", + "auto_ops", + "base64ct", + "bincode", + "blake2", + "blake3", + "blst", + "bs58 0.4.0", + "bulletproofs", + "cbc", + "ctr", + "curve25519-dalek-ng", + "derive_more", + "digest 0.10.7", + "ecdsa 0.16.8", + "ed25519-consensus", + "elliptic-curve 0.13.5", + "eyre", + "fastcrypto-derive", + "generic-array", + "hex", + "hkdf", + "lazy_static", + "merlin", + "once_cell", + "p256", + "rand 0.8.5", + "readonly", + "rfc6979 0.4.0", + "rsa", + "schemars", + "secp256k1", + "serde", + "serde_bytes", + "serde_with 2.3.3", + "sha2 0.10.7", + "sha3 0.10.8", + "signature 2.1.0", + "static_assertions", "thiserror", + "tokio", + "typenum", + "zeroize", ] [[package]] -name = "regex" -version = "1.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29" +name = "fastcrypto-derive" +version = "0.1.3" +source = "git+https://github.com/MystenLabs/fastcrypto?rev=4e7debce78340848f0009b648f56d912d6bd02d5#4e7debce78340848f0009b648f56d912d6bd02d5" dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", + "convert_case 0.6.0", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] -name = "regex-automata" -version = "0.3.7" +name = "fastcrypto-zkp" +version = "0.1.1" +source = "git+https://github.com/MystenLabs/fastcrypto?rev=4e7debce78340848f0009b648f56d912d6bd02d5#4e7debce78340848f0009b648f56d912d6bd02d5" +dependencies = [ + "ark-bls12-381", + "ark-bn254", + "ark-crypto-primitives", + "ark-ec", + "ark-ff", + "ark-groth16", + "ark-relations", + "ark-serialize", + "bcs", + "blst", + "byte-slice-cast", + "derive_more", + "fastcrypto", + "im", + "num-bigint", + "once_cell", + "poseidon-ark", + "regex", + "reqwest", + "schemars", + "serde", + "serde_json", +] + +[[package]] +name = "fastrand" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", + "instant", ] [[package]] -name = "regex-syntax" -version = "0.7.5" +name = "fastrand" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" [[package]] -name = "report" -version = "0.1.0" +name = "fd-lock" +version = "3.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5" dependencies = [ - "error-stack", - "eyre", - "itertools 0.11.0", - "thiserror", - "valuable", + "cfg-if", + "rustix 0.38.14", + "windows-sys 0.48.0", ] [[package]] -name = "reqwest" -version = "0.11.20" +name = "fdlimit" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +checksum = "2c4c9e43643f5a3be4ca5b67d26b98031ff9db6806c3440ae32e02e3ceac3f1b" dependencies = [ - "base64 0.21.3", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-rustls 0.24.1", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls 0.21.7", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-rustls 0.24.1", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots 0.25.2", - "winreg", + "libc", ] [[package]] -name = "rfc6979" -version = "0.3.1" +name = "ff" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" dependencies = [ - "crypto-bigint 0.4.9", - "hmac", - "zeroize", + "rand_core 0.6.4", + "subtle", ] [[package]] -name = "rfc6979" -version = "0.4.0" +name = "ff" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" dependencies = [ - "hmac", + "rand_core 0.6.4", "subtle", ] [[package]] -name = "ring" -version = "0.16.20" +name = "fiat-crypto" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "e825f6987101665dea6ec934c09ec6d721de7bc1bf92248e1d5810c8cd636b77" + +[[package]] +name = "findshlibs" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64" dependencies = [ "cc", + "lazy_static", "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", "winapi", ] [[package]] -name = "ripemd" -version = "0.1.3" +name = "fixed-hash" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +checksum = "cfcf0ed7fe52a17a03854ec54a9f76d6d84508d1c0e66bc1793301c73fc8493c" dependencies = [ - "digest 0.10.7", + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", ] [[package]] -name = "rlp" -version = "0.5.2" +name = "fixed-hash" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ - "bytes", - "rlp-derive", + "byteorder", + "rand 0.8.5", "rustc-hex", + "static_assertions", ] [[package]] -name = "rlp-derive" -version = "0.1.0" +name = "fixedbitset" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d" [[package]] -name = "ron" -version = "0.7.1" +name = "fixedbitset" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a" -dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", - "serde", -] +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] -name = "rust-ini" -version = "0.18.0" +name = "flagset" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" +checksum = "d52a7e408202050813e6f1d9addadcaafef3dca7530c7ddfb005d4081cce6779" dependencies = [ - "cfg-if", - "ordered-multimap", + "serde", ] [[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - -[[package]] -name = "rustc-hex" -version = "2.1.0" +name = "flate2" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +dependencies = [ + "crc32fast", + "miniz_oxide 0.7.1", +] [[package]] -name = "rustc_version" -version = "0.4.0" +name = "flex-error" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "c606d892c9de11507fa0dcffc116434f94e105d0bbdc4e405b61519464c49d7b" dependencies = [ - "semver", + "eyre", + "paste", ] [[package]] -name = "rustix" -version = "0.38.10" +name = "float-cmp" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6248e1caa625eb708e266e06159f135e8c26f2bb7ceb72dc4b2766d0340964" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" dependencies = [ - "bitflags 2.4.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", + "num-traits", ] [[package]] -name = "rustls" -version = "0.19.1" +name = "fnv" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" -dependencies = [ - "base64 0.13.1", - "log", - "ring", - "sct 0.6.1", - "webpki", -] +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] -name = "rustls" -version = "0.21.7" +name = "form_urlencoded" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ - "log", - "ring", - "rustls-webpki 0.101.4", - "sct 0.7.0", + "percent-encoding", ] [[package]] -name = "rustls-native-certs" -version = "0.5.0" +name = "forward_ref" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" -dependencies = [ - "openssl-probe", - "rustls 0.19.1", - "schannel", - "security-framework", -] +checksum = "c8cbd1169bd7b4a0a20d92b9af7a7e0422888bd38a6f5ec29c1fd8c1558a272e" [[package]] -name = "rustls-pemfile" -version = "1.0.3" +name = "fragile" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" -dependencies = [ - "base64 0.21.3", -] +checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" [[package]] -name = "rustls-webpki" -version = "0.100.2" +name = "fs2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98ff011474fa39949b7e5c0428f9b4937eda7da7848bbb947786b7be0b27dab" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" dependencies = [ - "ring", - "untrusted", + "libc", + "winapi", ] [[package]] -name = "rustls-webpki" -version = "0.101.4" +name = "fs_extra" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" -dependencies = [ - "ring", - "untrusted", -] +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] -name = "rustversion" -version = "1.0.14" +name = "funty" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7" [[package]] -name = "ryu" -version = "1.0.15" +name = "funty" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] -name = "salsa20" -version = "0.10.2" +name = "futures" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" dependencies = [ - "cipher", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", ] [[package]] -name = "same-file" -version = "1.0.6" +name = "futures-channel" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ - "winapi-util", + "futures-core", + "futures-sink", ] [[package]] -name = "scale-info" -version = "2.9.0" +name = "futures-core" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0a159d0c45c12b20c5a844feb1fe4bea86e28f17b92a5f0c42193634d3782" -dependencies = [ - "cfg-if", - "derive_more", - "parity-scale-codec", - "scale-info-derive", -] +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] -name = "scale-info-derive" -version = "2.9.0" +name = "futures-executor" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "912e55f6d20e0e80d63733872b40e1227c0bce1e1ab81ba67d696339bfd7fd29" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 1.0.109", + "futures-core", + "futures-task", + "futures-util", ] [[package]] -name = "schannel" -version = "0.1.22" +name = "futures-io" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" dependencies = [ - "windows-sys", + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", ] [[package]] -name = "schemars" -version = "0.8.13" +name = "futures-locks" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763f8cd0d4c71ed8389c90cb8100cba87e763bd01a8e614d4f0af97bcd50a161" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" dependencies = [ - "dyn-clone", - "schemars_derive", - "serde", - "serde_json", + "futures-channel", + "futures-task", ] [[package]] -name = "schemars_derive" -version = "0.8.13" +name = "futures-macro" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0f696e21e10fa546b7ffb1c9672c6de8fbc7a81acf59524386d8639bf12737" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 1.0.109", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] -name = "scopeguard" -version = "1.2.0" +name = "futures-sink" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] -name = "scrypt" -version = "0.10.0" +name = "futures-task" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" -dependencies = [ - "hmac", - "pbkdf2 0.11.0", - "salsa20", - "sha2 0.10.7", -] +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] -name = "sct" -version = "0.6.1" +name = "futures-timer" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" dependencies = [ - "ring", - "untrusted", + "gloo-timers", + "send_wrapper 0.4.0", ] [[package]] -name = "sct" -version = "0.7.0" +name = "futures-util" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ - "ring", - "untrusted", + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", ] [[package]] -name = "sec1" -version = "0.3.0" +name = "fxhash" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" dependencies = [ - "base16ct 0.1.1", - "der 0.6.1", - "generic-array", - "pkcs8 0.9.0", - "subtle", - "zeroize", + "byteorder", ] [[package]] -name = "sec1" -version = "0.7.3" +name = "gateway" +version = "0.1.0" +dependencies = [ + "aggregate-verifier", + "axelar-wasm-std", + "axelar-wasm-std-derive", + "connection-router", + "cosmwasm-schema", + "cosmwasm-std", + "cosmwasm-storage", + "cw-multi-test", + "cw-storage-plus 1.1.0", + "cw-utils 1.0.1", + "cw2 0.15.1", + "error-stack", + "report", + "schemars", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "generic-array" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ - "base16ct 0.2.0", - "der 0.7.8", - "generic-array", - "pkcs8 0.10.2", - "subtle", + "serde", + "typenum", + "version_check", "zeroize", ] [[package]] -name = "security-framework" -version = "2.9.2" +name = "getrandom" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-foundation-sys", + "cfg-if", "libc", - "security-framework-sys", + "wasi 0.9.0+wasi-snapshot-preview1", ] [[package]] -name = "security-framework-sys" -version = "2.9.1" +name = "getrandom" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ - "core-foundation-sys", + "cfg-if", + "js-sys", "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] -name = "semver" -version = "1.0.18" +name = "ghash" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" dependencies = [ - "serde", + "opaque-debug", + "polyval", ] [[package]] -name = "send_wrapper" -version = "0.4.0" +name = "gimli" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" [[package]] -name = "send_wrapper" -version = "0.6.0" +name = "gimli" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] -name = "serde" -version = "1.0.188" +name = "git-version" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "f6b0decc02f4636b9ccad390dcbe77b722a77efedfa393caf8379a51d5c61899" dependencies = [ - "serde_derive", + "git-version-macro", + "proc-macro-hack", ] [[package]] -name = "serde-hex" -version = "0.1.0" +name = "git-version-macro" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca37e3e4d1b39afd7ff11ee4e947efae85adfddf4841787bfa47c470e96dc26d" +checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f" dependencies = [ - "array-init", - "serde", - "smallvec 0.6.14", + "proc-macro-hack", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] -name = "serde-json-wasm" -version = "0.5.1" +name = "glob" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16a62a1fad1e1828b24acac8f2b468971dade7b8c3c2e672bcadefefb1f8c137" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "globset" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" dependencies = [ - "serde", + "aho-corasick 1.1.1", + "bstr", + "fnv", + "log", + "regex", ] [[package]] -name = "serde_bytes" -version = "0.11.12" +name = "globwalk" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" +checksum = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc" dependencies = [ - "serde", + "bitflags 1.3.2", + "ignore", + "walkdir", ] [[package]] -name = "serde_derive" -version = "1.0.188" +name = "gloo-timers" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", ] [[package]] -name = "serde_derive_internals" -version = "0.26.0" +name = "governor" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "821239e5672ff23e2a7060901fa622950bbd80b649cdaadd78d1c1767ed14eb4" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "cfg-if", + "dashmap", + "futures", + "futures-timer", + "no-std-compat", + "nonzero_ext", + "parking_lot 0.12.1", + "quanta", + "rand 0.8.5", + "smallvec", ] [[package]] -name = "serde_json" -version = "1.0.105" +name = "group" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" dependencies = [ - "itoa", - "ryu", - "serde", + "ff 0.12.1", + "rand_core 0.6.4", + "subtle", ] [[package]] -name = "serde_repr" -version = "0.1.16" +name = "group" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", + "ff 0.13.0", + "rand_core 0.6.4", + "subtle", ] [[package]] -name = "serde_spanned" -version = "0.6.3" +name = "guppy" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "f822a2716041492e071691606474f5a7e4fa7c2acbfd7da7b29884fb448291c7" dependencies = [ + "camino", + "cargo_metadata 0.15.4", + "cfg-if", + "debug-ignore", + "fixedbitset 0.4.2", + "guppy-summaries", + "guppy-workspace-hack", + "indexmap 1.9.3", + "itertools 0.10.5", + "nested", + "once_cell", + "pathdiff", + "petgraph 0.6.4", + "rayon", + "semver 1.0.18", "serde", + "serde_json", + "smallvec", + "static_assertions", + "target-spec", + "toml 0.5.11", ] [[package]] -name = "serde_urlencoded" +name = "guppy-summaries" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +checksum = "8bd039b8f587513b48754811cfa37c2ba079df537b490b602fa641ce18f6e72a" dependencies = [ - "form_urlencoded", - "itoa", - "ryu", + "camino", + "cfg-if", + "diffus", + "guppy-workspace-hack", + "semver 1.0.18", "serde", + "toml 0.5.11", ] [[package]] -name = "serde_with" -version = "3.3.0" +name = "guppy-workspace-hack" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237" +checksum = "92620684d99f750bae383ecb3be3748142d6095760afd5cbcf2261e9a279d780" + +[[package]] +name = "h2" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ - "base64 0.21.3", - "chrono", - "hex", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", "indexmap 1.9.3", - "indexmap 2.0.0", - "serde", - "serde_json", - "serde_with_macros", - "time", + "slab", + "tokio", + "tokio-util 0.7.9", + "tracing", ] [[package]] -name = "serde_with_macros" -version = "3.3.0" +name = "hakari" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c" +checksum = "2af0223111b69beda15417ad6a960bffb093c916f0eaa559036c7036efa2d199" dependencies = [ - "darling 0.20.3", - "proc-macro2", - "quote", - "syn 2.0.29", + "atomicwrites", + "bimap", + "camino", + "cfg-if", + "debug-ignore", + "diffy", + "guppy", + "guppy-workspace-hack", + "include_dir", + "indenter", + "itertools 0.10.5", + "owo-colors", + "pathdiff", + "rayon", + "serde", + "tabular", + "target-spec", + "toml 0.5.11", + "toml_edit 0.17.1", + "twox-hash", ] [[package]] -name = "service-registry" -version = "0.1.0" +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + +[[package]] +name = "handlebars" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39b3bc2a8f715298032cf5087e58573809374b08160aa7d750582bdb82d2683" dependencies = [ - "axelar-wasm-std", - "axelar-wasm-std-derive", - "cosmwasm-schema", - "cosmwasm-std", - "cosmwasm-storage", - "cw-multi-test", - "cw-storage-plus 0.15.1", - "cw2 0.15.1", - "error-stack", - "report", - "schemars", + "log", + "pest", + "pest_derive", "serde", + "serde_json", "thiserror", ] [[package]] -name = "sha1" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", -] - -[[package]] -name = "sha2" -version = "0.9.9" +name = "hashbrown" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "ahash 0.7.6", ] [[package]] -name = "sha2" -version = "0.10.7" +name = "hashbrown" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" dependencies = [ - "cfg-if", - "cpufeatures", - "digest 0.10.7", + "ahash 0.8.3", ] [[package]] -name = "sha3" -version = "0.10.8" +name = "hashbrown" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" -dependencies = [ - "digest 0.10.7", - "keccak", -] +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" [[package]] -name = "sharded-slab" -version = "0.1.4" +name = "hashers" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" dependencies = [ - "lazy_static", + "fxhash", ] [[package]] -name = "signal-hook-registry" -version = "1.4.1" +name = "hdrhistogram" +version = "7.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8" dependencies = [ - "libc", + "base64 0.13.1", + "byteorder", + "crossbeam-channel", + "flate2", + "nom", + "num-traits", ] [[package]] -name = "signature" -version = "1.6.4" +name = "headers" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", + "base64 0.21.4", + "bytes", + "headers-core", + "http", + "httpdate", + "mime", + "sha1", ] [[package]] -name = "signature" -version = "2.1.0" +name = "headers-core" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" dependencies = [ - "digest 0.10.7", - "rand_core 0.6.4", + "http", ] [[package]] -name = "simple_asn1" -version = "0.6.2" +name = "heck" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" dependencies = [ - "num-bigint", - "num-traits", - "thiserror", - "time", + "unicode-segmentation", ] [[package]] -name = "siphasher" -version = "0.3.11" +name = "heck" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] -name = "slab" -version = "0.4.9" +name = "hermit-abi" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] -name = "smallvec" -version = "0.6.14" +name = "hex" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" dependencies = [ - "maybe-uninit", + "serde", ] [[package]] -name = "smallvec" -version = "1.11.0" +name = "hex-literal" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "7ebdb29d2ea9ed0083cd8cece49bbd968021bd99b0849edb4a9a7ee0fdf6a4e0" [[package]] -name = "socket2" -version = "0.4.9" +name = "hkdf" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" dependencies = [ - "libc", - "winapi", + "hmac 0.12.1", ] [[package]] -name = "socket2" -version = "0.5.3" +name = "hmac" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" dependencies = [ - "libc", - "windows-sys", + "crypto-mac", + "digest 0.9.0", ] [[package]] -name = "solang-parser" -version = "0.3.1" +name = "hmac" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c792fe9fae2a2f716846f214ca10d5a1e21133e0bf36cef34bcc4a852467b21" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "itertools 0.10.5", - "lalrpop", - "lalrpop-util", - "phf", - "thiserror", - "unicode-xid", + "digest 0.10.7", ] [[package]] -name = "spin" -version = "0.5.2" +name = "hmac-sha512" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "77e806677ce663d0a199541030c816847b36e8dc095f70dae4a4f4ad63da5383" [[package]] -name = "spki" -version = "0.6.0" +name = "home" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" dependencies = [ - "base64ct", - "der 0.6.1", + "windows-sys 0.48.0", ] [[package]] -name = "spki" -version = "0.7.2" +name = "http" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ - "base64ct", - "der 0.7.8", + "bytes", + "fnv", + "itoa", ] [[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "string_cache" -version = "0.8.7" +name = "http-body" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared 0.10.0", - "precomputed-hash", + "bytes", + "http", + "pin-project-lite", ] [[package]] -name = "strsim" -version = "0.10.0" +name = "http-range-header" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" [[package]] -name = "strum" -version = "0.25.0" +name = "httparse" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" -dependencies = [ - "strum_macros", -] +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] -name = "strum_macros" -version = "0.25.2" +name = "httpdate" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.29", -] +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] -name = "subtle" -version = "2.5.0" +name = "humansize" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "02296996cb8796d7c6e3bc2d9211b7802812d36999a51bb754123ead7d37d026" [[package]] -name = "subtle-encoding" -version = "0.5.1" +name = "humansize" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" +checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" dependencies = [ - "zeroize", + "libm", ] [[package]] -name = "subtle-ng" -version = "2.5.0" +name = "humantime" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "734676eb262c623cec13c3155096e08d1f8f29adce39ba17948b18dad1e54142" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] -name = "svm-rs" -version = "0.3.0" +name = "humantime-serde" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597e3a746727984cb7ea2487b6a40726cad0dbe86628e7d429aa6b8c4c153db4" +checksum = "57a3db5ea5923d99402c94e9feb261dc5ee9b4efa158b0315f788cf549cc200c" dependencies = [ - "dirs", - "fs2", - "hex", - "once_cell", - "reqwest", - "semver", + "humantime", "serde", - "serde_json", - "sha2 0.10.7", - "thiserror", - "url", - "zip", ] [[package]] -name = "syn" -version = "1.0.109" +name = "hyper" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.4.9", + "tokio", + "tower-service", + "tracing", + "want", ] [[package]] -name = "syn" -version = "2.0.29" +name = "hyper-proxy" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +checksum = "ca815a891b24fdfb243fa3239c86154392b0953ee584aa1a2a1f66d20cbe75cc" dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[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" + "bytes", + "futures", + "headers", + "http", + "hyper", + "hyper-rustls 0.22.1", + "rustls-native-certs 0.5.0", + "tokio", + "tokio-rustls 0.22.0", + "tower-service", + "webpki 0.21.4", +] [[package]] -name = "tempfile" -version = "3.8.0" +name = "hyper-rustls" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" dependencies = [ - "cfg-if", - "fastrand 2.0.0", - "redox_syscall 0.3.5", - "rustix", - "windows-sys", + "ct-logs", + "futures-util", + "hyper", + "log", + "rustls 0.19.1", + "rustls-native-certs 0.5.0", + "tokio", + "tokio-rustls 0.22.0", + "webpki 0.21.4", + "webpki-roots 0.21.1", ] [[package]] -name = "tendermint" -version = "0.32.2" +name = "hyper-rustls" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f0a7d05cf78524782337f8edd55cbc578d159a16ad4affe2135c92f7dbac7f0" +checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" dependencies = [ - "bytes", - "digest 0.10.7", - "ed25519", - "ed25519-consensus", - "flex-error", - "futures", - "k256 0.13.1", - "num-traits", - "once_cell", - "prost 0.11.9", - "prost-types", - "ripemd", - "serde", - "serde_bytes", - "serde_json", - "serde_repr", - "sha2 0.10.7", - "signature 2.1.0", - "subtle", - "subtle-encoding", - "tendermint-proto 0.32.2", - "time", - "zeroize", + "http", + "hyper", + "log", + "rustls 0.20.9", + "rustls-native-certs 0.6.3", + "tokio", + "tokio-rustls 0.23.4", + "webpki-roots 0.22.6", ] [[package]] -name = "tendermint" -version = "0.33.0" -source = "git+https://github.com/axelarnetwork/tendermint-rs.git?branch=v0.33.x#e97033e20e660a7e707ea86db174ec047bbba50d" +name = "hyper-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ - "bytes", - "digest 0.10.7", - "ed25519", - "ed25519-consensus", - "flex-error", - "futures", - "num-traits", - "once_cell", - "prost 0.11.9", - "prost-types", - "serde", - "serde_bytes", - "serde_json", - "serde_repr", - "sha2 0.10.7", - "signature 2.1.0", - "subtle", - "subtle-encoding", - "tendermint-proto 0.33.0", - "time", - "zeroize", + "futures-util", + "http", + "hyper", + "log", + "rustls 0.21.7", + "rustls-native-certs 0.6.3", + "tokio", + "tokio-rustls 0.24.1", ] [[package]] -name = "tendermint-config" -version = "0.33.0" -source = "git+https://github.com/axelarnetwork/tendermint-rs.git?branch=v0.33.x#e97033e20e660a7e707ea86db174ec047bbba50d" +name = "hyper-timeout" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "flex-error", - "serde", - "serde_json", - "tendermint 0.33.0", - "toml 0.5.11", - "url", + "hyper", + "pin-project-lite", + "tokio", + "tokio-io-timeout", ] [[package]] -name = "tendermint-proto" -version = "0.27.0" +name = "iana-time-zone" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5895470f28c530f8ae8c4071bf8190304ce00bd131d25e81730453124a3375c" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" dependencies = [ - "bytes", - "flex-error", - "num-derive", - "num-traits", - "prost 0.11.9", - "prost-types", - "serde", - "serde_bytes", - "subtle-encoding", - "time", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", ] [[package]] -name = "tendermint-proto" -version = "0.32.2" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cec054567d16d85e8c3f6a3139963d1a66d9d3051ed545d31562550e9bcc3d" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "bytes", - "flex-error", - "num-derive", - "num-traits", - "prost 0.11.9", - "prost-types", - "serde", - "serde_bytes", - "subtle-encoding", - "time", + "cc", ] [[package]] -name = "tendermint-proto" -version = "0.33.0" -source = "git+https://github.com/axelarnetwork/tendermint-rs.git?branch=v0.33.x#e97033e20e660a7e707ea86db174ec047bbba50d" -dependencies = [ - "bytes", - "flex-error", - "num-derive", - "num-traits", - "prost 0.11.9", - "prost-types", - "serde", - "serde_bytes", - "subtle-encoding", - "time", -] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] -name = "tendermint-rpc" -version = "0.33.0" -source = "git+https://github.com/axelarnetwork/tendermint-rs.git?branch=v0.33.x#e97033e20e660a7e707ea86db174ec047bbba50d" +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" dependencies = [ - "async-trait", - "bytes", - "flex-error", - "futures", - "getrandom", - "http", - "hyper", - "hyper-proxy", - "hyper-rustls 0.22.1", - "peg", - "pin-project", - "semver", - "serde", - "serde_bytes", - "serde_json", - "subtle", - "subtle-encoding", - "tendermint 0.33.0", - "tendermint-config", - "tendermint-proto 0.33.0", - "thiserror", - "time", - "tokio", - "tracing", - "url", - "uuid", - "walkdir", + "unicode-bidi", + "unicode-normalization", ] [[package]] -name = "term" -version = "0.7.0" +name = "idna" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ - "dirs-next", - "rustversion", - "winapi", + "unicode-bidi", + "unicode-normalization", ] [[package]] -name = "termtree" -version = "0.4.1" +name = "if_chain" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" +checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" [[package]] -name = "thiserror" -version = "1.0.47" +name = "ignore" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" +checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" dependencies = [ - "thiserror-impl", + "globset", + "lazy_static", + "log", + "memchr", + "regex", + "same-file", + "thread_local", + "walkdir", + "winapi-util", ] [[package]] -name = "thiserror-impl" -version = "1.0.47" +name = "im" +version = "15.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" +checksum = "d0acd33ff0285af998aaf9b57342af478078f53492322fafc47450e09397e0e9" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", + "bitmaps", + "rand_core 0.6.4", + "rand_xoshiro", + "sized-chunks", + "typenum", + "version_check", ] [[package]] -name = "thread_local" -version = "1.1.7" +name = "impl-codec" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "161ebdfec3c8e3b52bf61c4f3550a1eea4f9579d10dc1b936f3171ebdcd6c443" dependencies = [ - "cfg-if", - "once_cell", + "parity-scale-codec 2.3.1", ] [[package]] -name = "time" -version = "0.3.28" +name = "impl-codec" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" dependencies = [ - "deranged", - "itoa", - "serde", - "time-core", - "time-macros", + "parity-scale-codec 3.6.5", ] [[package]] -name = "time-core" -version = "0.1.1" +name = "impl-rlp" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] [[package]] -name = "time-macros" -version = "0.2.14" +name = "impl-serde" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572" +checksum = "4551f042f3438e64dbd6226b20527fc84a6e1fe65688b58746a2f53623f25f5c" dependencies = [ - "time-core", + "serde", ] [[package]] -name = "tiny-keccak" -version = "2.0.2" +name = "impl-serde" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" dependencies = [ - "crunchy", + "serde", ] [[package]] -name = "tinyvec" -version = "1.6.0" +name = "impl-trait-for-tuples" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ - "tinyvec_macros", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", ] [[package]] -name = "tinyvec_macros" -version = "0.1.1" +name = "include_dir" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +dependencies = [ + "glob", + "include_dir_macros", +] [[package]] -name = "tokio" -version = "1.32.0" +name = "include_dir_macros" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "num_cpus", - "pin-project-lite", - "signal-hook-registry", - "socket2 0.5.3", - "tokio-macros", - "windows-sys", + "proc-macro2 1.0.67", + "quote 1.0.33", ] [[package]] -name = "tokio-io-timeout" -version = "1.2.0" +name = "indenter" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] -name = "tokio-macros" -version = "2.1.0" +name = "indexmap" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", + "autocfg", + "hashbrown 0.12.3", + "serde", ] [[package]] -name = "tokio-rustls" -version = "0.22.0" +name = "indexmap" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ - "rustls 0.19.1", - "tokio", - "webpki", + "equivalent", + "hashbrown 0.14.0", + "serde", ] [[package]] -name = "tokio-rustls" -version = "0.24.1" +name = "indicatif" +version = "0.17.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +checksum = "0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730" dependencies = [ - "rustls 0.21.7", - "tokio", + "console", + "instant", + "number_prefix", + "portable-atomic 1.4.3", + "unicode-width", ] [[package]] -name = "tokio-stream" -version = "0.1.14" +name = "inout" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", - "tokio-util", + "block-padding 0.3.3", + "generic-array", ] [[package]] -name = "tokio-tungstenite" -version = "0.20.0" +name = "inquire" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2dbec703c26b00d74844519606ef15d09a7d6857860f84ad223dec002ddea2" +checksum = "c33e7c1ddeb15c9abcbfef6029d8e29f69b52b6d6c891031b88ed91b5065803b" dependencies = [ - "futures-util", - "log", - "rustls 0.21.7", - "tokio", - "tokio-rustls 0.24.1", - "tungstenite", - "webpki-roots 0.23.1", + "bitflags 1.3.2", + "crossterm 0.25.0", + "dyn-clone", + "lazy_static", + "newline-converter", + "thiserror", + "unicode-segmentation", + "unicode-width", ] [[package]] -name = "tokio-util" -version = "0.7.8" +name = "insta" +version = "1.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "a0770b0a3d4c70567f0d58331f3088b0e4c4f56c9b8d764efe654b4a5d46de3a" dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", + "console", + "lazy_static", + "linked-hash-map", + "pest", + "pest_derive", + "serde", + "similar", + "yaml-rust", ] [[package]] -name = "toml" -version = "0.5.11" +name = "instant" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ - "serde", + "cfg-if", ] [[package]] -name = "toml" -version = "0.7.6" +name = "integer-encoding" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" + +[[package]] +name = "internment" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +checksum = "6ab388864246d58a276e60e7569a833d9cc4cd75c66e5ca77c177dad38e59996" dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit", + "ahash 0.7.6", + "dashmap", + "hashbrown 0.12.3", + "once_cell", + "parking_lot 0.12.1", ] [[package]] -name = "toml_datetime" -version = "0.6.3" +name = "io-lifetimes" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "serde", + "hermit-abi", + "libc", + "windows-sys 0.48.0", ] [[package]] -name = "toml_edit" -version = "0.19.14" +name = "ipnet" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" + +[[package]] +name = "iri-string" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "8f0f7638c1e223529f1bfdc48c8b133b9e0b434094d1d28473161ee48b235f78" dependencies = [ - "indexmap 2.0.0", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", + "nom", ] [[package]] -name = "tonic" -version = "0.8.3" +name = "is-terminal" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "async-stream", - "async-trait", - "axum", - "base64 0.13.1", - "bytes", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", - "percent-encoding", - "pin-project", - "prost 0.11.9", - "prost-derive 0.11.9", - "tokio", - "tokio-stream", - "tokio-util", - "tower", - "tower-layer", - "tower-service", - "tracing", - "tracing-futures", + "hermit-abi", + "rustix 0.38.14", + "windows-sys 0.48.0", ] [[package]] -name = "tonic-build" -version = "0.8.4" +name = "itertools" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ - "prettyplease 0.1.25", - "proc-macro2", - "prost-build", - "quote", - "syn 1.0.109", + "either", ] [[package]] -name = "tower" -version = "0.4.13" +name = "itertools" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" dependencies = [ - "futures-core", - "futures-util", - "indexmap 1.9.3", - "pin-project", - "pin-project-lite", - "rand", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", + "either", ] [[package]] -name = "tower-layer" -version = "0.3.2" +name = "itoa" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] -name = "tower-service" -version = "0.3.2" +name = "jemalloc-ctl" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "7cffc705424a344c054e135d12ee591402f4539245e8bbd64e6c9eaa9458b63c" +dependencies = [ + "jemalloc-sys", + "libc", + "paste", +] [[package]] -name = "tracing" -version = "0.1.37" +name = "jemalloc-sys" +version = "0.5.4+5.3.0-patched" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "ac6c1946e1cea1788cbfde01c993b52a10e2da07f4bac608228d1bed20bfebf2" dependencies = [ - "cfg-if", - "log", - "pin-project-lite", - "tracing-attributes", - "tracing-core", + "cc", + "libc", ] [[package]] -name = "tracing-attributes" +name = "jobserver" version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", + "libc", ] [[package]] -name = "tracing-core" -version = "0.1.31" +name = "js-sys" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ - "once_cell", - "valuable", + "wasm-bindgen", ] [[package]] -name = "tracing-futures" -version = "0.2.5" +name = "json5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" dependencies = [ - "pin-project", - "tracing", + "pest", + "pest_derive", + "serde", ] [[package]] -name = "tracing-log" -version = "0.1.3" +name = "json_to_table" +version = "0.6.0" +source = "git+https://github.com/zhiburt/tabled/?rev=e449317a1c02eb6b29e409ad6617e5d9eb7b3bd4#e449317a1c02eb6b29e409ad6617e5d9eb7b3bd4" +dependencies = [ + "serde_json", + "tabled", +] + +[[package]] +name = "jsonpath_lib" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" dependencies = [ - "lazy_static", "log", - "tracing-core", + "serde", + "serde_json", ] [[package]] -name = "tracing-serde" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +name = "jsonrpsee" +version = "0.16.2" +source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" dependencies = [ + "jsonrpsee-core", + "jsonrpsee-http-client", + "jsonrpsee-proc-macros", + "jsonrpsee-server", + "jsonrpsee-types", + "jsonrpsee-ws-client", + "tracing", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.16.2" +source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +dependencies = [ + "futures-util", + "http", + "jsonrpsee-core", + "jsonrpsee-types", + "pin-project", + "rustls-native-certs 0.6.3", + "soketto", + "thiserror", + "tokio", + "tokio-rustls 0.23.4", + "tokio-util 0.7.9", + "tracing", + "webpki-roots 0.22.6", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.16.2" +source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +dependencies = [ + "anyhow", + "arrayvec 0.7.4", + "async-lock", + "async-trait", + "beef", + "futures-channel", + "futures-timer", + "futures-util", + "globset", + "hyper", + "jsonrpsee-types", + "parking_lot 0.12.1", + "rand 0.8.5", + "rustc-hash", "serde", - "tracing-core", - "valuable", - "valuable-serde", + "serde_json", + "soketto", + "thiserror", + "tokio", + "tracing", ] [[package]] -name = "tracing-subscriber" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +name = "jsonrpsee-http-client" +version = "0.16.2" +source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" dependencies = [ - "nu-ansi-term", + "async-trait", + "hyper", + "hyper-rustls 0.23.2", + "jsonrpsee-core", + "jsonrpsee-types", + "rustc-hash", "serde", "serde_json", - "sharded-slab", - "smallvec 1.11.0", - "thread_local", - "tracing-core", - "tracing-log", - "tracing-serde", - "valuable", - "valuable-serde", + "thiserror", + "tokio", + "tracing", ] [[package]] -name = "try-lock" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +name = "jsonrpsee-proc-macros" +version = "0.16.2" +source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] [[package]] -name = "tungstenite" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e862a1c4128df0112ab625f55cd5c934bcb4312ba80b39ae4b4835a3fd58e649" +name = "jsonrpsee-server" +version = "0.16.2" +source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" dependencies = [ - "byteorder", - "bytes", - "data-encoding", + "futures-channel", + "futures-util", "http", - "httparse", - "log", - "rand", - "rustls 0.21.7", - "sha1", - "thiserror", - "url", - "utf-8", + "hyper", + "jsonrpsee-core", + "jsonrpsee-types", + "serde", + "serde_json", + "soketto", + "tokio", + "tokio-stream", + "tokio-util 0.7.9", + "tower", + "tracing", ] [[package]] -name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +name = "jsonrpsee-types" +version = "0.16.2" +source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", + "tracing", +] [[package]] -name = "ucd-trie" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +name = "jsonrpsee-ws-client" +version = "0.16.2" +source = "git+https://github.com/wlmyng/jsonrpsee.git?rev=b1b300784795f6a64d0fcdf8f03081a9bc38bde8#b1b300784795f6a64d0fcdf8f03081a9bc38bde8" +dependencies = [ + "http", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-types", +] [[package]] -name = "uint" -version = "0.9.5" +name = "jsonwebtoken" +version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", + "base64 0.21.4", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", ] [[package]] -name = "unicode-bidi" -version = "0.3.13" +name = "k256" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" +dependencies = [ + "cfg-if", + "ecdsa 0.14.8", + "elliptic-curve 0.12.3", + "sha2 0.10.7", + "sha3 0.10.8", +] [[package]] -name = "unicode-ident" -version = "1.0.11" +name = "k256" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +dependencies = [ + "cfg-if", + "ecdsa 0.16.8", + "elliptic-curve 0.13.5", + "once_cell", + "sha2 0.10.7", + "signature 2.1.0", +] [[package]] -name = "unicode-normalization" -version = "0.1.22" +name = "keccak" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" dependencies = [ - "tinyvec", + "cpufeatures", ] [[package]] -name = "unicode-xid" -version = "0.2.4" +name = "lalrpop" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +dependencies = [ + "ascii-canvas", + "bit-set", + "diff", + "ena", + "is-terminal", + "itertools 0.10.5", + "lalrpop-util", + "petgraph 0.6.4", + "regex", + "regex-syntax 0.7.5", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid 0.2.4", +] [[package]] -name = "untrusted" -version = "0.7.1" +name = "lalrpop-util" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" [[package]] -name = "url" -version = "2.4.1" +name = "lazy_static" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", + "spin 0.5.2", ] [[package]] -name = "utf-8" -version = "0.7.6" +name = "lazycell" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] -name = "utf8parse" -version = "0.2.1" +name = "leb128" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] -name = "uuid" -version = "0.8.2" +name = "libc" +version = "0.2.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom", - "serde", -] +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" [[package]] -name = "valuable" -version = "0.1.0" +name = "libloading" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" dependencies = [ - "valuable-derive", + "cfg-if", + "winapi", ] [[package]] -name = "valuable-derive" -version = "0.1.0" +name = "libm" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d44690c645190cfce32f91a1582281654b2338c6073fa250b0949fd25c55b32" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" [[package]] -name = "valuable-serde" -version = "0.1.0" +name = "librocksdb-sys" +version = "0.11.0+8.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5285cfff30cdabe26626736a54d989687dd9cab84f51f4048b61d6d0ae8b0907" +checksum = "d3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3e" dependencies = [ - "serde", - "valuable", + "bindgen", + "bzip2-sys", + "cc", + "glob", + "libc", + "libz-sys", + "lz4-sys", + "zstd-sys", ] [[package]] -name = "version_check" -version = "0.9.4" +name = "libtest-mimic" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "voting-verifier" -version = "0.1.0" +checksum = "6d8de370f98a6cb8a4606618e53e802f93b094ddec0f96988eaec2c27e6e9ce7" dependencies = [ - "axelar-wasm-std", - "axelar-wasm-std-derive", - "connection-router", - "cosmwasm-schema", - "cosmwasm-std", - "cosmwasm-storage", - "cw-multi-test", - "cw-storage-plus 1.1.0", - "cw0", - "cw2 0.15.1", - "either", - "error-stack", - "report", - "schemars", - "serde", - "serde_json", - "service-registry", - "sha3", - "thiserror", + "clap", + "termcolor", + "threadpool", ] [[package]] -name = "walkdir" -version = "2.3.3" +name = "libz-sys" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" dependencies = [ - "same-file", - "winapi-util", + "cc", + "pkg-config", + "vcpkg", ] [[package]] -name = "want" -version = "0.3.1" +name = "linked-hash-map" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ - "try-lock", + "autocfg", + "scopeguard", ] [[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +name = "log" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +dependencies = [ + "serde", +] [[package]] -name = "wasm-bindgen" -version = "0.2.87" +name = "lru" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" dependencies = [ - "cfg-if", - "wasm-bindgen-macro", + "hashbrown 0.13.2", ] [[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" +name = "lz4-sys" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.29", - "wasm-bindgen-shared", + "cc", + "libc", ] [[package]] -name = "wasm-bindgen-futures" -version = "0.4.37" +name = "mach2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8" dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", + "libc", ] [[package]] -name = "wasm-bindgen-macro" -version = "0.2.87" +name = "match_opt" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "405ba1524a1e6ae755334d6966380c60ec40157e0155f9032dd3c294b6384da9" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "quote", - "wasm-bindgen-macro-support", + "regex-automata 0.1.10", ] [[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.87" +name = "matchit" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb" + +[[package]] +name = "matchit" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed1202b2a6f884ae56f04cff409ab315c5ce26b5e58d7412e484f01fd52f52ef" + +[[package]] +name = "md-5" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", - "wasm-bindgen-backend", - "wasm-bindgen-shared", + "block-buffer 0.9.0", + "digest 0.9.0", + "opaque-debug", ] [[package]] -name = "wasm-bindgen-shared" -version = "0.2.87" +name = "md-5" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest 0.10.7", +] [[package]] -name = "web-sys" -version = "0.3.64" +name = "memchr" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" + +[[package]] +name = "memmap2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ - "js-sys", - "wasm-bindgen", + "libc", ] [[package]] -name = "webpki" -version = "0.21.4" +name = "memoffset" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ - "ring", + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "migrations_internals" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f23f71580015254b020e856feac3df5878c2c7a8812297edd6c0a485ac9dada" +dependencies = [ + "serde", + "toml 0.7.8", +] + +[[package]] +name = "migrations_macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cce3325ac70e67bbab5bd837a31cae01f1a6db64e0e744a33cb03a543469ef08" +dependencies = [ + "migrations_internals", + "proc-macro2 1.0.67", + "quote 1.0.33", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.7.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" +dependencies = [ + "libc", + "log", + "miow", + "ntapi 0.3.7", + "winapi", +] + +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "miow" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +dependencies = [ + "winapi", +] + +[[package]] +name = "mockall" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" +dependencies = [ + "cfg-if", + "downcast", + "fragile", + "lazy_static", + "mockall_derive", + "predicates 2.1.5", + "predicates-tree", +] + +[[package]] +name = "mockall_derive" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" +dependencies = [ + "cfg-if", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "more-asserts" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e" + +[[package]] +name = "move-abigen" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "heck 0.3.3", + "log", + "move-binary-format", + "move-bytecode-verifier", + "move-command-line-common", + "move-core-types", + "move-model", + "serde", +] + +[[package]] +name = "move-abstract-stack" +version = "0.0.1" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" + +[[package]] +name = "move-binary-format" +version = "0.0.3" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "enum-compat-util", + "move-core-types", + "move-proc-macros", + "once_cell", + "ref-cast", + "serde", + "variant_count", +] + +[[package]] +name = "move-borrow-graph" +version = "0.0.1" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" + +[[package]] +name = "move-bytecode-source-map" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "move-binary-format", + "move-command-line-common", + "move-core-types", + "move-ir-types", + "move-symbol-pool", + "serde", +] + +[[package]] +name = "move-bytecode-utils" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "move-binary-format", + "move-core-types", + "petgraph 0.5.1", + "serde-reflection", +] + +[[package]] +name = "move-bytecode-verifier" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "fail", + "move-abstract-stack", + "move-binary-format", + "move-borrow-graph", + "move-core-types", + "move-vm-config", + "petgraph 0.5.1", +] + +[[package]] +name = "move-bytecode-verifier-suivm" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "fail", + "move-abstract-stack", + "move-binary-format", + "move-borrow-graph", + "move-core-types", + "move-vm-config", + "petgraph 0.5.1", +] + +[[package]] +name = "move-bytecode-verifier-v0" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "fail", + "move-abstract-stack", + "move-binary-format", + "move-borrow-graph", + "move-core-types", + "move-vm-config", + "petgraph 0.5.1", +] + +[[package]] +name = "move-bytecode-viewer" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "clap", + "crossterm 0.21.0", + "move-binary-format", + "move-bytecode-source-map", + "move-command-line-common", + "move-disassembler", + "move-ir-types", + "regex", + "tui", +] + +[[package]] +name = "move-cli" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "clap", + "codespan-reporting", + "colored", + "difference", + "itertools 0.10.5", + "move-binary-format", + "move-bytecode-source-map", + "move-bytecode-utils", + "move-bytecode-verifier", + "move-bytecode-viewer", + "move-command-line-common", + "move-compiler", + "move-core-types", + "move-coverage", + "move-disassembler", + "move-docgen", + "move-errmapgen", + "move-ir-types", + "move-package", + "move-prover", + "move-resource-viewer", + "move-stdlib", + "move-symbol-pool", + "move-unit-test", + "move-vm-profiler", + "move-vm-runtime", + "move-vm-test-utils", + "move-vm-types", + "once_cell", + "read-write-set", + "read-write-set-dynamic", + "reqwest", + "serde", + "serde_json", + "serde_yaml 0.8.26", + "tempfile", + "toml_edit 0.14.4", + "walkdir", +] + +[[package]] +name = "move-command-line-common" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "difference", + "dirs-next", + "hex", + "move-core-types", + "num-bigint", + "once_cell", + "serde", + "sha2 0.9.9", + "walkdir", +] + +[[package]] +name = "move-compiler" +version = "0.0.1" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "clap", + "codespan-reporting", + "difference", + "hex", + "move-binary-format", + "move-borrow-graph", + "move-bytecode-source-map", + "move-bytecode-verifier", + "move-command-line-common", + "move-core-types", + "move-ir-to-bytecode", + "move-ir-types", + "move-symbol-pool", + "num-bigint", + "once_cell", + "petgraph 0.5.1", + "regex", + "serde", + "sha3 0.9.1", + "tempfile", + "walkdir", +] + +[[package]] +name = "move-core-types" +version = "0.0.4" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "arbitrary", + "bcs", + "enum-compat-util", + "ethnum", + "hex", + "move-proc-macros", + "num", + "once_cell", + "primitive-types 0.10.1", + "proptest", + "proptest-derive", + "rand 0.8.5", + "ref-cast", + "serde", + "serde_bytes", + "uint", +] + +[[package]] +name = "move-coverage" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "clap", + "codespan", + "colored", + "move-binary-format", + "move-bytecode-source-map", + "move-command-line-common", + "move-core-types", + "move-ir-types", + "once_cell", + "petgraph 0.5.1", + "serde", +] + +[[package]] +name = "move-disassembler" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "clap", + "colored", + "hex", + "move-binary-format", + "move-bytecode-source-map", + "move-bytecode-verifier", + "move-command-line-common", + "move-compiler", + "move-core-types", + "move-coverage", + "move-ir-types", +] + +[[package]] +name = "move-docgen" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "codespan", + "codespan-reporting", + "itertools 0.10.5", + "log", + "move-compiler", + "move-model", + "num", + "once_cell", + "regex", + "serde", +] + +[[package]] +name = "move-errmapgen" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "log", + "move-command-line-common", + "move-core-types", + "move-model", + "serde", +] + +[[package]] +name = "move-ir-compiler" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "clap", + "move-binary-format", + "move-bytecode-source-map", + "move-bytecode-verifier", + "move-command-line-common", + "move-core-types", + "move-ir-to-bytecode", + "move-ir-types", + "move-symbol-pool", + "serde_json", +] + +[[package]] +name = "move-ir-to-bytecode" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "codespan-reporting", + "log", + "move-binary-format", + "move-bytecode-source-map", + "move-command-line-common", + "move-core-types", + "move-ir-to-bytecode-syntax", + "move-ir-types", + "move-symbol-pool", + "ouroboros", + "thiserror", +] + +[[package]] +name = "move-ir-to-bytecode-syntax" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "hex", + "move-command-line-common", + "move-core-types", + "move-ir-types", + "move-symbol-pool", +] + +[[package]] +name = "move-ir-types" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "hex", + "move-command-line-common", + "move-core-types", + "move-symbol-pool", + "once_cell", + "serde", +] + +[[package]] +name = "move-model" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "codespan", + "codespan-reporting", + "internment", + "itertools 0.10.5", + "log", + "move-binary-format", + "move-bytecode-source-map", + "move-bytecode-verifier", + "move-command-line-common", + "move-compiler", + "move-core-types", + "move-disassembler", + "move-ir-types", + "move-symbol-pool", + "num", + "once_cell", + "regex", + "serde", +] + +[[package]] +name = "move-package" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "clap", + "colored", + "dirs-next", + "itertools 0.10.5", + "move-abigen", + "move-binary-format", + "move-bytecode-source-map", + "move-bytecode-utils", + "move-command-line-common", + "move-compiler", + "move-core-types", + "move-docgen", + "move-model", + "move-symbol-pool", + "named-lock", + "once_cell", + "petgraph 0.5.1", + "regex", + "reqwest", + "serde", + "serde_yaml 0.8.26", + "sha2 0.9.9", + "tempfile", + "toml 0.5.11", + "treeline", + "walkdir", + "whoami", +] + +[[package]] +name = "move-proc-macros" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "enum-compat-util", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "move-prover" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "async-trait", + "clap", + "codespan", + "codespan-reporting", + "futures", + "hex", + "itertools 0.10.5", + "log", + "move-abigen", + "move-binary-format", + "move-command-line-common", + "move-compiler", + "move-core-types", + "move-docgen", + "move-errmapgen", + "move-ir-types", + "move-model", + "move-prover-boogie-backend", + "move-stackless-bytecode", + "num", + "once_cell", + "pretty", + "rand 0.8.5", + "serde", + "serde_json", + "simplelog", + "tokio", + "toml 0.5.11", +] + +[[package]] +name = "move-prover-boogie-backend" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "async-trait", + "codespan", + "codespan-reporting", + "futures", + "itertools 0.10.5", + "log", + "move-binary-format", + "move-command-line-common", + "move-core-types", + "move-model", + "move-stackless-bytecode", + "num", + "once_cell", + "pretty", + "rand 0.8.5", + "regex", + "serde", + "serde_json", + "tera", + "tokio", +] + +[[package]] +name = "move-read-write-set-types" +version = "0.0.3" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "move-binary-format", + "move-core-types", + "serde", +] + +[[package]] +name = "move-resource-viewer" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "enum-compat-util", + "hex", + "move-binary-format", + "move-bytecode-utils", + "move-core-types", + "move-proc-macros", + "once_cell", + "serde", +] + +[[package]] +name = "move-stackless-bytecode" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "codespan", + "codespan-reporting", + "ethnum", + "im", + "itertools 0.10.5", + "log", + "move-binary-format", + "move-borrow-graph", + "move-bytecode-verifier", + "move-command-line-common", + "move-compiler", + "move-core-types", + "move-ir-to-bytecode", + "move-model", + "move-read-write-set-types", + "num", + "once_cell", + "paste", + "petgraph 0.5.1", + "serde", +] + +[[package]] +name = "move-stackless-bytecode-interpreter" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bytecode-interpreter-crypto", + "clap", + "codespan-reporting", + "itertools 0.10.5", + "move-binary-format", + "move-core-types", + "move-model", + "move-stackless-bytecode", + "num", + "serde", +] + +[[package]] +name = "move-stdlib" +version = "0.1.1" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "hex", + "log", + "move-binary-format", + "move-command-line-common", + "move-core-types", + "move-docgen", + "move-errmapgen", + "move-prover", + "move-vm-runtime", + "move-vm-types", + "sha2 0.9.9", + "sha3 0.9.1", + "smallvec", + "walkdir", +] + +[[package]] +name = "move-stdlib-suivm" +version = "0.1.1" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "hex", + "log", + "move-binary-format", + "move-command-line-common", + "move-core-types", + "move-docgen", + "move-errmapgen", + "move-prover", + "move-vm-runtime-suivm", + "move-vm-types", + "sha2 0.9.9", + "sha3 0.9.1", + "smallvec", + "walkdir", +] + +[[package]] +name = "move-stdlib-v0" +version = "0.1.1" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "hex", + "log", + "move-binary-format", + "move-command-line-common", + "move-core-types", + "move-docgen", + "move-errmapgen", + "move-prover", + "move-vm-runtime-v0", + "move-vm-types", + "sha2 0.9.9", + "sha3 0.9.1", + "smallvec", + "walkdir", +] + +[[package]] +name = "move-symbol-pool" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "once_cell", + "phf", + "serde", +] + +[[package]] +name = "move-transactional-test-runner" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "async-trait", + "clap", + "colored", + "move-binary-format", + "move-bytecode-source-map", + "move-bytecode-utils", + "move-bytecode-verifier", + "move-cli", + "move-command-line-common", + "move-compiler", + "move-core-types", + "move-disassembler", + "move-ir-compiler", + "move-ir-types", + "move-resource-viewer", + "move-stackless-bytecode-interpreter", + "move-stdlib", + "move-symbol-pool", + "move-vm-config", + "move-vm-runtime", + "move-vm-test-utils", + "move-vm-types", + "once_cell", + "rayon", + "regex", + "tempfile", + "tokio", +] + +[[package]] +name = "move-unit-test" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "better_any", + "clap", + "codespan-reporting", + "colored", + "itertools 0.10.5", + "move-binary-format", + "move-bytecode-utils", + "move-command-line-common", + "move-compiler", + "move-core-types", + "move-ir-types", + "move-model", + "move-resource-viewer", + "move-stackless-bytecode-interpreter", + "move-stdlib", + "move-symbol-pool", + "move-vm-profiler", + "move-vm-runtime", + "move-vm-test-utils", + "move-vm-types", + "once_cell", + "rayon", + "regex", +] + +[[package]] +name = "move-vm-config" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "move-binary-format", +] + +[[package]] +name = "move-vm-profiler" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "move-vm-config", + "once_cell", + "serde", + "serde_json", + "serde_with 2.3.3", +] + +[[package]] +name = "move-vm-runtime" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "better_any", + "fail", + "move-binary-format", + "move-bytecode-verifier", + "move-core-types", + "move-vm-config", + "move-vm-profiler", + "move-vm-types", + "once_cell", + "parking_lot 0.11.2", + "sha3 0.9.1", + "smallvec", + "tracing", +] + +[[package]] +name = "move-vm-runtime-suivm" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "better_any", + "fail", + "move-binary-format", + "move-bytecode-verifier-suivm", + "move-core-types", + "move-vm-config", + "move-vm-profiler", + "move-vm-types", + "once_cell", + "parking_lot 0.11.2", + "sha3 0.9.1", + "smallvec", + "tracing", +] + +[[package]] +name = "move-vm-runtime-v0" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "better_any", + "fail", + "move-binary-format", + "move-bytecode-verifier-v0", + "move-core-types", + "move-vm-config", + "move-vm-profiler", + "move-vm-types", + "once_cell", + "parking_lot 0.11.2", + "sha3 0.9.1", + "smallvec", + "tracing", +] + +[[package]] +name = "move-vm-test-utils" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "move-binary-format", + "move-core-types", + "move-vm-profiler", + "move-vm-types", + "once_cell", + "serde", +] + +[[package]] +name = "move-vm-types" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "bcs", + "move-binary-format", + "move-core-types", + "move-vm-profiler", + "once_cell", + "serde", + "smallvec", +] + +[[package]] +name = "msim" +version = "0.1.0" +source = "git+https://github.com/MystenLabs/mysten-sim.git?rev=03b22b1576b5b81fd76fc9aa85009b22ddbfd5b6#03b22b1576b5b81fd76fc9aa85009b22ddbfd5b6" +dependencies = [ + "ahash 0.7.6", + "async-task", + "bincode", + "bytes", + "cc", + "downcast-rs", + "erasable", + "futures", + "lazy_static", + "libc", + "msim-macros", + "naive-timer", + "pin-project-lite", + "rand 0.8.5", + "real_tokio", + "serde", + "socket2 0.4.9", + "tap", + "tokio-util 0.7.7", + "toml 0.5.11", + "tracing", + "tracing-subscriber 0.3.17", +] + +[[package]] +name = "msim-macros" +version = "0.1.0" +source = "git+https://github.com/MystenLabs/mysten-sim.git?rev=03b22b1576b5b81fd76fc9aa85009b22ddbfd5b6#03b22b1576b5b81fd76fc9aa85009b22ddbfd5b6" +dependencies = [ + "darling 0.14.4", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "multer" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01acbdc23469fd8fe07ab135923371d5f5a422fbf9c522158677c8eb15bc51c2" +dependencies = [ + "bytes", + "encoding_rs", + "futures-util", + "http", + "httparse", + "log", + "memchr", + "mime", + "spin 0.9.8", + "version_check", +] + +[[package]] +name = "multiaddr" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b36f567c7099511fa8612bbbb52dda2419ce0bdbacf31714e3a5ffdb766d3bd" +dependencies = [ + "arrayref", + "byteorder", + "data-encoding", + "log", + "multibase", + "multihash", + "percent-encoding", + "serde", + "static_assertions", + "unsigned-varint", + "url", +] + +[[package]] +name = "multibase" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b3539ec3c1f04ac9748a260728e855f261b4977f5c3406612c884564f329404" +dependencies = [ + "base-x", + "data-encoding", + "data-encoding-macro", +] + +[[package]] +name = "multihash" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835d6ff01d610179fbce3de1694d007e500bf33a7f29689838941d6bf783ae40" +dependencies = [ + "core2", + "multihash-derive", + "unsigned-varint", +] + +[[package]] +name = "multihash-derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6d4752e6230d8ef7adf7bd5d8c4b1f6561c1014c5ba9a37445ccefe18aa1db" +dependencies = [ + "proc-macro-crate", + "proc-macro-error", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", + "synstructure", +] + +[[package]] +name = "multimap" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" + +[[package]] +name = "multisig" +version = "0.1.0" +dependencies = [ + "axelar-wasm-std", + "axelar-wasm-std-derive", + "cosmwasm-crypto", + "cosmwasm-schema", + "cosmwasm-std", + "cosmwasm-storage", + "cw-multi-test", + "cw-storage-plus 1.1.0", + "cw2 0.15.1", + "error-stack", + "getrandom 0.2.10", + "rand 0.8.5", + "report", + "schemars", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "multisig-prover" +version = "0.1.0" +dependencies = [ + "anyhow", + "axelar-wasm-std", + "axelar-wasm-std-derive", + "bcs", + "connection-router", + "cosmwasm-schema", + "cosmwasm-std", + "cosmwasm-storage", + "cw-multi-test", + "cw-storage-plus 1.1.0", + "cw-utils 1.0.1", + "cw2 0.15.1", + "either", + "error-stack", + "ethabi", + "gateway", + "hex", + "itertools 0.11.0", + "k256 0.13.1", + "multisig", + "report", + "schemars", + "serde", + "serde_json", + "service-registry", + "sha3 0.10.8", + "thiserror", + "voting-verifier", +] + +[[package]] +name = "mysten-metrics" +version = "0.7.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "async-trait", + "dashmap", + "futures", + "once_cell", + "parking_lot 0.12.1", + "prometheus", + "prometheus-closure-metric", + "scopeguard", + "tap", + "tokio", + "tracing", + "uuid 1.4.1", + "workspace-hack", +] + +[[package]] +name = "mysten-network" +version = "0.2.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anemo", + "bcs", + "bytes", + "eyre", + "futures", + "http", + "multiaddr", + "serde", + "snap", + "tokio", + "tokio-stream", + "tonic 0.8.3", + "tonic-health", + "tower", + "tower-http", + "tracing", + "workspace-hack", +] + +[[package]] +name = "mysten-util-mem" +version = "0.11.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "cfg-if", + "ed25519-consensus", + "fastcrypto", + "hashbrown 0.12.3", + "impl-trait-for-tuples", + "indexmap 1.9.3", + "mysten-util-mem-derive", + "once_cell", + "parking_lot 0.12.1", + "roaring", + "smallvec", + "workspace-hack", +] + +[[package]] +name = "mysten-util-mem-derive" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "proc-macro2 1.0.67", + "syn 1.0.109", + "synstructure", + "workspace-hack", +] + +[[package]] +name = "naive-timer" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "034a0ad7deebf0c2abcf2435950a6666c3c15ea9d8fad0c0f48efa8a7f843fed" + +[[package]] +name = "named-lock" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a3eb6b7c682b65d1f631ec3176829d72ab450b3aacdd3f719bf220822e59ac" +dependencies = [ + "libc", + "once_cell", + "parking_lot 0.12.1", + "thiserror", + "widestring", + "winapi", +] + +[[package]] +name = "narwhal-config" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "fastcrypto", + "match_opt", + "mysten-network", + "mysten-util-mem", + "narwhal-crypto", + "rand 0.8.5", + "serde", + "serde_json", + "sui-protocol-config", + "thiserror", + "tracing", + "workspace-hack", +] + +[[package]] +name = "narwhal-crypto" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "bcs", + "fastcrypto", + "serde", + "shared-crypto", + "workspace-hack", +] + +[[package]] +name = "nested" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b420f638f07fe83056b55ea190bb815f609ec5a35e7017884a10f78839c9e" + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "newline-converter" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f71d09d5c87634207f894c6b31b6a2b2c64ea3bdcf71bd5599fdbbe1600c00f" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "nexlint" +version = "0.1.0" +source = "git+https://github.com/nextest-rs/nexlint.git?rev=94da5c787636dad779c340affa65219134d127f5#94da5c787636dad779c340affa65219134d127f5" +dependencies = [ + "camino", + "debug-ignore", + "determinator", + "guppy", + "hakari", + "hex", + "once_cell", + "serde", +] + +[[package]] +name = "nexlint-lints" +version = "0.1.0" +source = "git+https://github.com/nextest-rs/nexlint.git?rev=94da5c787636dad779c340affa65219134d127f5#94da5c787636dad779c340affa65219134d127f5" +dependencies = [ + "anyhow", + "camino", + "colored-diff", + "globset", + "guppy", + "nexlint", + "regex", + "serde", + "toml 0.5.11", +] + +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + +[[package]] +name = "nix" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" +dependencies = [ + "bitflags 1.3.2", + "cc", + "cfg-if", + "libc", + "memoffset 0.6.5", +] + +[[package]] +name = "nix" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", +] + +[[package]] +name = "no-std-compat" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nom8" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8" +dependencies = [ + "memchr", +] + +[[package]] +name = "nonzero_ext" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" + +[[package]] +name = "normalize-line-endings" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" + +[[package]] +name = "ntapi" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +dependencies = [ + "winapi", +] + +[[package]] +name = "ntapi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +dependencies = [ + "winapi", +] + +[[package]] +name = "ntest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da8ec6d2b73d45307e926f5af46809768581044384637af6b3f3fe7c3c88f512" +dependencies = [ + "ntest_test_cases", + "ntest_timeout", +] + +[[package]] +name = "ntest_test_cases" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be7d33be719c6f4d09e64e27c1ef4e73485dc4cc1f4d22201f89860a7fe22e22" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "ntest_timeout" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "066b468120587a402f0b47d8f80035c921f6a46f8209efd0632a89a16f5188a4" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand 0.8.5", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-complex" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-derive" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive 0.6.1", +] + +[[package]] +name = "num_enum" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70bf6736f74634d299d00086f02986875b3c2d924781a6a2cb6c201e73da0ceb" +dependencies = [ + "num_enum_derive 0.7.0", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ea360eafe1022f7cc56cd7b869ed57330fb2453d0c7831d99b74c65d2f5597" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.30.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" +dependencies = [ + "memchr", +] + +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + +[[package]] +name = "oid-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec 0.7.4", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-multimap" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a" +dependencies = [ + "dlv-list", + "hashbrown 0.12.3", +] + +[[package]] +name = "ouroboros" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2ba07320d39dfea882faa70554b4bd342a5f273ed59ba7c1c6b4c840492c954" +dependencies = [ + "aliasable", + "ouroboros_macro", + "static_assertions", +] + +[[package]] +name = "ouroboros_macro" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec4c6225c69b4ca778c0aea097321a64c421cf4577b331c61b229267edabb6f8" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "output_vt100" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" +dependencies = [ + "winapi", +] + +[[package]] +name = "outref" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa 0.16.8", + "elliptic-curve 0.13.5", + "primeorder", + "sha2 0.10.7", +] + +[[package]] +name = "papergrid" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae7891b22598926e4398790c8fe6447930c72a67d36d983a49d6ce682ce83290" +dependencies = [ + "bytecount", + "fnv", + "unicode-width", +] + +[[package]] +name = "parity-scale-codec" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373b1a4c1338d9cd3d1fa53b3a11bdab5ab6bd80a20f7f7becd76953ae2be909" +dependencies = [ + "arrayvec 0.7.4", + "bitvec 0.20.4", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive 2.3.1", + "serde", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" +dependencies = [ + "arrayvec 0.7.4", + "bitvec 1.0.1", + "byte-slice-cast", + "impl-trait-for-tuples", + "parity-scale-codec-derive 3.6.5", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "parking" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.8", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "parse-zoneinfo" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41" +dependencies = [ + "regex", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +dependencies = [ + "camino", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac 0.12.1", + "password-hash", + "sha2 0.10.7", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac 0.12.1", +] + +[[package]] +name = "peeking_take_while" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" + +[[package]] +name = "peg" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07c0b841ea54f523f7aa556956fbd293bcbe06f2e67d2eb732b7278aaf1d166a" +dependencies = [ + "peg-macros", + "peg-runtime", +] + +[[package]] +name = "peg-macros" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aa52829b8decbef693af90202711348ab001456803ba2a98eb4ec8fb70844c" +dependencies = [ + "peg-runtime", + "proc-macro2 1.0.67", + "quote 1.0.33", +] + +[[package]] +name = "peg-runtime" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c719dcf55f09a3a7e764c6649ab594c18a177e3599c467983cdf644bfc0a4088" + +[[package]] +name = "pem" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" +dependencies = [ + "base64 0.13.1", +] + +[[package]] +name = "pem-rfc7468" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d159833a9105500e0398934e205e0773f0b27529557134ecfc51c27646adac" +dependencies = [ + "base64ct", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pest" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a4d085fd991ac8d5b05a147b437791b4260b76326baf0fc60cf7c9c27ecd33" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bee7be22ce7918f641a33f08e3f43388c7656772244e2bbb2477f44cc9021a" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1511785c5e98d79a05e8a6bc34b4ac2168a0e3e92161862030ad84daa223141" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "pest_meta" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42f0394d3123e33353ca5e1e89092e533d2cc490389f2bd6131c43c634ebc5f" +dependencies = [ + "once_cell", + "pest", + "sha2 0.10.7", +] + +[[package]] +name = "petgraph" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7" +dependencies = [ + "fixedbitset 0.2.0", + "indexmap 1.9.3", +] + +[[package]] +name = "petgraph" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +dependencies = [ + "fixedbitset 0.4.2", + "indexmap 2.0.0", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_codegen" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared 0.11.2", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator", + "phf_shared 0.11.2", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", + "uncased", +] + +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs1" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eff33bdbdfc54cc98a2eca766ebdec3e1b8fb7387523d5c9c9a2891da856f719" +dependencies = [ + "der 0.6.1", + "pkcs8 0.9.0", + "spki 0.6.0", + "zeroize", +] + +[[package]] +name = "pkcs8" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +dependencies = [ + "der 0.6.1", + "spki 0.6.0", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der 0.7.8", + "spki 0.7.2", +] + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "plotters" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" + +[[package]] +name = "plotters-svg" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "polyval" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e30165d31df606f5726b090ec7592c308a0eaf61721ff64c9a3018e344a8753e" +dependencies = [ + "portable-atomic 1.4.3", +] + +[[package]] +name = "portable-atomic" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" + +[[package]] +name = "poseidon-ark" +version = "0.0.1" +source = "git+https://github.com/arnaucube/poseidon-ark.git?rev=ff7f5e05d55667b4ffba129b837da780c4c5c849#ff7f5e05d55667b4ffba129b837da780c4c5c849" +dependencies = [ + "ark-bn254", + "ark-ff", + "ark-std", +] + +[[package]] +name = "pprof" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "196ded5d4be535690899a4631cc9f18cdc41b7ebf24a79400f46f48e49a11059" +dependencies = [ + "backtrace", + "cfg-if", + "findshlibs", + "libc", + "log", + "nix 0.26.4", + "once_cell", + "parking_lot 0.12.1", + "smallvec", + "symbolic-demangle", + "tempfile", + "thiserror", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "pq-sys" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31c0052426df997c0cbd30789eb44ca097e3541717a7b8fa36b1c464ee7edebd" +dependencies = [ + "vcpkg", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "predicates" +version = "2.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" +dependencies = [ + "difflib", + "float-cmp", + "itertools 0.10.5", + "normalize-line-endings", + "predicates-core", + "regex", +] + +[[package]] +name = "predicates" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dfc28575c2e3f19cb3c73b93af36460ae898d426eba6fc15b9bd2a5220758a0" +dependencies = [ + "anstyle", + "difflib", + "itertools 0.11.0", + "predicates-core", +] + +[[package]] +name = "predicates-core" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b794032607612e7abeb4db69adb4e33590fa6cf1149e95fd7cb00e634b92f174" + +[[package]] +name = "predicates-tree" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368ba315fb8c5052ab692e68a0eefec6ec57b23a36959c14496f0b0df2c0cecf" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "pretty" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9940b913ee56ddd94aec2d3cd179dd47068236f42a1a6415ccf9d880ce2a61" +dependencies = [ + "arrayvec 0.5.2", + "typed-arena", +] + +[[package]] +name = "pretty_assertions" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +dependencies = [ + "diff", + "yansi", +] + +[[package]] +name = "prettyplease" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" +dependencies = [ + "proc-macro2 1.0.67", + "syn 1.0.109", +] + +[[package]] +name = "prettyplease" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +dependencies = [ + "proc-macro2 1.0.67", + "syn 2.0.37", +] + +[[package]] +name = "prettytable-rs" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eea25e07510aa6ab6547308ebe3c036016d162b8da920dbb079e3ba8acf3d95a" +dependencies = [ + "csv", + "encode_unicode 1.0.0", + "is-terminal", + "lazy_static", + "term", + "unicode-width", +] + +[[package]] +name = "primeorder" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c2fcef82c0ec6eefcc179b978446c399b3cdf73c392c35604e399eee6df1ee3" +dependencies = [ + "elliptic-curve 0.13.5", +] + +[[package]] +name = "primitive-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05e4722c697a58a99d5d06a08c30821d7c082a4632198de1eaa5a6c22ef42373" +dependencies = [ + "fixed-hash 0.7.0", + "impl-codec 0.5.1", + "impl-serde 0.3.2", + "uint", +] + +[[package]] +name = "primitive-types" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +dependencies = [ + "fixed-hash 0.8.0", + "impl-codec 0.6.0", + "impl-rlp", + "impl-serde 0.4.0", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +dependencies = [ + "thiserror", + "toml 0.5.11", +] + +[[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 1.0.67", + "quote 1.0.33", + "syn 1.0.109", + "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 1.0.67", + "quote 1.0.33", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid 0.1.0", +] + +[[package]] +name = "proc-macro2" +version = "1.0.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot 0.12.1", + "protobuf", + "thiserror", +] + +[[package]] +name = "prometheus-closure-metric" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "prometheus", + "protobuf", + "workspace-hack", +] + +[[package]] +name = "prometheus-http-query" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7970fd6e91b5cb87e9a093657572a896d133879ced7752d2c7635beae29eaba0" +dependencies = [ + "reqwest", + "serde", + "serde_json", + "time 0.3.28", + "url", +] + +[[package]] +name = "proptest" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" +dependencies = [ + "bit-set", + "bitflags 1.3.2", + "byteorder", + "lazy_static", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_xorshift", + "regex-syntax 0.6.29", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "proptest-derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90b46295382dc76166cb7cf2bb4a97952464e4b7ed5a43e6cd34e1fec3349ddc" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + +[[package]] +name = "prost" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444879275cb4fd84958b1a1d5420d15e6fcf7c235fe47f053c9c2a80aceb6001" +dependencies = [ + "bytes", + "prost-derive 0.9.0", +] + +[[package]] +name = "prost" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +dependencies = [ + "bytes", + "prost-derive 0.11.9", +] + +[[package]] +name = "prost-build" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" +dependencies = [ + "bytes", + "heck 0.4.1", + "itertools 0.10.5", + "lazy_static", + "log", + "multimap", + "petgraph 0.6.4", + "prettyplease 0.1.25", + "prost 0.11.9", + "prost-types", + "regex", + "syn 1.0.109", + "tempfile", + "which", +] + +[[package]] +name = "prost-derive" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cc1a3263e07e0bf68e96268f37665207b49560d98739662cdfaae215c720fe" +dependencies = [ + "anyhow", + "itertools 0.10.5", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "prost-derive" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +dependencies = [ + "anyhow", + "itertools 0.10.5", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "prost-types" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +dependencies = [ + "prost 0.11.9", +] + +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" +dependencies = [ + "bytes", +] + +[[package]] +name = "protobuf-src" +version = "1.1.0+21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7ac8852baeb3cc6fb83b93646fb93c0ffe5d14bf138c945ceb4b9948ee0e3c1" +dependencies = [ + "autotools", +] + +[[package]] +name = "quanta" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab" +dependencies = [ + "crossbeam-utils", + "libc", + "mach2", + "once_cell", + "raw-cpuid", + "wasi 0.11.0+wasi-snapshot-preview1", + "web-sys", + "winapi", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quinn" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75" +dependencies = [ + "bytes", + "futures-io", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls 0.21.7", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "quinn-proto" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13f81c9a9d574310b8351f8666f5a93ac3b0069c45c28ad52c10291389a7cf9" +dependencies = [ + "bytes", + "rand 0.8.5", + "ring", + "rustc-hash", + "rustls 0.21.7", + "slab", + "thiserror", + "tinyvec", + "tracing", +] + +[[package]] +name = "quinn-udp" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" +dependencies = [ + "bytes", + "libc", + "socket2 0.5.4", + "tracing", + "windows-sys 0.48.0", +] + +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2 0.4.30", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2 1.0.67", +] + +[[package]] +name = "r2d2" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93" +dependencies = [ + "log", + "parking_lot 0.12.1", + "scheduled-thread-pool", +] + +[[package]] +name = "radium" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[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 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.10", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "random-string" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4e63111ec5292d8af9c220f06fe3bb87991cc78b6f1f7e291d1ae6b8a60817" +dependencies = [ + "fastrand 1.9.0", +] + +[[package]] +name = "raw-cpuid" +version = "10.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "rcgen" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" +dependencies = [ + "pem", + "ring", + "time 0.3.28", + "yasna", +] + +[[package]] +name = "read-write-set" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "move-binary-format", + "move-bytecode-utils", + "move-core-types", + "move-model", + "move-read-write-set-types", + "move-stackless-bytecode", + "read-write-set-dynamic", +] + +[[package]] +name = "read-write-set-dynamic" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "move-binary-format", + "move-bytecode-utils", + "move-core-types", + "move-read-write-set-types", +] + +[[package]] +name = "readonly" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8f439da1766942fe069954da6058b2e6c1760eb878bae76f5be9fc29f56f574" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "real_tokio" +version = "1.28.1" +source = "git+https://github.com/mystenmark/tokio-madsim-fork.git?rev=e4693500118d5e79ce098ee6dfc2c48f3ef19e45#e4693500118d5e79ce098ee6dfc2c48f3ef19e45" +dependencies = [ + "autocfg", + "bytes", + "libc", + "mio 0.8.8", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.4.9", + "tokio-macros 2.1.0 (git+https://github.com/mystenmark/tokio-madsim-fork.git?rev=e4693500118d5e79ce098ee6dfc2c48f3ef19e45)", + "windows-sys 0.48.0", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.10", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "ref-cast" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acde58d073e9c79da00f2b5b84eed919c8326832648a5b109b3fce1bb1175280" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "regex" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +dependencies = [ + "aho-corasick 1.1.1", + "memchr", + "regex-automata 0.3.8", + "regex-syntax 0.7.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +dependencies = [ + "aho-corasick 1.1.1", + "memchr", + "regex-syntax 0.7.5", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + +[[package]] +name = "report" +version = "0.1.0" +dependencies = [ + "error-stack", + "eyre", + "itertools 0.11.0", + "thiserror", + "valuable", +] + +[[package]] +name = "reqwest" +version = "0.11.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +dependencies = [ + "base64 0.21.4", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls 0.24.1", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.7", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.25.2", + "winreg 0.50.0", +] + +[[package]] +name = "retain_mut" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c31b5c4033f8fdde8700e4657be2c497e7288f01515be52168c631e2e4d4086" + +[[package]] +name = "rfc6979" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" +dependencies = [ + "crypto-bigint 0.4.9", + "hmac 0.12.1", + "zeroize", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi", +] + +[[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 = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "roaring" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6106b5cf8587f5834158895e9715a3c6c9716c8aefab57f1f7680917191c7873" +dependencies = [ + "bytemuck", + "byteorder", + "retain_mut", +] + +[[package]] +name = "rocksdb" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb6f170a4041d50a0ce04b0d2e14916d6ca863ea2e422689a5b694395d299ffe" +dependencies = [ + "libc", + "librocksdb-sys", +] + +[[package]] +name = "ron" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a" +dependencies = [ + "base64 0.13.1", + "bitflags 1.3.2", + "serde", +] + +[[package]] +name = "ron" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +dependencies = [ + "base64 0.21.4", + "bitflags 2.4.0", + "serde", + "serde_derive", +] + +[[package]] +name = "rsa" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55a77d189da1fee555ad95b7e50e7457d91c0e089ec68ca69ad2989413bbdab4" +dependencies = [ + "byteorder", + "digest 0.10.7", + "num-bigint-dig", + "num-integer", + "num-iter", + "num-traits", + "pkcs1", + "pkcs8 0.9.0", + "rand_core 0.6.4", + "sha2 0.10.7", + "signature 2.1.0", + "subtle", + "zeroize", +] + +[[package]] +name = "rstest" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b07f2d176c472198ec1e6551dc7da28f1c089652f66a7b722676c2238ebc0edf" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros", + "rustc_version", +] + +[[package]] +name = "rstest_macros" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7229b505ae0706e64f37ffc54a9c163e11022a6636d58fe1f3f52018257ff9f7" +dependencies = [ + "cfg-if", + "proc-macro2 1.0.67", + "quote 1.0.33", + "rustc_version", + "syn 1.0.109", + "unicode-ident", +] + +[[package]] +name = "rusoto_core" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db30db44ea73551326269adcf7a2169428a054f14faf9e1768f2163494f2fa2" +dependencies = [ + "async-trait", + "base64 0.13.1", + "bytes", + "crc32fast", + "futures", + "http", + "hyper", + "hyper-rustls 0.23.2", + "lazy_static", + "log", + "rusoto_credential", + "rusoto_signature", + "rustc_version", + "serde", + "serde_json", + "tokio", + "xml-rs", +] + +[[package]] +name = "rusoto_credential" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee0a6c13db5aad6047b6a44ef023dbbc21a056b6dab5be3b79ce4283d5c02d05" +dependencies = [ + "async-trait", + "chrono", + "dirs-next", + "futures", + "hyper", + "serde", + "serde_json", + "shlex", + "tokio", + "zeroize", +] + +[[package]] +name = "rusoto_kms" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1fc19cfcfd9f6b2f96e36d5b0dddda9004d2cbfc2d17543e3b9f10cc38fce8" +dependencies = [ + "async-trait", + "bytes", + "futures", + "rusoto_core", + "serde", + "serde_json", +] + +[[package]] +name = "rusoto_signature" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ae95491c8b4847931e291b151127eccd6ff8ca13f33603eb3d0035ecb05272" +dependencies = [ + "base64 0.13.1", + "bytes", + "chrono", + "digest 0.9.0", + "futures", + "hex", + "hmac 0.11.0", + "http", + "hyper", + "log", + "md-5 0.9.1", + "percent-encoding", + "pin-project-lite", + "rusoto_credential", + "rustc_version", + "serde", + "sha2 0.9.9", + "tokio", +] + +[[package]] +name = "rust-ini" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df" +dependencies = [ + "cfg-if", + "ordered-multimap", +] + +[[package]] +name = "rust_decimal" +version = "1.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" +dependencies = [ + "arrayvec 0.7.4", + "num-traits", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[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 1.0.18", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "rustix" +version = "0.36.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c37f1bd5ef1b5422177b7646cba67430579cfe2ace80f284fee876bca52ad941" +dependencies = [ + "bitflags 1.3.2", + "errno 0.3.3", + "io-lifetimes", + "libc", + "linux-raw-sys 0.1.4", + "windows-sys 0.45.0", +] + +[[package]] +name = "rustix" +version = "0.37.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +dependencies = [ + "bitflags 1.3.2", + "errno 0.3.3", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "747c788e9ce8e92b12cd485c49ddf90723550b654b32508f979b71a7b1ecda4f" +dependencies = [ + "bitflags 2.4.0", + "errno 0.3.3", + "libc", + "linux-raw-sys 0.4.7", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustls" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +dependencies = [ + "base64 0.13.1", + "log", + "ring", + "sct 0.6.1", + "webpki 0.21.4", +] + +[[package]] +name = "rustls" +version = "0.20.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" +dependencies = [ + "log", + "ring", + "sct 0.7.0", + "webpki 0.22.1", +] + +[[package]] +name = "rustls" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +dependencies = [ + "log", + "ring", + "rustls-webpki 0.101.5", + "sct 0.7.0", +] + +[[package]] +name = "rustls-native-certs" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" +dependencies = [ + "openssl-probe", + "rustls 0.19.1", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +dependencies = [ + "base64 0.21.4", +] + +[[package]] +name = "rustls-webpki" +version = "0.100.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6a5fc258f1c1276dfe3016516945546e2d5383911efc0fc4f1cdc5df3a4ae3" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45a27e3b59326c16e23d30aeb7a36a24cc0d29e71d68ff611cdfb4a01d013bed" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error 1.2.3", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "rustyline" +version = "9.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db7826789c0e25614b03e5a54a0717a86f9ff6e6e5247f92b369472869320039" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "clipboard-win", + "dirs-next", + "fd-lock", + "libc", + "log", + "memchr", + "nix 0.23.2", + "radix_trie", + "scopeguard", + "smallvec", + "unicode-segmentation", + "unicode-width", + "utf8parse", + "winapi", +] + +[[package]] +name = "rustyline-derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "107c3d5d7f370ac09efa62a78375f94d94b8a33c61d8c278b96683fb4dbf2d8d" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-info" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0a159d0c45c12b20c5a844feb1fe4bea86e28f17b92a5f0c42193634d3782" +dependencies = [ + "cfg-if", + "derive_more", + "parity-scale-codec 3.6.5", + "scale-info-derive", +] + +[[package]] +name = "scale-info-derive" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "912e55f6d20e0e80d63733872b40e1227c0bce1e1ab81ba67d696339bfd7fd29" +dependencies = [ + "proc-macro-crate", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "scheduled-thread-pool" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19" +dependencies = [ + "parking_lot 0.12.1", +] + +[[package]] +name = "schemars" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" +dependencies = [ + "dyn-clone", + "either", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "serde_derive_internals", + "syn 1.0.109", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac 0.12.1", + "pbkdf2 0.11.0", + "salsa20", + "sha2 0.10.7", +] + +[[package]] +name = "sct" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sec1" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +dependencies = [ + "base16ct 0.1.1", + "der 0.6.1", + "generic-array", + "subtle", + "zeroize", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct 0.2.0", + "der 0.7.8", + "generic-array", + "pkcs8 0.10.2", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "bitcoin_hashes", + "rand 0.8.5", + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +dependencies = [ + "cc", +] + +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-json-wasm" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16a62a1fad1e1828b24acac8f2b468971dade7b8c3c2e672bcadefefb1f8c137" +dependencies = [ + "serde", +] + +[[package]] +name = "serde-name" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b5b14ebbcc4e4f2b3642fa99c388649da58d1dc3308c7d109f39f565d1710f0" +dependencies = [ + "serde", + "thiserror", +] + +[[package]] +name = "serde-reflection" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f05a5f801ac62a51a49d378fdb3884480041b99aced450b28990673e8ff99895" +dependencies = [ + "once_cell", + "serde", + "thiserror", +] + +[[package]] +name = "serde_bytes" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab33ec92f677585af6d88c65593ae2375adde54efdbf16d597f2cbc7a6d368ff" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "serde_derive_internals" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "serde_json" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "serde_spanned" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_test" +version = "1.0.176" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a2f49ace1498612d14f7e0b8245519584db8299541dfe31a06374a828d620ab" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" +dependencies = [ + "base64 0.13.1", + "chrono", + "hex", + "indexmap 1.9.3", + "serde", + "serde_json", + "serde_with_macros 2.3.3", + "time 0.3.28", +] + +[[package]] +name = "serde_with" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237" +dependencies = [ + "base64 0.21.4", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.0.0", + "serde", + "serde_json", + "serde_with_macros 3.3.0", + "time 0.3.28", +] + +[[package]] +name = "serde_with_macros" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" +dependencies = [ + "darling 0.20.3", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "serde_with_macros" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c" +dependencies = [ + "darling 0.20.3", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "serde_yaml" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" +dependencies = [ + "indexmap 1.9.3", + "ryu", + "serde", + "yaml-rust", +] + +[[package]] +name = "serde_yaml" +version = "0.9.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "service-registry" +version = "0.1.0" +dependencies = [ + "axelar-wasm-std", + "axelar-wasm-std-derive", + "cosmwasm-schema", + "cosmwasm-std", + "cosmwasm-storage", + "cw-multi-test", + "cw-storage-plus 0.15.1", + "cw2 0.15.1", + "error-stack", + "report", + "schemars", + "serde", + "thiserror", +] + +[[package]] +name = "sha-1" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha-1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[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.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" +dependencies = [ + "block-buffer 0.9.0", + "digest 0.9.0", + "keccak", + "opaque-debug", +] + +[[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 = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shared-crypto" +version = "0.0.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "bcs", + "eyre", + "fastcrypto", + "serde", + "serde_repr", + "workspace-hack", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "shellexpand" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da03fa3b94cc19e3ebfc88c4229c49d8f08cdbd1228870a45f0ffdf84988e14b" +dependencies = [ + "dirs 5.0.1", +] + +[[package]] +name = "shlex" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +dependencies = [ + "libc", + "mio 0.7.14", + "mio 0.8.8", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "signature" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "similar" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror", + "time 0.3.28", +] + +[[package]] +name = "simplelog" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bc0ffd69814a9b251d43afcabf96dad1b29f5028378056257be9e3fecc9f720" +dependencies = [ + "chrono", + "log", + "termcolor", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "sized-chunks" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" +dependencies = [ + "bitmaps", + "typenum", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slip10_ed25519" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be0ff28bf14f9610a342169084e87a4f435ad798ec528dc7579a3678fa9dc9a" +dependencies = [ + "hmac-sha512", +] + +[[package]] +name = "slug" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3bc762e6a4b6c6fcaade73e77f9ebc6991b676f88bb2358bddb56560f073373" +dependencies = [ + "deunicode", +] + +[[package]] +name = "smallvec" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" + +[[package]] +name = "snap" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831" + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "soketto" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" +dependencies = [ + "base64 0.13.1", + "bytes", + "futures", + "http", + "httparse", + "log", + "rand 0.8.5", + "sha-1 0.9.8", +] + +[[package]] +name = "solang-parser" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cb9fa2fa2fa6837be8a2495486ff92e3ffe68a99b6eeba288e139efdd842457" +dependencies = [ + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror", + "unicode-xid 0.2.4", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +dependencies = [ + "base64ct", + "der 0.6.1", +] + +[[package]] +name = "spki" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +dependencies = [ + "base64ct", + "der 0.7.8", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "str-buf" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot 0.12.1", + "phf_shared 0.10.0", + "precomputed-hash", +] + +[[package]] +name = "strip-ansi-escapes" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "011cbb39cf7c1f62871aea3cc46e5817b0937b49e9447370c93cacbe93a766d8" +dependencies = [ + "vte", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros 0.24.3", +] + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros 0.25.2", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2 1.0.67", + "quote 1.0.33", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059" +dependencies = [ + "heck 0.4.1", + "proc-macro2 1.0.67", + "quote 1.0.33", + "rustversion", + "syn 2.0.37", +] + +[[package]] +name = "subprocess" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2e86926081dda636c546d8c5e641661049d7562a68f5488be4a1f7f66f6086" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[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 = "sui-adapter-latest" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "leb128", + "move-binary-format", + "move-bytecode-utils", + "move-bytecode-verifier", + "move-core-types", + "move-vm-config", + "move-vm-profiler", + "move-vm-runtime", + "move-vm-types", + "mysten-metrics", + "once_cell", + "parking_lot 0.12.1", + "serde", + "sui-macros", + "sui-move-natives-latest", + "sui-protocol-config", + "sui-types", + "sui-verifier-latest", + "tracing", + "workspace-hack", +] + +[[package]] +name = "sui-enum-compat-util" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "serde_yaml 0.8.26", + "workspace-hack", +] + +[[package]] +name = "sui-framework" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "move-binary-format", + "move-core-types", + "move-package", + "once_cell", + "serde", + "sui-move-build", + "sui-types", + "tracing", + "workspace-hack", +] + +[[package]] +name = "sui-json" +version = "0.0.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "fastcrypto", + "move-binary-format", + "move-bytecode-utils", + "move-core-types", + "once_cell", + "schemars", + "serde", + "serde_json", + "sui-framework", + "sui-protocol-config", + "sui-types", + "workspace-hack", +] + +[[package]] +name = "sui-json-rpc-types" +version = "0.0.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "bcs", + "colored", + "enum_dispatch", + "fastcrypto", + "itertools 0.10.5", + "move-binary-format", + "move-bytecode-utils", + "move-core-types", + "mysten-metrics", + "schemars", + "serde", + "serde_json", + "serde_with 2.3.3", + "sui-enum-compat-util", + "sui-json", + "sui-macros", + "sui-protocol-config", + "sui-types", + "tracing", + "workspace-hack", +] + +[[package]] +name = "sui-macros" +version = "0.7.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "futures", + "once_cell", + "sui-proc-macros", + "tracing", + "workspace-hack", +] + +[[package]] +name = "sui-move-build" +version = "0.0.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anyhow", + "fastcrypto", + "move-binary-format", + "move-bytecode-utils", + "move-bytecode-verifier", + "move-command-line-common", + "move-compiler", + "move-core-types", + "move-ir-types", + "move-package", + "move-symbol-pool", + "serde-reflection", + "sui-adapter-latest", + "sui-protocol-config", + "sui-types", + "sui-verifier-latest", + "tempfile", + "workspace-hack", +] + +[[package]] +name = "sui-move-natives-latest" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "bcs", + "better_any", + "fastcrypto", + "fastcrypto-zkp", + "linked-hash-map", + "move-binary-format", + "move-core-types", + "move-stdlib", + "move-vm-runtime", + "move-vm-types", + "smallvec", + "sui-protocol-config", + "sui-types", + "workspace-hack", +] + +[[package]] +name = "sui-proc-macros" +version = "0.7.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "msim-macros", + "proc-macro2 1.0.67", + "quote 1.0.33", + "sui-enum-compat-util", + "syn 2.0.37", + "workspace-hack", +] + +[[package]] +name = "sui-protocol-config" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "insta", + "schemars", + "serde", + "serde_with 2.3.3", + "sui-protocol-config-macros", + "tracing", + "workspace-hack", +] + +[[package]] +name = "sui-protocol-config-macros" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", + "workspace-hack", +] + +[[package]] +name = "sui-types" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "anemo", + "anyhow", + "bcs", + "bincode", + "byteorder", + "derivative", + "derive_more", + "enum_dispatch", + "eyre", + "fastcrypto", + "fastcrypto-zkp", + "im", + "indexmap 1.9.3", + "itertools 0.10.5", + "move-binary-format", + "move-bytecode-utils", + "move-command-line-common", + "move-core-types", + "move-disassembler", + "move-ir-types", + "move-vm-profiler", + "move-vm-test-utils", + "move-vm-types", + "mysten-metrics", + "mysten-network", + "narwhal-config", + "narwhal-crypto", + "once_cell", + "parking_lot 0.12.1", + "prometheus", + "proptest", + "proptest-derive", + "rand 0.8.5", + "roaring", + "schemars", + "serde", + "serde-name", + "serde_json", + "serde_with 2.3.3", + "shared-crypto", + "signature 1.6.4", + "static_assertions", + "strum 0.24.1", + "strum_macros 0.24.3", + "sui-enum-compat-util", + "sui-macros", + "sui-protocol-config", + "tap", + "thiserror", + "tonic 0.8.3", + "tracing", + "typed-store", + "workspace-hack", +] + +[[package]] +name = "sui-verifier-latest" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "move-abstract-stack", + "move-binary-format", + "move-bytecode-utils", + "move-bytecode-verifier", + "move-core-types", + "move-vm-config", + "sui-protocol-config", + "sui-types", + "workspace-hack", +] + +[[package]] +name = "svm-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597e3a746727984cb7ea2487b6a40726cad0dbe86628e7d429aa6b8c4c153db4" +dependencies = [ + "dirs 5.0.1", + "fs2", + "hex", + "once_cell", + "reqwest", + "semver 1.0.18", + "serde", + "serde_json", + "sha2 0.10.7", + "thiserror", + "url", + "zip", +] + +[[package]] +name = "symbolic-common" +version = "10.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b55cdc318ede251d0957f07afe5fed912119b8c1bc5a7804151826db999e737" +dependencies = [ + "debugid", + "memmap2", + "stable_deref_trait", + "uuid 1.4.1", +] + +[[package]] +name = "symbolic-demangle" +version = "10.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79be897be8a483a81fff6a3a4e195b4ac838ef73ca42d348b3f722da9902e489" +dependencies = [ + "cpp_demangle", + "rustc-demangle", + "symbolic-common", +] + +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", + "unicode-xid 0.2.4", +] + +[[package]] +name = "sysinfo" +version = "0.27.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a902e9050fca0a5d6877550b769abd2bd1ce8c04634b941dbe2809735e1a1e33" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi 0.4.1", + "once_cell", + "rayon", + "winapi", +] + +[[package]] +name = "tabled" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce69a5028cd9576063ec1f48edb2c75339fd835e6094ef3e05b3a079bf594a6" +dependencies = [ + "papergrid", + "tabled_derive", + "unicode-width", +] + +[[package]] +name = "tabled_derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99f688a08b54f4f02f0a3c382aefdb7884d3d69609f785bd253dc033243e3fe4" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "tabular" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9a2882c514780a1973df90de9d68adcd8871bacc9a6331c3f28e6d2ff91a3d1" +dependencies = [ + "strip-ansi-escapes", + "unicode-width", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "target-lexicon" +version = "0.12.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" + +[[package]] +name = "target-spec" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf4306559bd50cb358e7af5692694d6f6fad95cf2c0bea2571dd419f5298e12" +dependencies = [ + "cfg-expr 0.15.5", + "guppy-workspace-hack", + "serde", + "target-lexicon", +] + +[[package]] +name = "tempfile" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +dependencies = [ + "cfg-if", + "fastrand 2.0.0", + "redox_syscall 0.3.5", + "rustix 0.38.14", + "windows-sys 0.48.0", +] + +[[package]] +name = "tendermint" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f0a7d05cf78524782337f8edd55cbc578d159a16ad4affe2135c92f7dbac7f0" +dependencies = [ + "bytes", + "digest 0.10.7", + "ed25519 2.2.2", + "ed25519-consensus", + "flex-error", + "futures", + "k256 0.13.1", + "num-traits", + "once_cell", + "prost 0.11.9", + "prost-types", + "ripemd", + "serde", + "serde_bytes", + "serde_json", + "serde_repr", + "sha2 0.10.7", + "signature 2.1.0", + "subtle", + "subtle-encoding", + "tendermint-proto 0.32.2", + "time 0.3.28", + "zeroize", +] + +[[package]] +name = "tendermint" +version = "0.33.0" +source = "git+https://github.com/axelarnetwork/tendermint-rs.git?branch=v0.33.x#e97033e20e660a7e707ea86db174ec047bbba50d" +dependencies = [ + "bytes", + "digest 0.10.7", + "ed25519 2.2.2", + "ed25519-consensus", + "flex-error", + "futures", + "num-traits", + "once_cell", + "prost 0.11.9", + "prost-types", + "serde", + "serde_bytes", + "serde_json", + "serde_repr", + "sha2 0.10.7", + "signature 2.1.0", + "subtle", + "subtle-encoding", + "tendermint-proto 0.33.0", + "time 0.3.28", + "zeroize", +] + +[[package]] +name = "tendermint-config" +version = "0.33.0" +source = "git+https://github.com/axelarnetwork/tendermint-rs.git?branch=v0.33.x#e97033e20e660a7e707ea86db174ec047bbba50d" +dependencies = [ + "flex-error", + "serde", + "serde_json", + "tendermint 0.33.0", + "toml 0.5.11", + "url", +] + +[[package]] +name = "tendermint-proto" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5895470f28c530f8ae8c4071bf8190304ce00bd131d25e81730453124a3375c" +dependencies = [ + "bytes", + "flex-error", + "num-derive", + "num-traits", + "prost 0.11.9", + "prost-types", + "serde", + "serde_bytes", + "subtle-encoding", + "time 0.3.28", +] + +[[package]] +name = "tendermint-proto" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cec054567d16d85e8c3f6a3139963d1a66d9d3051ed545d31562550e9bcc3d" +dependencies = [ + "bytes", + "flex-error", + "num-derive", + "num-traits", + "prost 0.11.9", + "prost-types", + "serde", + "serde_bytes", + "subtle-encoding", + "time 0.3.28", +] + +[[package]] +name = "tendermint-proto" +version = "0.33.0" +source = "git+https://github.com/axelarnetwork/tendermint-rs.git?branch=v0.33.x#e97033e20e660a7e707ea86db174ec047bbba50d" +dependencies = [ + "bytes", + "flex-error", + "num-derive", + "num-traits", + "prost 0.11.9", + "prost-types", + "serde", + "serde_bytes", + "subtle-encoding", + "time 0.3.28", +] + +[[package]] +name = "tendermint-rpc" +version = "0.33.0" +source = "git+https://github.com/axelarnetwork/tendermint-rs.git?branch=v0.33.x#e97033e20e660a7e707ea86db174ec047bbba50d" +dependencies = [ + "async-trait", + "bytes", + "flex-error", + "futures", + "getrandom 0.2.10", + "http", + "hyper", + "hyper-proxy", + "hyper-rustls 0.22.1", + "peg", + "pin-project", + "semver 1.0.18", + "serde", + "serde_bytes", + "serde_json", + "subtle", + "subtle-encoding", + "tendermint 0.33.0", + "tendermint-config", + "tendermint-proto 0.33.0", + "thiserror", + "time 0.3.28", + "tokio", + "tracing", + "url", + "uuid 0.8.2", + "walkdir", +] + +[[package]] +name = "tera" +version = "1.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "970dff17c11e884a4a09bc76e3a17ef71e01bb13447a11e85226e254fe6d10b8" +dependencies = [ + "chrono", + "chrono-tz 0.8.3", + "globwalk", + "humansize 2.1.3", + "lazy_static", + "percent-encoding", + "pest", + "pest_derive", + "rand 0.8.5", + "regex", + "serde", + "serde_json", + "slug", + "unic-segment", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "terminal_size" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" +dependencies = [ + "rustix 0.37.23", + "windows-sys 0.48.0", +] + +[[package]] +name = "terminal_size" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" +dependencies = [ + "rustix 0.38.14", + "windows-sys 0.48.0", +] + +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + +[[package]] +name = "test-fuzz" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "857e884d611b1f26e63f00559975d348491e66b1271a8144a9806c9bd4a791cf" +dependencies = [ + "serde", + "test-fuzz-internal", + "test-fuzz-macro", + "test-fuzz-runtime", +] + +[[package]] +name = "test-fuzz-internal" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48db3bbc562408b2111f3a0c96ec416ffa3ab66f8a6ab42579b608b9f74744e1" +dependencies = [ + "cargo_metadata 0.15.4", + "proc-macro2 1.0.67", + "quote 1.0.33", + "serde", + "strum_macros 0.24.3", +] + +[[package]] +name = "test-fuzz-macro" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17cd05c077c7b9c5d0045c539f9c5e911187bf65cd1b407d28239efc7b54880" +dependencies = [ + "darling 0.20.3", + "if_chain", + "itertools 0.10.5", + "lazy_static", + "proc-macro2 1.0.67", + "quote 1.0.33", + "subprocess", + "syn 2.0.37", + "test-fuzz-internal", + "toolchain_find 0.3.0", +] + +[[package]] +name = "test-fuzz-runtime" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d68728ca22d1a96a71645fd2327e37821b8979a7e75e44ad24a72e8051513d" +dependencies = [ + "bincode", + "hex", + "num-traits", + "serde", + "sha-1 0.10.1", + "test-fuzz-internal", +] + +[[package]] +name = "thiserror" +version = "1.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "threadpool" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" +dependencies = [ + "num_cpus", +] + +[[package]] +name = "time" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f6bb557fd245c28e6411aa56b6403c689ad95061f50e4be16c274e70a17e48" +dependencies = [ + "deranged", + "itoa", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] +name = "time-macros" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a942f44339478ef67935ab2bbaec2fb0322496cf3cbe84b261e06ac3814c572" +dependencies = [ + "time-core", +] + +[[package]] +name = "tiny-bip39" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" +dependencies = [ + "anyhow", + "hmac 0.12.1", + "once_cell", + "pbkdf2 0.11.0", + "rand 0.8.5", + "rustc-hash", + "sha2 0.10.7", + "thiserror", + "unicode-normalization", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio 0.8.8", + "num_cpus", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.4", + "tokio-macros 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-io-timeout" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" +dependencies = [ + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "git+https://github.com/mystenmark/tokio-madsim-fork.git?rev=e4693500118d5e79ce098ee6dfc2c48f3ef19e45#e4693500118d5e79ce098ee6dfc2c48f3ef19e45" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "tokio-retry" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" +dependencies = [ + "pin-project", + "rand 0.8.5", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" +dependencies = [ + "rustls 0.19.1", + "tokio", + "webpki 0.21.4", +] + +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls 0.20.9", + "tokio", + "webpki 0.22.1", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.7", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util 0.7.9", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54319c93411147bced34cb5609a80e0a8e44c5999c93903a81cd866630ec0bfd" +dependencies = [ + "futures-util", + "log", + "tokio", + "tungstenite 0.18.0", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2dbec703c26b00d74844519606ef15d09a7d6857860f84ad223dec002ddea2" +dependencies = [ + "futures-util", + "log", + "rustls 0.21.7", + "tokio", + "tokio-rustls 0.24.1", + "tungstenite 0.20.0", + "webpki-roots 0.23.1", +] + +[[package]] +name = "tokio-util" +version = "0.7.7" +source = "git+https://github.com/mystenmark/tokio-madsim-fork.git?rev=e4693500118d5e79ce098ee6dfc2c48f3ef19e45#e4693500118d5e79ce098ee6dfc2c48f3ef19e45" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "futures-util", + "hashbrown 0.12.3", + "pin-project-lite", + "real_tokio", + "slab", + "tracing", +] + +[[package]] +name = "tokio-util" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "indexmap 1.9.3", + "serde", +] + +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "indexmap 2.0.0", + "serde", + "serde_spanned", + "toml_datetime 0.6.3", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml_datetime" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5" + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5376256e44f2443f8896ac012507c19a012df0fe8758b55246ae51a2279db51f" +dependencies = [ + "combine", + "indexmap 1.9.3", + "itertools 0.10.5", + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1541ba70885967e662f69d31ab3aeca7b1aaecfcd58679590b893e9239c3646" +dependencies = [ + "combine", + "indexmap 1.9.3", + "itertools 0.10.5", + "toml_datetime 0.5.1", +] + +[[package]] +name = "toml_edit" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a34cc558345efd7e88b9eda9626df2138b80bb46a7606f695e751c892bc7dac6" +dependencies = [ + "indexmap 1.9.3", + "itertools 0.10.5", + "nom8", + "toml_datetime 0.5.1", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.0.0", + "serde", + "serde_spanned", + "toml_datetime 0.6.3", + "winnow 0.5.15", +] + +[[package]] +name = "tonic" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.13.1", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost 0.11.9", + "prost-derive 0.11.9", + "rustls-pemfile", + "tokio", + "tokio-rustls 0.23.4", + "tokio-stream", + "tokio-util 0.7.9", + "tower", + "tower-layer", + "tower-service", + "tracing", + "tracing-futures", +] + +[[package]] +name = "tonic" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" +dependencies = [ + "async-trait", + "axum", + "base64 0.21.4", + "bytes", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-timeout", + "percent-encoding", + "pin-project", + "prost 0.11.9", + "tokio", + "tokio-stream", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-build" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4" +dependencies = [ + "prettyplease 0.1.25", + "proc-macro2 1.0.67", + "prost-build", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "tonic-health" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a88aee666ef3a4d1ee46218bbc8e5f69bcf9cc27bf2e871d6b724d83f56d179f" +dependencies = [ + "async-stream", + "bytes", + "prost 0.11.9", + "tokio", + "tokio-stream", + "tonic 0.8.3", +] + +[[package]] +name = "toolchain_find" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e85654a10e7a07a47c6f19d93818f3f343e22927f2fa280c84f7c8042743413" +dependencies = [ + "home", + "lazy_static", + "regex", + "semver 0.11.0", + "walkdir", +] + +[[package]] +name = "toolchain_find" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa8c746c4e8d786ff304a6a73d7b406420d9a7c7d8292e090979dc85213113ed" +dependencies = [ + "home", + "once_cell", + "regex", + "semver 1.0.18", + "walkdir", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "hdrhistogram", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio", + "tokio-util 0.7.9", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f873044bf02dd1e8239e9c1293ea39dad76dc594ec16185d0a1bf31d8dc8d858" +dependencies = [ + "async-compression", + "base64 0.13.1", + "bitflags 1.3.2", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-range-header", + "httpdate", + "iri-string", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util 0.7.9", + "tower", + "tower-layer", + "tower-service", + "tracing", + "uuid 1.4.1", +] + +[[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.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-appender" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e" +dependencies = [ + "crossbeam-channel", + "time 0.3.28", + "tracing-subscriber 0.3.17", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", + "valuable", + "valuable-serde", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" +dependencies = [ + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "time 0.3.28", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", + "valuable", + "valuable-serde", +] + +[[package]] +name = "treeline" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41" + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "ttl_cache" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4189890526f0168710b6ee65ceaedf1460c48a14318ceec933cb26baa492096a" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "tui" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ed0a32c88b039b73f1b6c5acbd0554bfa5b6be94467375fd947c4de3a02271" +dependencies = [ + "bitflags 1.3.2", + "cassowary", + "crossterm 0.22.1", + "unicode-segmentation", + "unicode-width", +] + +[[package]] +name = "tungstenite" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ee6ab729cd4cf0fd55218530c4522ed30b7b6081752839b68fcec8d0960788" +dependencies = [ + "base64 0.13.1", + "byteorder", + "bytes", + "http", + "httparse", + "log", + "rand 0.8.5", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e862a1c4128df0112ab625f55cd5c934bcb4312ba80b39ae4b4835a3fd58e649" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "rustls 0.21.7", + "sha1", + "thiserror", + "url", + "utf-8", +] + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "static_assertions", +] + +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + +[[package]] +name = "typed-store" +version = "0.4.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "async-trait", + "bcs", + "bincode", + "collectable", + "eyre", + "fdlimit", + "hdrhistogram", + "itertools 0.10.5", + "msim", + "num_cpus", + "once_cell", + "ouroboros", + "prometheus", + "rand 0.8.5", + "rocksdb", + "serde", + "sui-macros", + "tap", + "thiserror", + "tokio", + "tracing", + "workspace-hack", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[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 = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "uncased" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b9bc53168a4be7402ab86c3aad243a84dd7381d09be0eddc81280c1da95ca68" +dependencies = [ + "version_check", +] + +[[package]] +name = "unescape" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccb97dac3243214f8d8507998906ca3e2e0b900bf9bf4870477f125b82e68f6e" + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-segment" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ed5d26be57f84f176157270c112ef57b86debac9cd21daaabbe56db0f88f23" +dependencies = [ + "unic-ucd-segment", +] + +[[package]] +name = "unic-ucd-segment" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2079c122a62205b421f499da10f3ee0f7697f012f55b675e002483c73ea34700" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "unsafe-libyaml" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" + +[[package]] +name = "unsigned-varint" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "unzip-n" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e7e85a0596447f0f2ac090e16bc4c516c6fe91771fb0c0ccf7fa3dae896b9c" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "url" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +dependencies = [ + "form_urlencoded", + "idna 0.4.0", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.10", + "serde", +] + +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +dependencies = [ + "getrandom 0.2.10", + "rand 0.8.5", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +dependencies = [ + "valuable-derive", +] + +[[package]] +name = "valuable-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d44690c645190cfce32f91a1582281654b2338c6073fa250b0949fd25c55b32" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "valuable-serde" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5285cfff30cdabe26626736a54d989687dd9cab84f51f4048b61d6d0ae8b0907" +dependencies = [ + "serde", + "valuable", +] + +[[package]] +name = "variant_count" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae2faf80ac463422992abf4de234731279c058aaf33171ca70277c98406b124" +dependencies = [ + "quote 1.0.33", + "syn 1.0.109", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "versions" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee97e1d97bd593fb513912a07691b742361b3dd64ad56f2c694ea2dbfe0665d3" +dependencies = [ + "itertools 0.10.5", + "nom", +] + +[[package]] +name = "voting-verifier" +version = "0.1.0" +dependencies = [ + "axelar-wasm-std", + "axelar-wasm-std-derive", + "connection-router", + "cosmwasm-schema", + "cosmwasm-std", + "cosmwasm-storage", + "cw-multi-test", + "cw-storage-plus 1.1.0", + "cw0", + "cw2 0.15.1", + "either", + "error-stack", + "report", + "schemars", + "serde", + "serde_json", + "service-registry", + "sha3 0.10.8", + "thiserror", +] + +[[package]] +name = "vsimd" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" + +[[package]] +name = "vte" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cbce692ab4ca2f1f3047fcf732430249c0e971bfdd2b234cf2c47ad93af5983" +dependencies = [ + "arrayvec 0.5.2", + "utf8parse", + "vte_generate_state_changes", +] + +[[package]] +name = "vte_generate_state_changes" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", +] + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + +[[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.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote 1.0.33", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "web-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0e74f82d49d545ad128049b7e88f6576df2da6b02e9ce565c6f533be576957e" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" +dependencies = [ + "webpki 0.21.4", +] + +[[package]] +name = "webpki-roots" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +dependencies = [ + "webpki 0.22.1", +] + +[[package]] +name = "webpki-roots" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +dependencies = [ + "rustls-webpki 0.100.3", +] + +[[package]] +name = "webpki-roots" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix 0.38.14", +] + +[[package]] +name = "whoami" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "widestring" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "winnow" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "656953b22bcbfb1ec8179d60734981d1904494ecc91f8a3f0ee5c7389bb8eb4b" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "workspace-hack" +version = "0.1.0" +source = "git+https://github.com/mystenlabs/sui?tag=mainnet-v1.9.1#81b6f1ced4cec861539180ef07ae418b7089750b" +dependencies = [ + "Inflector", + "addr2line 0.19.0", + "adler", + "aead", + "aes", + "aes-gcm", + "ahash 0.7.6", + "ahash 0.8.3", + "aho-corasick 0.7.20", + "aho-corasick 1.1.1", + "aliasable", + "alloc-no-stdlib", + "alloc-stdlib", + "anemo", + "anemo-build", + "anemo-cli", + "anemo-tower", + "anes", + "ansi_term", + "anstream", + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "anyhow", + "arbitrary", + "arc-swap", + "ark-bls12-381", + "ark-bn254", + "ark-crypto-primitives", + "ark-ec", + "ark-ff", + "ark-ff-asm", + "ark-ff-macros", + "ark-groth16", + "ark-poly", + "ark-r1cs-std", + "ark-relations", + "ark-secp256r1", + "ark-serialize", + "ark-serialize-derive", + "ark-snark", + "ark-std", + "arrayref", + "arrayvec 0.5.2", + "arrayvec 0.7.4", + "ascii_utils", + "asn1-rs", + "asn1-rs-derive", + "asn1-rs-impl", + "assert_cmd", + "async-compression", + "async-graphql", + "async-graphql-axum", + "async-graphql-derive", + "async-graphql-parser", + "async-graphql-value", + "async-lock", + "async-recursion", + "async-stream", + "async-stream-impl", + "async-trait", + "async_once", + "atomicwrites", + "auto_ops", + "autocfg", + "autotools", + "aws-config", + "aws-credential-types", + "aws-http", + "aws-runtime", + "aws-sdk-dynamodb", + "aws-sdk-s3", + "aws-sdk-sso", + "aws-sdk-sts", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-checksums", + "aws-smithy-client", + "aws-smithy-eventstream", + "aws-smithy-http", + "aws-smithy-http-tower", + "aws-smithy-json", + "aws-smithy-query", + "aws-smithy-runtime", + "aws-smithy-runtime-api", + "aws-smithy-types", + "aws-smithy-xml", + "aws-types", + "axum", + "axum-core", + "axum-extra", + "axum-server", + "backoff", + "backtrace", + "base-x", + "base16ct 0.1.1", + "base16ct 0.2.0", + "base64 0.13.1", + "base64 0.21.4", + "base64-simd", + "base64-url", + "base64ct", + "bcs", + "beef", + "better_any", + "better_typeid_derive", + "bimap", + "bincode", + "bindgen", + "bip32 0.4.0", + "bit-set", + "bit-vec", + "bitcoin-private", + "bitcoin_hashes", + "bitflags 1.3.2", + "bitflags 2.4.0", + "bitmaps", + "bitvec 0.20.4", + "blake2", + "blake3", + "block-buffer 0.10.4", + "block-buffer 0.9.0", + "block-padding 0.2.1", + "block-padding 0.3.3", + "blst", + "brotli", + "brotli-decompressor", + "bs58 0.4.0", + "bstr", + "bulletproofs", + "byte-slice-cast", + "bytecode-interpreter-crypto", + "bytecount", + "bytemuck", + "byteorder", + "bytes", + "bytes-utils", + "cached", + "cached_proc_macro", + "cached_proc_macro_types", + "camino", + "cargo-platform", + "cargo_metadata 0.15.4", + "cassowary", + "cast", + "cbc", + "cc", + "cexpr", + "cfg-expr 0.13.0", + "cfg-if", + "chrono", + "chrono-tz 0.6.3", + "chrono-tz-build 0.0.3", + "ciborium", + "ciborium-io", + "ciborium-ll", + "cipher", + "clang-sys", + "clap", + "clap_builder", + "clap_derive", + "clap_lex", + "clear_on_drop", + "clipboard-win", + "codespan", + "codespan-reporting", + "collectable", + "colorchoice", + "colored", + "colored-diff", + "combine", + "comfy-table", + "console", + "console-api 0.4.0", + "console-subscriber", + "const-oid", + "const-str", + "constant_time_eq 0.2.6", + "convert_case 0.4.0", + "convert_case 0.6.0", + "core-foundation", + "core-foundation-sys", + "core2", + "cpp_demangle", + "cpufeatures", + "crc32c", + "crc32fast", + "criterion", + "criterion-plot", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-utils", + "crossterm 0.21.0", + "crossterm 0.22.1", + "crossterm 0.25.0", + "crossterm_winapi 0.8.0", + "crossterm_winapi 0.9.1", + "crunchy", + "crypto-bigint 0.4.9", + "crypto-bigint 0.5.3", + "crypto-common", + "crypto-mac", + "csv", + "csv-core", + "ctor", + "ctr", + "curve25519-dalek-fiat", + "curve25519-dalek-ng", + "darling 0.14.4", + "darling_core 0.14.4", + "darling_macro 0.14.4", + "dashmap", + "data-encoding", + "data-encoding-macro", + "data-encoding-macro-internal", + "datatest-stable", + "debug-ignore", + "debugid", + "der 0.6.1", + "der 0.7.8", + "der-parser", + "derivative", + "derive-syn-parse", + "derive_arbitrary", + "derive_builder", + "derive_builder_core", + "derive_builder_macro", + "derive_more", + "determinator", + "deunicode", + "diesel", + "diesel-derive-enum", + "diesel_derives", + "diesel_migrations", + "diesel_table_macro_syntax", + "diff", + "difference", + "difflib", + "diffus", + "diffy", + "digest 0.10.7", + "digest 0.9.0", + "dirs 4.0.0", + "dirs-next", + "dirs-sys 0.3.7", + "dirs-sys-next", + "displaydoc", + "dissimilar", + "doc-comment", + "downcast", + "duration-str", + "dyn-clone", + "ecdsa 0.14.8", + "ecdsa 0.16.8", + "ed25519 1.5.3", + "ed25519-consensus", + "ed25519-dalek-fiat", + "either", + "elliptic-curve 0.12.3", + "elliptic-curve 0.13.5", + "encode_unicode 0.3.6", + "encode_unicode 1.0.0", + "encoding_rs", + "endian-type", + "enum-compat-util", + "enum_dispatch", + "errno 0.2.8", + "errno 0.3.3", + "error-code", + "ethnum", + "event-listener", + "expect-test", + "eyre", + "fail", + "fast_chemail", + "fastcrypto", + "fastcrypto-derive", + "fastcrypto-zkp", + "fastrand 1.9.0", + "fastrand 2.0.0", + "fd-lock", + "fdlimit", + "ff 0.12.1", + "ff 0.13.0", + "fiat-crypto", + "findshlibs", + "fixed-hash 0.7.0", + "fixedbitset 0.2.0", + "fixedbitset 0.4.2", + "flate2", + "float-cmp", + "fnv", + "form_urlencoded", + "fragile", + "fs_extra", + "funty 1.1.0", + "futures", + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-lite", + "futures-macro", + "futures-sink", + "futures-task", + "futures-timer", + "futures-util", + "generic-array", + "getrandom 0.1.16", + "getrandom 0.2.10", + "ghash", + "gimli 0.27.3", + "git-version", + "git-version-macro", + "glob", + "globset", + "globwalk", + "governor", + "group 0.12.1", + "group 0.13.0", + "guppy", + "guppy-summaries", + "guppy-workspace-hack", + "h2", + "hakari", + "half", + "handlebars", + "hashbrown 0.12.3", + "hashbrown 0.13.2", + "hdrhistogram", + "headers", + "headers-core", + "heck 0.3.3", + "heck 0.4.1", + "hex", + "hex-literal", + "hkdf", + "hmac 0.11.0", + "hmac 0.12.1", + "hmac-sha512", + "home", + "http", + "http-body", + "http-range-header", + "httparse", + "httpdate", + "humansize 1.1.1", + "humantime", + "hyper", + "hyper-rustls 0.23.2", + "hyper-rustls 0.24.1", + "hyper-timeout", + "iana-time-zone", + "ident_case", + "idna 0.3.0", + "if_chain", + "ignore", + "im", + "impl-codec 0.5.1", + "impl-serde 0.3.2", + "impl-trait-for-tuples", + "include_dir", + "include_dir_macros", + "indenter", + "indexmap 1.9.3", + "indicatif", + "inout", + "inquire", + "insta", + "instant", + "integer-encoding", + "internment", + "io-lifetimes", + "ipnet", + "iri-string", + "is-terminal", + "itertools 0.10.5", + "itoa", + "jemalloc-ctl", + "jemalloc-sys", + "jobserver", + "json_to_table", + "jsonpath_lib", + "jsonrpsee", + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-http-client", + "jsonrpsee-proc-macros", + "jsonrpsee-server", + "jsonrpsee-types", + "jsonrpsee-ws-client", + "k256 0.11.6", + "keccak", + "lazy_static", + "lazycell", + "leb128", + "libc", + "libloading", + "libm", + "librocksdb-sys", + "libtest-mimic", + "libz-sys", + "linked-hash-map", + "linux-raw-sys 0.1.4", + "linux-raw-sys 0.3.8", + "lock_api", + "log", + "lru", + "lz4-sys", + "mach2", + "match_opt", + "matchers", + "matchit 0.5.0", + "matchit 0.7.2", + "md-5 0.10.5", + "md-5 0.9.1", + "memchr", + "memmap2", + "memoffset 0.6.5", + "memoffset 0.7.1", + "merlin", + "migrations_internals", + "migrations_macros", + "mime", + "mime_guess", + "minimal-lexical", + "miniz_oxide 0.6.2", + "mio 0.7.14", + "mio 0.8.8", + "mockall", + "mockall_derive", + "more-asserts", + "move-abigen", + "move-abstract-stack", + "move-binary-format", + "move-borrow-graph", + "move-bytecode-source-map", + "move-bytecode-utils", + "move-bytecode-verifier", + "move-bytecode-verifier-suivm", + "move-bytecode-verifier-v0", + "move-bytecode-viewer", + "move-cli", + "move-command-line-common", + "move-compiler", + "move-core-types", + "move-coverage", + "move-disassembler", + "move-docgen", + "move-errmapgen", + "move-ir-compiler", + "move-ir-to-bytecode", + "move-ir-to-bytecode-syntax", + "move-ir-types", + "move-model", + "move-package", + "move-proc-macros", + "move-prover", + "move-prover-boogie-backend", + "move-read-write-set-types", + "move-resource-viewer", + "move-stackless-bytecode", + "move-stackless-bytecode-interpreter", + "move-stdlib", + "move-stdlib-suivm", + "move-stdlib-v0", + "move-symbol-pool", + "move-transactional-test-runner", + "move-unit-test", + "move-vm-config", + "move-vm-profiler", + "move-vm-runtime", + "move-vm-runtime-suivm", + "move-vm-runtime-v0", + "move-vm-test-utils", + "move-vm-types", + "multer", + "multiaddr", + "multibase", + "multihash", + "multihash-derive", + "multimap", + "named-lock", + "nested", + "newline-converter", + "nexlint", + "nexlint-lints", + "nibble_vec", + "nix 0.23.2", + "nix 0.24.3", + "no-std-compat", + "nom", + "nonzero_ext", + "normalize-line-endings", + "ntapi 0.4.1", + "ntest", + "ntest_test_cases", + "ntest_timeout", + "nu-ansi-term", + "num", + "num-bigint", + "num-bigint-dig", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", + "num_cpus", + "num_enum 0.6.1", + "num_enum_derive 0.6.1", + "number_prefix", + "object 0.30.4", + "oid-registry", + "once_cell", + "oorandom", + "opaque-debug", + "openssl-probe", + "ouroboros", + "ouroboros_macro", + "output_vt100", + "outref", + "overload", + "owo-colors", + "p256", + "papergrid", + "parity-scale-codec 2.3.1", + "parity-scale-codec-derive 2.3.1", + "parking", + "parking_lot 0.11.2", + "parking_lot 0.12.1", + "parking_lot_core 0.8.6", + "parking_lot_core 0.9.8", + "parse-zoneinfo", + "paste", + "pathdiff", + "pbkdf2 0.11.0", + "peeking_take_while", + "pem", + "pem-rfc7468 0.6.0", + "pem-rfc7468 0.7.0", + "percent-encoding", + "pest", + "pest_derive", + "pest_generator", + "pest_meta", + "petgraph 0.5.1", + "petgraph 0.6.4", + "phf", + "phf_codegen", + "phf_generator", + "phf_macros", + "phf_shared 0.11.2", + "pin-project", + "pin-project-internal", + "pin-project-lite", + "pin-utils", + "pkcs1", + "pkcs8 0.10.2", + "pkcs8 0.9.0", + "pkg-config", + "plotters", + "plotters-backend", + "plotters-svg", + "polyval", + "portable-atomic 0.3.20", + "poseidon-ark", + "pprof", + "ppv-lite86", + "pq-sys", + "predicates 2.1.5", + "predicates-core", + "predicates-tree", + "pretty", + "pretty_assertions", + "prettyplease 0.1.25", + "prettyplease 0.2.15", + "prettytable-rs", + "primeorder", + "primitive-types 0.10.1", + "proc-macro-crate", + "proc-macro-error", + "proc-macro-error-attr", + "proc-macro-hack", + "proc-macro2 0.4.30", + "proc-macro2 1.0.67", + "prometheus", + "prometheus-http-query", + "proptest", + "proptest-derive", + "prost 0.11.9", + "prost-build", + "prost-derive 0.11.9", + "prost-types", + "protobuf", + "protobuf-src", + "quanta", + "quick-error 1.2.3", + "quick-error 2.0.1", + "quinn", + "quinn-proto", + "quinn-udp", + "quote 0.6.13", + "quote 1.0.33", + "r2d2", + "radium 0.6.2", + "radix_trie", + "rand 0.7.3", + "rand 0.8.5", + "rand_chacha 0.2.2", + "rand_chacha 0.3.1", + "rand_core 0.5.1", + "rand_core 0.6.4", + "rand_xorshift", + "rand_xoshiro", + "raw-cpuid", + "rayon", + "rayon-core", + "rcgen", + "read-write-set", + "read-write-set-dynamic", + "readonly", + "ref-cast", + "ref-cast-impl", + "regex", + "regex-automata 0.1.10", + "regex-syntax 0.6.29", + "regex-syntax 0.7.5", + "reqwest", + "retain_mut", + "rfc6979 0.3.1", + "rfc6979 0.4.0", + "ring", + "ripemd", + "roaring", + "rocksdb", + "ron 0.8.1", + "rsa", + "rstest", + "rstest_macros", + "rusoto_core", + "rusoto_credential", + "rusoto_kms", + "rusoto_signature", + "rust_decimal", + "rustc-demangle", + "rustc-hash", + "rustc-hex", + "rustc_version", + "rusticata-macros", + "rustix 0.36.15", + "rustix 0.37.23", + "rustls 0.20.9", + "rustls 0.21.7", + "rustls-native-certs 0.6.3", + "rustls-pemfile", + "rustls-webpki 0.101.5", + "rustversion", + "rusty-fork", + "rustyline", + "rustyline-derive", + "ryu", + "same-file", + "schannel", + "scheduled-thread-pool", + "schemars", + "schemars_derive", + "scopeguard", + "sct 0.7.0", + "sec1 0.3.0", + "sec1 0.7.3", + "secp256k1", + "secp256k1-sys", + "security-framework", + "security-framework-sys", + "semver 0.11.0", + "semver 1.0.18", + "semver-parser", + "serde", + "serde-name", + "serde-reflection", + "serde_bytes", + "serde_derive", + "serde_derive_internals", + "serde_json", + "serde_path_to_error", + "serde_repr", + "serde_spanned", + "serde_test", + "serde_urlencoded", + "serde_with 2.3.3", + "serde_with_macros 2.3.3", + "serde_yaml 0.8.26", + "serde_yaml 0.9.25", + "sha-1 0.10.1", + "sha-1 0.9.8", + "sha1", + "sha2 0.10.7", + "sha2 0.9.9", + "sha3 0.10.8", + "sha3 0.9.1", + "sharded-slab", + "shell-words", + "shellexpand", + "shlex", + "signal-hook", + "signal-hook-mio", + "signal-hook-registry", + "signature 1.6.4", + "signature 2.1.0", + "similar", + "simplelog", + "siphasher", + "sized-chunks", + "slab", + "slip10_ed25519", + "slug", + "smallvec", + "snap", + "socket2 0.4.9", + "socket2 0.5.4", + "soketto", + "spin 0.5.2", + "spin 0.9.8", + "spki 0.6.0", + "spki 0.7.2", + "stable_deref_trait", + "static_assertions", + "str-buf", + "strip-ansi-escapes", + "strsim", + "strum 0.24.1", + "strum_macros 0.24.3", + "subprocess", + "subtle", + "subtle-ng", + "symbolic-common", + "symbolic-demangle", + "syn 0.15.44", + "syn 1.0.109", + "syn 2.0.37", + "sync_wrapper", + "synstructure", + "sysinfo", + "tabled", + "tabled_derive", + "tabular", + "tap", + "target-lexicon", + "target-spec", + "tempfile", + "tera", + "term", + "termcolor", + "terminal_size 0.2.6", + "termtree", + "test-fuzz", + "test-fuzz-internal", + "test-fuzz-macro", + "test-fuzz-runtime", + "thiserror", + "thiserror-impl", + "thread_local", + "threadpool", + "time 0.1.45", + "time 0.3.28", + "time-core", + "time-macros", + "tiny-bip39", + "tinytemplate", + "tinyvec", + "tinyvec_macros", + "tokio", + "tokio-io-timeout", + "tokio-macros 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-retry", + "tokio-rustls 0.23.4", + "tokio-rustls 0.24.1", + "tokio-stream", + "tokio-tungstenite 0.18.0", + "tokio-util 0.7.9", + "toml 0.5.11", + "toml 0.7.8", + "toml_datetime 0.5.1", + "toml_datetime 0.6.3", + "toml_edit 0.14.4", + "toml_edit 0.15.0", + "toml_edit 0.19.15", + "tonic 0.8.3", + "tonic-build", + "tonic-health", + "toolchain_find 0.2.0", + "tower", + "tower-http", + "tower-layer", + "tower-service", + "tracing", + "tracing-appender", + "tracing-attributes", + "tracing-core", + "tracing-futures", + "tracing-serde", + "tracing-subscriber 0.2.25", + "tracing-subscriber 0.3.17", + "treeline", + "try-lock", + "ttl_cache", + "tui", + "tungstenite 0.18.0", + "twox-hash", + "typed-arena", + "typenum", + "ucd-trie", + "uint", + "unarray", + "uncased", + "unescape", + "unic-char-property", + "unic-char-range", + "unic-common", + "unic-segment", + "unic-ucd-segment", + "unic-ucd-version", + "unicase", + "unicode-bidi", + "unicode-ident", + "unicode-normalization", + "unicode-segmentation", + "unicode-width", + "unicode-xid 0.1.0", + "unicode-xid 0.2.4", + "universal-hash", + "unsafe-libyaml", + "unsigned-varint", "untrusted", -] - -[[package]] -name = "webpki-roots" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" -dependencies = [ - "webpki", -] - -[[package]] -name = "webpki-roots" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" -dependencies = [ - "rustls-webpki 0.100.2", -] - -[[package]] -name = "webpki-roots" -version = "0.25.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" - -[[package]] -name = "which" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" -dependencies = [ - "either", - "libc", - "once_cell", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" -dependencies = [ + "unzip-n", + "url", + "urlencoding", + "utf-8", + "utf8parse", + "uuid 1.4.1", + "variant_count", + "vcpkg", + "version_check", + "versions", + "vsimd", + "vte", + "vte_generate_state_changes", + "wait-timeout", + "waker-fn", + "walkdir", + "want", + "webpki 0.22.1", + "webpki-roots 0.22.6", + "which", + "whoami", + "widestring", "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "winnow" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys", + "winapi-util", + "windows-sys 0.42.0", + "windows-sys 0.48.0", + "windows-targets 0.48.5", + "windows_x86_64_msvc 0.42.2", + "windows_x86_64_msvc 0.48.5", + "winnow 0.4.11", + "winreg 0.10.1", + "wyz 0.2.0", + "x509-parser", + "xml-rs", + "xmlparser", + "yaml-rust", + "yansi", + "yasna", + "zeroize", + "zeroize_derive", + "zstd 0.12.4", + "zstd-safe 6.0.6", + "zstd-sys", ] [[package]] @@ -5857,6 +14150,12 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wyz" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214" + [[package]] name = "wyz" version = "0.5.1" @@ -5866,6 +14165,36 @@ dependencies = [ "tap", ] +[[package]] +name = "x509-parser" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0ecbeb7b67ce215e40e3cc7f2ff902f94a223acf44995934763467e7b1febc8" +dependencies = [ + "asn1-rs", + "base64 0.13.1", + "data-encoding", + "der-parser", + "lazy_static", + "nom", + "oid-registry", + "rusticata-macros", + "thiserror", + "time 0.3.28", +] + +[[package]] +name = "xml-rs" +version = "0.8.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab77e97b50aee93da431f2cee7cd0f43b4d1da3c408042f2d7d164187774f0a" + +[[package]] +name = "xmlparser" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd" + [[package]] name = "yaml-rust" version = "0.4.5" @@ -5881,6 +14210,15 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "yasna" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" +dependencies = [ + "time 0.3.28", +] + [[package]] name = "zeroize" version = "1.6.0" @@ -5896,9 +14234,9 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.29", + "proc-macro2 1.0.67", + "quote 1.0.33", + "syn 2.0.37", ] [[package]] @@ -5910,15 +14248,15 @@ dependencies = [ "aes", "byteorder", "bzip2", - "constant_time_eq", + "constant_time_eq 0.1.5", "crc32fast", "crossbeam-utils", "flate2", - "hmac", + "hmac 0.12.1", "pbkdf2 0.11.0", "sha1", - "time", - "zstd", + "time 0.3.28", + "zstd 0.11.2+zstd.1.5.2", ] [[package]] @@ -5927,7 +14265,16 @@ version = "0.11.2+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" dependencies = [ - "zstd-safe", + "zstd-safe 5.0.2+zstd.1.5.2", +] + +[[package]] +name = "zstd" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" +dependencies = [ + "zstd-safe 6.0.6", ] [[package]] @@ -5940,6 +14287,16 @@ dependencies = [ "zstd-sys", ] +[[package]] +name = "zstd-safe" +version = "6.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" +dependencies = [ + "libc", + "zstd-sys", +] + [[package]] name = "zstd-sys" version = "2.0.8+zstd.1.5.5" diff --git a/ampd/Cargo.toml b/ampd/Cargo.toml index eca2e6e57..3cfa01d47 100644 --- a/ampd/Cargo.toml +++ b/ampd/Cargo.toml @@ -35,6 +35,8 @@ report = { workspace = true } serde = { version = "1.0.147", features = ["derive"] } serde_json = "1.0.89" serde_with = "3.2.0" +sui-json-rpc-types = { git = "https://github.com/mystenlabs/sui", tag = "mainnet-v1.9.1" } +sui-types = { git = "https://github.com/mystenlabs/sui", tag = "mainnet-v1.9.1" } # Need to switch to our own fork of tendermint and tendermint-rpc due to event attribute value being nullable. # Can switch back once https://github.com/informalsystems/tendermint-rs/issues/1216 is resolved. # The fix for the issue is at https://github.com/axelarnetwork/tendermint-rs/commit/e97033e20e660a7e707ea86db174ec047bbba50d. diff --git a/ampd/src/evm/json_rpc.rs b/ampd/src/evm/json_rpc.rs index 424929083..845c0c824 100644 --- a/ampd/src/evm/json_rpc.rs +++ b/ampd/src/evm/json_rpc.rs @@ -1,12 +1,11 @@ use async_trait::async_trait; -use error_stack::Report; -use ethers::providers::{Http, JsonRpcClient, ProviderError}; +use ethers::providers::{JsonRpcClient, ProviderError}; use ethers::types::{Block, BlockNumber, TransactionReceipt, H256, U64}; use ethers::utils::serialize; use mockall::automock; +use crate::json_rpc::Client; use crate::types::Hash; -use crate::url::Url; type Result = error_stack::Result; @@ -22,59 +21,25 @@ pub trait EthereumClient { pub trait MoonbeamClient: EthereumClient { async fn finalized_block_hash(&self) -> Result; } - -pub struct Client

-where - P: JsonRpcClient, -{ - provider: P, -} - -impl

Client

-where - P: JsonRpcClient, -{ - pub fn new(provider: P) -> Self { - Client { provider } - } -} - -impl Client { - pub fn new_http(url: &Url) -> Result { - Ok(Client::new(Http::new(url))) - } -} - #[async_trait] impl

EthereumClient for Client

where P: JsonRpcClient + Send + Sync + 'static, { async fn finalized_block(&self) -> Result> { - self.provider - .request( - "eth_getBlockByNumber", - [serialize(&BlockNumber::Finalized), serialize(&false)], - ) - .await - .map_err(Into::into) - .map_err(Report::from) + self.request( + "eth_getBlockByNumber", + [serialize(&BlockNumber::Finalized), serialize(&false)], + ) + .await } async fn block_number(&self) -> Result { - self.provider - .request("eth_blockNumber", ()) - .await - .map_err(Into::into) - .map_err(Report::from) + self.request("eth_blockNumber", ()).await } async fn transaction_receipt(&self, hash: H256) -> Result> { - self.provider - .request("eth_getTransactionReceipt", [hash]) - .await - .map_err(Into::into) - .map_err(Report::from) + self.request("eth_getTransactionReceipt", [hash]).await } } @@ -84,10 +49,6 @@ where P: JsonRpcClient + Send + Sync + 'static, { async fn finalized_block_hash(&self) -> Result { - self.provider - .request("chain_getFinalizedHead", ()) - .await - .map_err(Into::into) - .map_err(Report::from) + self.request("chain_getFinalizedHead", ()).await } } diff --git a/ampd/src/json_rpc.rs b/ampd/src/json_rpc.rs new file mode 100644 index 000000000..c537f9f34 --- /dev/null +++ b/ampd/src/json_rpc.rs @@ -0,0 +1,43 @@ +use std::fmt::Debug; + +use error_stack::Report; +use ethers::providers::{Http, JsonRpcClient, ProviderError}; +use serde::{de::DeserializeOwned, Serialize}; + +use crate::url::Url; + +type Result = error_stack::Result; + +pub struct Client

+where + P: JsonRpcClient, +{ + provider: P, +} + +impl

Client

+where + P: JsonRpcClient, +{ + pub fn new(provider: P) -> Self { + Client { provider } + } + + pub async fn request(&self, method: &str, params: T) -> Result + where + T: Debug + Serialize + Send + Sync, + R: DeserializeOwned + Send, + { + self.provider + .request(method, params) + .await + .map_err(Into::into) + .map_err(Report::from) + } +} + +impl Client { + pub fn new_http(url: &Url) -> Result { + Ok(Client::new(Http::new(url))) + } +} diff --git a/ampd/src/lib.rs b/ampd/src/lib.rs index 5a342c514..8730a91ad 100644 --- a/ampd/src/lib.rs +++ b/ampd/src/lib.rs @@ -30,8 +30,10 @@ mod event_processor; mod event_sub; mod evm; mod handlers; +mod json_rpc; mod queue; pub mod state; +mod sui; mod tm_client; mod tofnd; mod types; @@ -185,7 +187,7 @@ where worker.clone(), cosmwasm_contract, chain.name, - evm::json_rpc::Client::new_http(&chain.rpc_url) + json_rpc::Client::new_http(&chain.rpc_url) .change_context(Error::Connection)?, self.broadcaster.client(), ), @@ -199,7 +201,7 @@ where worker.clone(), cosmwasm_contract, chain.name, - evm::json_rpc::Client::new_http(&chain.rpc_url) + json_rpc::Client::new_http(&chain.rpc_url) .change_context(Error::Connection)?, self.broadcaster.client(), ), diff --git a/ampd/src/sui/json_rpc.rs b/ampd/src/sui/json_rpc.rs new file mode 100644 index 000000000..76b4324ef --- /dev/null +++ b/ampd/src/sui/json_rpc.rs @@ -0,0 +1,39 @@ +use async_trait::async_trait; +use ethers::providers::{JsonRpcClient, ProviderError}; +use sui_json_rpc_types::{SuiTransactionBlockResponse, SuiTransactionBlockResponseOptions}; +use sui_types::digests::TransactionDigest; + +use crate::json_rpc::Client; + +type Result = error_stack::Result; + +#[async_trait] +pub trait SuiClient { + async fn transaction_blocks( + &self, + digests: Vec, + ) -> Result>; +} + +#[async_trait] +impl

SuiClient for Client

+where + P: JsonRpcClient + Send + Sync + 'static, +{ + async fn transaction_blocks( + &self, + digests: Vec, + ) -> Result> { + self.request( + "sui_multiGetTransactionBlocks", + ( + digests + .iter() + .map(|d| d.base58_encode()) + .collect::>(), + SuiTransactionBlockResponseOptions::new().with_events(), + ), + ) + .await + } +} diff --git a/ampd/src/sui/mod.rs b/ampd/src/sui/mod.rs new file mode 100644 index 000000000..91c1af578 --- /dev/null +++ b/ampd/src/sui/mod.rs @@ -0,0 +1 @@ +mod json_rpc; From 201c43889038fd0c99e5af618f1434f9aaa9fc32 Mon Sep 17 00:00:00 2001 From: CJ Cobb <46455409+cjcobb23@users.noreply.github.com> Date: Fri, 22 Sep 2023 22:30:00 -0400 Subject: [PATCH 03/11] feat(multisig-prover): bcs transfer operatorship (#120) --- contracts/multisig-prover/src/encoding/bcs.rs | 92 +++++++++++++++++-- contracts/multisig-prover/src/encoding/mod.rs | 6 +- contracts/multisig-prover/src/execute.rs | 5 +- 3 files changed, 88 insertions(+), 15 deletions(-) diff --git a/contracts/multisig-prover/src/encoding/bcs.rs b/contracts/multisig-prover/src/encoding/bcs.rs index 6e28354aa..83eefc13f 100644 --- a/contracts/multisig-prover/src/encoding/bcs.rs +++ b/contracts/multisig-prover/src/encoding/bcs.rs @@ -1,12 +1,13 @@ +use axelar_wasm_std::operators::Operators; use bcs::to_bytes; use cosmwasm_std::{HexBinary, Uint256}; + +use crate::{error::ContractError, state::WorkerSet}; + use itertools::Itertools; use multisig::{key::Signature, msg::Signer}; -use crate::{ - error::ContractError, - types::{CommandBatch, Operator}, -}; +use crate::types::{CommandBatch, Operator}; use super::Data; use sha3::{Digest, Keccak256}; @@ -14,6 +15,34 @@ use sha3::{Digest, Keccak256}; // TODO: all of the public functions in this file should be moved to a trait, // that has an abi and bcs implementation (and possibly others) +pub fn make_operators(worker_set: WorkerSet) -> Operators { + let mut operators: Vec<(HexBinary, Uint256)> = worker_set + .signers + .iter() + .map(|signer| (signer.pub_key.clone().into(), signer.weight)) + .collect(); + operators.sort_by_key(|op| op.0.clone()); + Operators { + weights_by_addresses: operators, + threshold: worker_set.threshold, + } +} + +pub fn transfer_operatorship_params(worker_set: &WorkerSet) -> Result { + let mut operators: Vec<(HexBinary, Uint256)> = worker_set + .signers + .iter() + .map(|s| (s.pub_key.clone().into(), s.weight)) + .collect(); + operators.sort_by_key(|op| op.0.clone()); + let (addresses, weights): (Vec>, Vec<_>) = operators + .into_iter() + .map(|(pub_key, weight)| (pub_key.to_vec(), u256_to_u128(weight))) + .unzip(); + + Ok(to_bytes(&(addresses, weights, u256_to_u128(worker_set.threshold)))?.into()) +} + #[allow(dead_code)] fn encode_proof( quorum: Uint256, @@ -142,11 +171,13 @@ fn u256_to_u64(chain_id: Uint256) -> u64 { #[cfg(test)] mod test { - use std::vec; - + use axelar_wasm_std::operators::Operators; use bcs::from_bytes; use connection_router::msg::Message; use cosmwasm_std::{Addr, HexBinary, Uint256}; + + use std::vec; + use multisig::{ key::{PublicKey, Signature}, msg::Signer, @@ -155,14 +186,61 @@ mod test { use crate::{ encoding::{ bcs::{ - command_params, encode, encode_proof, make_command_id, u256_to_u128, u256_to_u64, + command_params, encode, encode_proof, make_command_id, make_operators, + transfer_operatorship_params, u256_to_u128, u256_to_u64, }, CommandBatchBuilder, Data, }, + test::test_data, types::Command, }; use super::msg_digest; + #[test] + fn test_transfer_operatorship_params() { + let worker_set = test_data::new_worker_set(); + + let res = transfer_operatorship_params(&worker_set); + assert!(res.is_ok()); + + let decoded = from_bytes(&res.unwrap()); + assert!(decoded.is_ok()); + + let (operators, weights, quorum): (Vec>, Vec, u128) = decoded.unwrap(); + + let mut expected: Vec<(Vec, u128)> = worker_set + .signers + .into_iter() + .map(|s| (s.pub_key.as_ref().to_vec(), u256_to_u128(s.weight))) + .collect(); + expected.sort_by_key(|op| op.0.clone()); + let (operators_expected, weights_expected): (Vec>, Vec) = + expected.into_iter().unzip(); + + assert_eq!(operators, operators_expected); + assert_eq!(weights, weights_expected); + assert_eq!(quorum, u256_to_u128(worker_set.threshold)); + } + + #[test] + fn test_make_operators() { + let worker_set = test_data::new_worker_set(); + let mut expected: Vec<(HexBinary, _)> = worker_set + .clone() + .signers + .into_iter() + .map(|s| (s.pub_key.into(), s.weight)) + .collect(); + expected.sort_by_key(|op| op.0.clone()); + + let operators = make_operators(worker_set.clone()); + let expected_operators = Operators { + weights_by_addresses: expected, + threshold: worker_set.threshold, + }; + assert_eq!(operators, expected_operators); + } + #[test] fn test_u256_to_u128() { let val = u128::MAX; diff --git a/contracts/multisig-prover/src/encoding/mod.rs b/contracts/multisig-prover/src/encoding/mod.rs index 14e905ad4..afa131c1a 100644 --- a/contracts/multisig-prover/src/encoding/mod.rs +++ b/contracts/multisig-prover/src/encoding/mod.rs @@ -49,9 +49,7 @@ fn make_transfer_operatorship( ) -> Result { let params = match encoding { Encoder::Abi => abi::transfer_operatorship_params(&worker_set), - Encoder::Bcs => { - todo!() - } + Encoder::Bcs => bcs::transfer_operatorship_params(&worker_set), }?; Ok(Command { ty: CommandType::TransferOperatorship, @@ -152,7 +150,7 @@ fn command_id(message_id: String) -> HexBinary { pub fn make_operators(worker_set: WorkerSet, encoder: Encoder) -> Operators { match encoder { Encoder::Abi => abi::make_operators(worker_set), - Encoder::Bcs => todo!(), + Encoder::Bcs => bcs::make_operators(worker_set), } } diff --git a/contracts/multisig-prover/src/execute.rs b/contracts/multisig-prover/src/execute.rs index 15eaa5243..1259af7ef 100644 --- a/contracts/multisig-prover/src/execute.rs +++ b/contracts/multisig-prover/src/execute.rs @@ -198,10 +198,7 @@ pub fn update_worker_set(deps: DepsMut, env: Env) -> Result Date: Sat, 23 Sep 2023 23:40:13 -0400 Subject: [PATCH 04/11] refactor: move recoverable signature into multisig prover contract (#119) --- Cargo.lock | 4 + ampd/src/handlers/multisig.rs | 83 +------- contracts/multisig-prover/Cargo.toml | 3 + contracts/multisig-prover/src/encoding/abi.rs | 98 +++++++-- contracts/multisig-prover/src/encoding/bcs.rs | 23 ++- contracts/multisig-prover/src/encoding/mod.rs | 3 +- contracts/multisig-prover/src/error.rs | 3 + .../src/test/mocks/multisig.rs | 7 +- .../multisig-prover/src/test/test_data.rs | 9 +- contracts/multisig-prover/src/types.rs | 25 ++- contracts/multisig/Cargo.toml | 1 + contracts/multisig/src/contract.rs | 7 +- contracts/multisig/src/error.rs | 16 +- contracts/multisig/src/events.rs | 5 +- contracts/multisig/src/key.rs | 191 +++++++++++++----- contracts/multisig/src/msg.rs | 3 +- contracts/multisig/src/secp256k1.rs | 11 +- contracts/multisig/src/signing.rs | 7 +- contracts/multisig/src/test/common.rs | 2 +- contracts/multisig/src/types.rs | 6 +- 20 files changed, 324 insertions(+), 183 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 96237f411..0df5c9c3c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7448,6 +7448,7 @@ dependencies = [ "cw2 0.15.1", "error-stack", "getrandom 0.2.10", + "k256 0.13.1", "rand 0.8.5", "report", "schemars", @@ -7473,9 +7474,12 @@ dependencies = [ "cw-utils 1.0.1", "cw2 0.15.1", "either", + "elliptic-curve 0.13.5", "error-stack", "ethabi", + "ethers", "gateway", + "generic-array", "hex", "itertools 0.11.0", "k256 0.13.1", diff --git a/ampd/src/handlers/multisig.rs b/ampd/src/handlers/multisig.rs index f3bea9faa..7ff9d9cd8 100644 --- a/ampd/src/handlers/multisig.rs +++ b/ampd/src/handlers/multisig.rs @@ -2,13 +2,11 @@ use std::collections::HashMap; use std::convert::TryInto; use async_trait::async_trait; -use axelar_wasm_std::FnExt; use cosmrs::cosmwasm::MsgExecuteContract; use cosmwasm_std::{HexBinary, Uint64}; -use ecdsa::{RecoveryId, VerifyingKey}; +use ecdsa::VerifyingKey; use error_stack::ResultExt; use hex::encode; -use k256::Secp256k1; use serde::de::Error as DeserializeError; use serde::{Deserialize, Deserializer}; use tracing::info; @@ -22,7 +20,7 @@ use crate::event_processor::EventHandler; use crate::handlers::errors::Error::{self, DeserializeEvent}; use crate::queue::queued_broadcaster::BroadcasterClient; use crate::tofnd::grpc::SharableEcdsaClient; -use crate::tofnd::{MessageDigest, Signature}; +use crate::tofnd::MessageDigest; use crate::types::PublicKey; use crate::types::TMAddress; @@ -153,8 +151,7 @@ where info!(signature = encode(&signature), "ready to submit signature"); - self.broadcast_signature(session_id, to_recoverable(signature, &msg, pub_key)?) - .await?; + self.broadcast_signature(session_id, signature).await?; Ok(()) } @@ -166,60 +163,34 @@ where } } -// TODO: handle signature conversion in wasm contract -fn to_recoverable( - sig: Signature, - digest: &MessageDigest, - pub_key: &PublicKey, -) -> error_stack::Result, Error> { - let sig = - ecdsa::Signature::::from_slice(sig.as_slice()).change_context(Error::Sign)?; - - let recovery_id = VerifyingKey::from_sec1_bytes(pub_key.to_bytes().as_ref()) - .change_context(Error::Sign)? - .then(|k| { - RecoveryId::trial_recovery_from_prehash(&k, digest.as_ref(), &sig) - .change_context(Error::Sign) - })?; - - let mut recoverable = sig.to_vec(); - // We have to make v 27 or 28 due to openzeppelin's implementation - recoverable.push(recovery_id.to_byte() + 27); - - Ok(recoverable) -} - #[cfg(test)] mod test { - use base64::engine::general_purpose::STANDARD; - use base64::Engine; use std::collections::HashMap; use std::convert::{TryFrom, TryInto}; - use std::str::FromStr; use std::time::Duration; + use base64::engine::general_purpose::STANDARD; + use base64::Engine; use cosmos_sdk_proto::cosmos::base::abci::v1beta1::TxResponse; use cosmrs::{AccountId, Gas}; use cosmwasm_std::{Addr, HexBinary, Uint64}; use ecdsa::SigningKey; - use elliptic_curve::consts::U32; use error_stack::{Report, Result}; - use ethers::types::Signature as EthersSignature; - use generic_array::GenericArray; use hex::FromHex; - use k256::ecdsa::{Signature as K256Signature, VerifyingKey}; use rand::rngs::OsRng; use tendermint::abci; - use super::*; + use multisig::events::Event::SigningStarted; + use multisig::key::PublicKey; + use multisig::types::{KeyID, MsgToSign}; + use crate::broadcaster::MockBroadcaster; use crate::queue::queued_broadcaster::{QueuedBroadcaster, QueuedBroadcasterClient}; use crate::tofnd; use crate::tofnd::grpc::{MockEcdsaClient, SharableEcdsaClient}; use crate::types; - use multisig::events::Event::SigningStarted; - use multisig::key::PublicKey; - use multisig::types::{KeyID, MsgToSign}; + + use super::*; const MULTISIG_ADDRESS: &str = "axelarvaloper1zh9wrak6ke4n6fclj5e8yk397czv430ygs5jz7"; @@ -396,36 +367,4 @@ mod test { Error::Sign )); } - - #[test] - fn should_convert_signature_to_recoverable() { - let ethers_signature = EthersSignature::from_str("74ab5ec395cdafd861dec309c30f6cf8884fc9905eb861171e636d9797478adb60b2bfceb7db0a08769ed7a60006096d3e0f6d3783d125600ac6306180ecbc6f1b").unwrap(); - let pub_key = - Vec::from_hex("03571a2dcec96eecc7950c9f36367fd459b8d334bac01ac153b7ed3dcf4025fc22") - .unwrap(); - - let digest = "6ac52b00f4256d98d53c256949288135c14242a39001d5fdfa564ea003ccaf92"; - - let signature = { - let mut r_bytes = [0u8; 32]; - let mut s_bytes = [0u8; 32]; - ethers_signature.r.to_big_endian(&mut r_bytes); - ethers_signature.s.to_big_endian(&mut s_bytes); - let gar: &GenericArray = GenericArray::from_slice(&r_bytes); - let gas: &GenericArray = GenericArray::from_slice(&s_bytes); - - K256Signature::from_scalars(*gar, *gas).unwrap() - }; - - let recoverable_signature = to_recoverable( - signature.to_vec(), - &MessageDigest::from_hex(digest).unwrap(), - &VerifyingKey::from_sec1_bytes(pub_key.as_ref()) - .unwrap() - .into(), - ) - .unwrap(); - - assert_eq!(recoverable_signature, ethers_signature.to_vec()); - } } diff --git a/contracts/multisig-prover/Cargo.toml b/contracts/multisig-prover/Cargo.toml index 27d76c5d0..0223dd6c8 100644 --- a/contracts/multisig-prover/Cargo.toml +++ b/contracts/multisig-prover/Cargo.toml @@ -58,3 +58,6 @@ voting-verifier = { workspace = true, features = ["library"] } [dev-dependencies] anyhow = "1.0" cw-multi-test = "0.15.1" +elliptic-curve = "0.13.5" +ethers = "2.0.8" +generic-array = "0.14.7" diff --git a/contracts/multisig-prover/src/encoding/abi.rs b/contracts/multisig-prover/src/encoding/abi.rs index 0a296ba79..baffc6582 100644 --- a/contracts/multisig-prover/src/encoding/abi.rs +++ b/contracts/multisig-prover/src/encoding/abi.rs @@ -1,12 +1,14 @@ use std::str::FromStr; -use axelar_wasm_std::operators::Operators; use cosmwasm_std::{HexBinary, Uint256}; +use ethabi::ethereum_types; use ethabi::{short_signature, ParamType, Token}; use itertools::MultiUnzip; use k256::{elliptic_curve::sec1::ToEncodedPoint, PublicKey}; use sha3::{Digest, Keccak256}; +use axelar_wasm_std::operators::Operators; +use multisig::key::{NonRecoverable, Recoverability, Recoverable}; use multisig::{key::Signature, msg::Signer}; use crate::{ @@ -16,7 +18,6 @@ use crate::{ }; use super::Data; -use ethabi::ethereum_types; pub const GATEWAY_EXECUTE_FUNCTION_NAME: &str = "execute"; @@ -62,8 +63,23 @@ pub fn msg_digest(command_batch: &CommandBatch) -> HexBinary { pub fn encode_execute_data( command_batch: &CommandBatch, quorum: Uint256, - signers: Vec<(Signer, Option)>, + signers: Vec<(Signer, Option>)>, ) -> Result { + let signers = signers + .into_iter() + .map(|(signer, non_recoverable)| { + let recoverable = non_recoverable.and_then(|sig| { + sig.to_recoverable( + command_batch.msg_digest().as_slice(), + &signer.pub_key, + add27, + ) + .ok() + }); + (signer, recoverable) + }) + .collect::>(); + let param = ethabi::encode(&[ Token::Bytes(encode(&command_batch.data).into()), Token::Bytes(encode_proof(quorum, signers)?.into()), @@ -80,7 +96,7 @@ pub fn encode_execute_data( fn encode_proof( quorum: Uint256, - signers: Vec<(Signer, Option)>, + signers: Vec<(Signer, Option>)>, ) -> Result { let mut operators = make_evm_operators_with_sigs(signers)?; operators.sort(); @@ -93,7 +109,8 @@ fn encode_proof( Token::Uint(ethereum_types::U256::from_big_endian( &op.weight.to_be_bytes(), )), - op.signature.map(|sig| Token::Bytes(>::from(sig))), + op.signature + .map(|sig| Token::Bytes(>::from(sig.as_ref()))), ) }) .multiunzip(); @@ -130,20 +147,26 @@ pub fn make_operators(worker_set: WorkerSet) -> Operators { } } -fn make_evm_operators_with_sigs( - signers_with_sigs: Vec<(Signer, Option)>, -) -> Result, ContractError> { +fn make_evm_operators_with_sigs( + signers_with_sigs: Vec<(Signer, Option>)>, +) -> Result>, ContractError> +where + T: Recoverability, +{ axelar_wasm_std::utils::try_map(signers_with_sigs, |(signer, sig)| { - make_evm_operator(signer).map(|mut op: Operator| { + make_evm_operator(signer).map(|op| { if let Some(sig) = sig { - op.set_signature(sig); + return op.with_signature(sig); } op }) }) } -fn make_evm_operator(signer: Signer) -> Result { +fn make_evm_operator(signer: Signer) -> Result, ContractError> +where + T: Recoverability, +{ Ok(Operator { address: evm_address(signer.pub_key.as_ref())?, weight: signer.weight, @@ -151,6 +174,10 @@ fn make_evm_operator(signer: Signer) -> Result { }) } +fn add27(recovery_byte: u8) -> u8 { + recovery_byte + 27 +} + pub fn transfer_operatorship_params(worker_set: &WorkerSet) -> Result { let mut operators: Vec<(HexBinary, Uint256)> = worker_set .signers @@ -228,6 +255,13 @@ pub fn command_params( #[cfg(test)] mod test { + use elliptic_curve::consts::U32; + use ethers::types::Signature as EthersSignature; + use generic_array::GenericArray; + use hex::FromHex; + use k256::ecdsa::Signature as K256Signature; + + use multisig::key::KeyType; use crate::{ encoding::{CommandBatchBuilder, Encoder}, @@ -500,7 +534,7 @@ mod test { op.signature, ) }) - .collect::)>>(); + .collect::>)>>(); let execute_data = &batch.encode_execute_data(quorum, signers).unwrap(); @@ -579,7 +613,7 @@ mod test { op.signature, ) }) - .collect::)>>(); + .collect::>)>>(); let res = batch.encode_execute_data(quorum, signers).unwrap(); assert_eq!(res, test_data::execute_data()); @@ -669,4 +703,42 @@ mod test { std::cmp::Ordering::Less ); } + + #[test] + fn should_convert_signature_to_recoverable() { + let ethers_signature = EthersSignature::from_str("74ab5ec395cdafd861dec309c30f6cf8884fc9905eb861171e636d9797478adb60b2bfceb7db0a08769ed7a60006096d3e0f6d3783d125600ac6306180ecbc6f1b").unwrap(); + let pub_key = + Vec::from_hex("03571a2dcec96eecc7950c9f36367fd459b8d334bac01ac153b7ed3dcf4025fc22") + .unwrap(); + + let digest = "6ac52b00f4256d98d53c256949288135c14242a39001d5fdfa564ea003ccaf92"; + + let signature = { + let mut r_bytes = [0u8; 32]; + let mut s_bytes = [0u8; 32]; + ethers_signature.r.to_big_endian(&mut r_bytes); + ethers_signature.s.to_big_endian(&mut s_bytes); + let gar: &GenericArray = GenericArray::from_slice(&r_bytes); + let gas: &GenericArray = GenericArray::from_slice(&s_bytes); + + K256Signature::from_scalars(*gar, *gas).unwrap() + }; + + let non_recoverable: Signature = + (KeyType::Ecdsa, HexBinary::from(signature.to_vec())) + .try_into() + .unwrap(); + let recoverable_signature = non_recoverable + .to_recoverable( + HexBinary::from_hex(digest).unwrap().as_slice(), + &multisig::key::PublicKey::Ecdsa(HexBinary::from(pub_key.to_vec())), + add27, + ) + .unwrap(); + + assert_eq!( + recoverable_signature.as_ref(), + ethers_signature.to_vec().as_slice() + ); + } } diff --git a/contracts/multisig-prover/src/encoding/bcs.rs b/contracts/multisig-prover/src/encoding/bcs.rs index 83eefc13f..54fa4122c 100644 --- a/contracts/multisig-prover/src/encoding/bcs.rs +++ b/contracts/multisig-prover/src/encoding/bcs.rs @@ -5,7 +5,10 @@ use cosmwasm_std::{HexBinary, Uint256}; use crate::{error::ContractError, state::WorkerSet}; use itertools::Itertools; -use multisig::{key::Signature, msg::Signer}; +use multisig::{ + key::{Recoverable, Signature}, + msg::Signer, +}; use crate::types::{CommandBatch, Operator}; @@ -46,7 +49,7 @@ pub fn transfer_operatorship_params(worker_set: &WorkerSet) -> Result)>, + signers: Vec<(Signer, Option>)>, ) -> Result { let mut operators = make_operators_with_sigs(signers); operators.sort(); // gateway requires operators to be sorted @@ -67,7 +70,9 @@ fn encode_proof( Ok(to_bytes(&(addresses, weights, quorum, signatures))?.into()) } -fn make_operators_with_sigs(signers_with_sigs: Vec<(Signer, Option)>) -> Vec { +fn make_operators_with_sigs( + signers_with_sigs: Vec<(Signer, Option>)>, +) -> Vec> { signers_with_sigs .into_iter() .map(|(signer, sig)| Operator { @@ -171,15 +176,15 @@ fn u256_to_u64(chain_id: Uint256) -> u64 { #[cfg(test)] mod test { + use std::{marker::PhantomData, vec}; + use axelar_wasm_std::operators::Operators; use bcs::from_bytes; use connection_router::msg::Message; use cosmwasm_std::{Addr, HexBinary, Uint256}; - use std::vec; - use multisig::{ - key::{PublicKey, Signature}, + key::{PublicKey, Recoverable, Signature}, msg::Signer, }; @@ -273,7 +278,7 @@ mod test { ), }, Some(Signature::Ecdsa( - HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b72021b").unwrap()))), + HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b72021b").unwrap(), PhantomData))), (Signer { address: Addr::unchecked("axelarvaloper1x86a8prx97ekkqej2x636utrdu23y8wupp9gk5"), weight: Uint256::from(10u128), @@ -285,7 +290,7 @@ mod test { ), }, Some(Signature::Ecdsa( - HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b72021b").unwrap())))]; + HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b72021b").unwrap(), PhantomData)))]; let quorum = Uint256::from(10u128); let proof = encode_proof(quorum, signers.clone()); @@ -315,7 +320,7 @@ mod test { assert_eq!(weights[i], 10u128); assert_eq!( signatures[i], - HexBinary::from(signers[i].1.clone().unwrap()).to_vec() + HexBinary::from(signers[i].1.clone().unwrap().as_ref()).to_vec() ); } } diff --git a/contracts/multisig-prover/src/encoding/mod.rs b/contracts/multisig-prover/src/encoding/mod.rs index afa131c1a..c6475cb3d 100644 --- a/contracts/multisig-prover/src/encoding/mod.rs +++ b/contracts/multisig-prover/src/encoding/mod.rs @@ -7,6 +7,7 @@ use cosmwasm_std::{HexBinary, Uint256}; use sha3::{Digest, Keccak256}; use connection_router::msg::Message; +use multisig::key::NonRecoverable; use multisig::{key::Signature, msg::Signer}; use crate::{ @@ -118,7 +119,7 @@ impl CommandBatch { pub fn encode_execute_data( &self, quorum: Uint256, - signers: Vec<(Signer, Option)>, + signers: Vec<(Signer, Option>)>, ) -> Result { match self.encoder { Encoder::Abi => abi::encode_execute_data(self, quorum, signers), diff --git a/contracts/multisig-prover/src/error.rs b/contracts/multisig-prover/src/error.rs index e269465b3..dbbc5c8fe 100644 --- a/contracts/multisig-prover/src/error.rs +++ b/contracts/multisig-prover/src/error.rs @@ -17,6 +17,9 @@ pub enum ContractError { #[error("public key is invalid: {reason}")] InvalidPublicKey { reason: String }, + #[error("signature is invalid: {reason}")] + InvalidSignature { reason: String }, + #[error("chain name is invalid")] InvalidChainName, diff --git a/contracts/multisig-prover/src/test/mocks/multisig.rs b/contracts/multisig-prover/src/test/mocks/multisig.rs index 331140b2d..ec88b9bce 100644 --- a/contracts/multisig-prover/src/test/mocks/multisig.rs +++ b/contracts/multisig-prover/src/test/mocks/multisig.rs @@ -84,10 +84,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { mod query { use multisig::key::PublicKey; - use multisig::{ - key::Signature, - msg::{Multisig, Signer}, - }; + use multisig::msg::{Multisig, Signer}; use crate::test::test_data; @@ -109,7 +106,7 @@ mod query { op.signature, ) }) - .collect::)>>(); + .collect::>(); Multisig { state: MultisigState::Completed, diff --git a/contracts/multisig-prover/src/test/test_data.rs b/contracts/multisig-prover/src/test/test_data.rs index 63258cd4c..7792c3d6d 100644 --- a/contracts/multisig-prover/src/test/test_data.rs +++ b/contracts/multisig-prover/src/test/test_data.rs @@ -4,6 +4,7 @@ use axelar_wasm_std::{nonempty, Threshold}; use connection_router::msg::Message; use cosmwasm_schema::cw_serde; use cosmwasm_std::{Addr, HexBinary, Uint256, Uint64}; +use multisig::key::NonRecoverable; use multisig::{ key::{KeyType, PublicKey, Signature}, msg::Signer, @@ -133,7 +134,7 @@ pub struct TestOperator { pub pub_key: multisig::key::PublicKey, pub operator: HexBinary, pub weight: Uint256, - pub signature: Option, + pub signature: Option>, } pub fn operators() -> Vec { @@ -150,21 +151,21 @@ pub fn operators() -> Vec { "0277b844fb49bf9b5838dc15d79f3c6c7701eb2e0ab066d4aa63ce162b08718d37", "11C67adfe52a3782bd518294188C4AAfaaF6cDeb", 1u128, - Some("eff382a60ef4d917ae0bcbd58ab121fbd7bd53b777773bf1da298d3701565a3379a5b741f881ad739e651a544f2331c085c482857856201c49328ae9ba65cf131c"), + Some("eff382a60ef4d917ae0bcbd58ab121fbd7bd53b777773bf1da298d3701565a3379a5b741f881ad739e651a544f2331c085c482857856201c49328ae9ba65cf13"), ), ( "axelar14g0tmk5ldxxdqtl0utl69ck43cpcvd0ay4lfyt", "03a54c7ad1621b57803bc5bcfe826b713bf5c5a15906ccd08f271d58992bee71d6", "4905FD2e40B1A037256e32fe1e4BCa41AE510d73", 1u128, - Some("301ff4127c1c5a865732776769c6227e4978a1c4567bc1d2926cd798422f1f507b10989e173c6ebc23334eb7e3c713e940369c418061d5cad1173882f35dc43d1b"), + Some("301ff4127c1c5a865732776769c6227e4978a1c4567bc1d2926cd798422f1f507b10989e173c6ebc23334eb7e3c713e940369c418061d5cad1173882f35dc43d"), ), ( "axelar1gwd8wd3qkapk8pnwdu4cchah2sjjws6lx694r6", "033a9726a6e2fdc308089c6cab1e6fda2e2bddeb2bcf800990e5fd2c05a270c9df", "a6E7b3b7A1AF4103F540D05776F7dd200210201F", 1u128, - Some("c55581edbf0401d0cd3495522323e45d4521312dafdedf39b4adc8085a3842c74f13c055b72d12ec3afc1e8f9c37b5f660fbefb38165dbe61090923865e158271b"), + Some("c55581edbf0401d0cd3495522323e45d4521312dafdedf39b4adc8085a3842c74f13c055b72d12ec3afc1e8f9c37b5f660fbefb38165dbe61090923865e15827"), ), ( "axelar1fcrwupthhxm6zsd7kw00w2fk530p6wtt8mj92l", diff --git a/contracts/multisig-prover/src/types.rs b/contracts/multisig-prover/src/types.rs index 2d37e977a..2f8a1ac65 100644 --- a/contracts/multisig-prover/src/types.rs +++ b/contracts/multisig-prover/src/types.rs @@ -4,7 +4,7 @@ use axelar_wasm_std::{Participant, Snapshot}; use cosmwasm_schema::cw_serde; use cosmwasm_std::{from_binary, HexBinary, StdResult, Uint256}; use cw_storage_plus::{Key, KeyDeserialize, PrimaryKey}; -use multisig::key::{PublicKey, Signature}; +use multisig::key::{PublicKey, Recoverability, Signature}; use sha3::{Digest, Keccak256}; use crate::{ @@ -90,15 +90,28 @@ pub struct CommandBatch { #[cw_serde] #[derive(Ord, PartialOrd, Eq)] -pub struct Operator { +pub struct Operator +where + T: Recoverability, +{ pub address: HexBinary, pub weight: Uint256, - pub signature: Option, + pub signature: Option>, } -impl Operator { - pub fn set_signature(&mut self, sig: Signature) { - self.signature = Some(sig); +impl Operator +where + T: Recoverability, +{ + pub fn with_signature(self, sig: Signature) -> Operator + where + S: Recoverability, + { + Operator { + address: self.address, + weight: self.weight, + signature: Some(sig), + } } } diff --git a/contracts/multisig/Cargo.toml b/contracts/multisig/Cargo.toml index 2aafdad13..1f1759769 100644 --- a/contracts/multisig/Cargo.toml +++ b/contracts/multisig/Cargo.toml @@ -41,6 +41,7 @@ cw-storage-plus = "1.0.1" cw2 = "0.15.1" error-stack = { workspace = true } getrandom = { version = "0.2", default-features = false, features = ["custom"] } +k256 = { version = "0.13.1", features = ["ecdsa"] } report = { workspace = true } schemars = "0.8.10" serde = { version = "1.0.145", default-features = false, features = ["derive"] } diff --git a/contracts/multisig/src/contract.rs b/contracts/multisig/src/contract.rs index 5531e723b..837e12f9f 100644 --- a/contracts/multisig/src/contract.rs +++ b/contracts/multisig/src/contract.rs @@ -60,6 +60,7 @@ pub fn execute( } pub mod execute { + use crate::key::NonRecoverable; use crate::{ key::{KeyType, KeyTyped, PublicKey, Signature}, signing::SigningSession, @@ -115,7 +116,7 @@ pub mod execute { .map_err(|_| ContractError::SigningSessionNotFound { session_id })?; let key = KEYS.load(deps.storage, &session.key_id)?; - let signature: Signature = match key + let signature: Signature = match key .pub_keys .iter() .find(|&(addr, _)| addr == &info.sender.to_string()) @@ -234,7 +235,7 @@ pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { pub mod query { use crate::{ - key::{KeyType, PublicKey, Signature}, + key::{KeyType, PublicKey}, msg::Signer, state::PUB_KEYS, }; @@ -265,7 +266,7 @@ pub mod query { session.signatures.get(&address).cloned(), ) }) - .collect::)>>(); + .collect::>(); Ok(Multisig { state: session.state, diff --git a/contracts/multisig/src/error.rs b/contracts/multisig/src/error.rs index 2ac1e750c..2e4cd09f8 100644 --- a/contracts/multisig/src/error.rs +++ b/contracts/multisig/src/error.rs @@ -7,7 +7,7 @@ pub enum ContractError { #[error(transparent)] Std(#[from] StdError), - #[error("No active key found for {key_id:?}")] + #[error("no active key found for {key_id:?}")] NoActiveKeyFound { key_id: String }, #[error("{signer:?} already submitted a signature for signing session {session_id:?}")] @@ -16,28 +16,28 @@ pub enum ContractError { #[error("{signer:?} is not a participant in signing session {session_id:?}")] NotAParticipant { session_id: Uint64, signer: String }, - #[error("Signature verification failed: {reason:?}")] + #[error("signature verification failed: {reason:?}")] SignatureVerificationFailed { reason: String }, #[error("{signer:?} submitted an invalid signature for signing session {session_id:?}")] InvalidSignature { session_id: Uint64, signer: String }, - #[error("Invalid public key format: {reason:?}")] + #[error("invalid public key format: {reason:?}")] InvalidPublicKeyFormat { reason: String }, - #[error("Invalid message format: {reason:?}")] + #[error("invalid message format: {reason:?}")] InvalidMessageFormat { reason: String }, - #[error("Invalid signature format: {reason:?}")] + #[error("invalid signature format: {reason:?}")] InvalidSignatureFormat { reason: String }, - #[error("Signing session {session_id:?} is already closed")] + #[error("signing session {session_id:?} is already closed")] SigningSessionClosed { session_id: Uint64 }, - #[error("Signing session {session_id:?} not found")] + #[error("signing session {session_id:?} not found")] SigningSessionNotFound { session_id: Uint64 }, - #[error("Key ID {key_id:?} already exists")] + #[error("key ID {key_id:?} already exists")] DuplicateKeyID { key_id: String }, #[error("number of participants does not match number of public keys")] diff --git a/contracts/multisig/src/events.rs b/contracts/multisig/src/events.rs index 7cde84210..bf0d510b3 100644 --- a/contracts/multisig/src/events.rs +++ b/contracts/multisig/src/events.rs @@ -3,6 +3,7 @@ use std::collections::HashMap; use cosmwasm_std::{Addr, HexBinary, Uint64}; use serde_json::to_string; +use crate::key::NonRecoverable; use crate::{ key::{PublicKey, Signature}, types::{KeyID, MsgToSign}, @@ -20,7 +21,7 @@ pub enum Event { SignatureSubmitted { session_id: Uint64, participant: Addr, - signature: Signature, + signature: Signature, }, // Emitted when a signing session was completed SigningCompleted { @@ -59,7 +60,7 @@ impl From for cosmwasm_std::Event { } => cosmwasm_std::Event::new("signature_submitted") .add_attribute("session_id", session_id) .add_attribute("participant", participant) - .add_attribute("signature", HexBinary::from(signature).to_hex()), + .add_attribute("signature", HexBinary::from(signature.as_ref()).to_hex()), Event::SigningCompleted { session_id } => cosmwasm_std::Event::new("signing_completed") .add_attribute("session_id", session_id), Event::PublicKeyRegistered { worker, public_key } => { diff --git a/contracts/multisig/src/key.rs b/contracts/multisig/src/key.rs index 84e3a2405..edfa117e7 100644 --- a/contracts/multisig/src/key.rs +++ b/contracts/multisig/src/key.rs @@ -2,6 +2,7 @@ use cosmwasm_schema::cw_serde; use cosmwasm_std::{HexBinary, StdError, StdResult}; use cw_storage_plus::{KeyDeserialize, PrimaryKey}; use serde::{de::Error, Deserializer}; +use std::marker::PhantomData; use crate::{secp256k1::ecdsa_verify, types::MsgToSign, ContractError}; @@ -13,8 +14,43 @@ pub enum KeyType { #[cw_serde] #[derive(PartialOrd, Ord, Eq)] -pub enum Signature { - Ecdsa(HexBinary), +pub enum Signature +where + T: Recoverability, +{ + Ecdsa(HexBinary, PhantomData), +} + +pub trait Recoverability { + fn len() -> usize; +} + +#[cw_serde] +#[derive(Ord, PartialOrd, Eq)] +pub struct Recoverable; + +impl Recoverable { + const LEN: usize = 65; +} + +#[cw_serde] +#[derive(Ord, PartialOrd, Eq)] +pub struct NonRecoverable; + +impl NonRecoverable { + const LEN: usize = 64; +} + +impl Recoverability for Recoverable { + fn len() -> usize { + Recoverable::LEN + } +} + +impl Recoverability for NonRecoverable { + fn len() -> usize { + NonRecoverable::LEN + } } #[cw_serde] @@ -36,7 +72,7 @@ where } pub trait KeyTyped { - fn matches(&self, other: &T) -> bool + fn matches_type(&self, other: &T) -> bool where T: KeyTyped, { @@ -54,28 +90,74 @@ impl KeyTyped for PublicKey { } } -impl KeyTyped for Signature { +impl KeyTyped for Signature +where + T: Recoverability, +{ fn key_type(&self) -> KeyType { match self { - Signature::Ecdsa(_) => KeyType::Ecdsa, + Signature::Ecdsa(_, _) => KeyType::Ecdsa, } } } -impl Signature { +impl Signature { pub fn verify(&self, msg: &MsgToSign, pub_key: &PublicKey) -> Result { - if !self.matches(pub_key) { + if !self.matches_type(pub_key) { return Err(ContractError::KeyTypeMismatch); } - match (self, pub_key) { - (Signature::Ecdsa(sig), PublicKey::Ecdsa(pub_key)) => { - ecdsa_verify(msg.into(), sig.as_ref(), pub_key.as_ref()) + match self.key_type() { + KeyType::Ecdsa => ecdsa_verify(msg.as_ref(), self, pub_key.as_ref()), + } + } + + pub fn to_recoverable( + &self, + msg: &[u8], + pub_key: &PublicKey, + recovery_transform: impl FnOnce(u8) -> u8, + ) -> Result, ContractError> { + match self { + Signature::Ecdsa(sig, _) => { + let sig = k256::ecdsa::Signature::from_slice(sig.as_ref()).map_err(|err| { + ContractError::InvalidSignatureFormat { + reason: err.to_string(), + } + })?; + + let recovery_byte = k256::ecdsa::VerifyingKey::from_sec1_bytes(pub_key.as_ref()) + .and_then(|k| { + k256::ecdsa::RecoveryId::trial_recovery_from_prehash(&k, msg, &sig) + }) + .map_err(|err| ContractError::InvalidSignatureFormat { + reason: err.to_string(), + })? + .to_byte(); + let mut recoverable = sig.to_vec(); + recoverable.push(recovery_transform(recovery_byte)); + + (KeyType::Ecdsa, HexBinary::from(recoverable)).try_into() } } } } +impl Signature { + pub fn verify(&self, msg: &MsgToSign, pub_key: &PublicKey) -> Result { + self.to_non_recoverable().verify(msg, pub_key) + } + + fn to_non_recoverable(&self) -> Signature { + match self { + Signature::Ecdsa(sig, _) => Signature::Ecdsa( + HexBinary::from(&sig.as_slice()[..NonRecoverable::LEN]), + PhantomData, + ), + } + } +} + impl<'a> PrimaryKey<'a> for KeyType { type Prefix = (); type SubPrefix = (); @@ -98,13 +180,14 @@ impl KeyDeserialize for KeyType { serde_json::from_slice(value.as_slice()).map_err(|err| StdError::ParseErr { target_type: "KeyType".into(), msg: err.to_string(), + #[cfg(feature = "backtraces")] + backtrace: std::backtrace::Backtrace::capture(), }) } } const ECDSA_COMPRESSED_PUBKEY_LEN: usize = 33; const ECDSA_UNCOMPRESSED_PUBKEY_LEN: usize = 65; -const EVM_SIGNATURE_LEN: usize = 65; impl TryFrom<(KeyType, HexBinary)> for PublicKey { type Error = ContractError; @@ -125,51 +208,58 @@ impl TryFrom<(KeyType, HexBinary)> for PublicKey { } } -impl TryFrom<(KeyType, HexBinary)> for Signature { +impl TryFrom<(KeyType, HexBinary)> for Signature { type Error = ContractError; fn try_from((key_type, sig): (KeyType, HexBinary)) -> Result { - match key_type { - KeyType::Ecdsa => { - if sig.len() != EVM_SIGNATURE_LEN { - return Err(ContractError::InvalidSignatureFormat { - reason: "Invalid input length".into(), - }); - } - Ok(Signature::Ecdsa(sig)) - } - } + try_from((key_type, sig), Recoverable::len()) } } -impl AsRef<[u8]> for PublicKey { - fn as_ref(&self) -> &[u8] { - match self { - PublicKey::Ecdsa(pk) => pk.as_ref(), - } +impl TryFrom<(KeyType, HexBinary)> for Signature { + type Error = ContractError; + + fn try_from((key_type, sig): (KeyType, HexBinary)) -> Result { + try_from((key_type, sig), NonRecoverable::len()) } } -impl AsRef<[u8]> for Signature { - fn as_ref(&self) -> &[u8] { - match self { - Signature::Ecdsa(sig) => sig.as_ref(), - } +fn try_from( + (key_type, sig): (KeyType, HexBinary), + expected_len: usize, +) -> Result, ContractError> +where + T: Recoverability, +{ + if sig.len() != expected_len { + return Err(ContractError::InvalidSignatureFormat { + reason: format!( + "invalid input length {}, expected {}", + sig.len(), + expected_len + ), + }); + } + match key_type { + KeyType::Ecdsa => Ok(Signature::Ecdsa(sig, PhantomData)), } } -impl From for Vec { - fn from(value: Signature) -> Vec { - match value { - Signature::Ecdsa(sig) => sig.to_vec(), +impl AsRef<[u8]> for PublicKey { + fn as_ref(&self) -> &[u8] { + match self { + PublicKey::Ecdsa(pk) => pk.as_ref(), } } } -impl From for HexBinary { - fn from(original: Signature) -> Self { - match original { - Signature::Ecdsa(sig) => sig, +impl AsRef<[u8]> for Signature +where + T: Recoverability, +{ + fn as_ref(&self) -> &[u8] { + match self { + Signature::Ecdsa(sig, _) => sig.as_ref(), } } } @@ -186,6 +276,7 @@ impl From for HexBinary { mod test { use cosmwasm_std::HexBinary; + use crate::key::NonRecoverable; use crate::{key::Signature, test::common::test_data, types::MsgToSign, ContractError}; use super::{KeyType, PublicKey}; @@ -237,8 +328,9 @@ mod test { #[test] fn test_try_from_hexbinary_to_signature() { let hex = test_data::signature(); - let signature = Signature::try_from((KeyType::Ecdsa, hex.clone())).unwrap(); - assert_eq!(HexBinary::from(signature), hex); + let signature: Signature = + (KeyType::Ecdsa, hex.clone()).try_into().unwrap(); + assert_eq!(signature.as_ref(), hex.as_ref()); } #[test] @@ -247,16 +339,17 @@ mod test { HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b72") .unwrap(); assert_eq!( - Signature::try_from((KeyType::Ecdsa, hex.clone())).unwrap_err(), + >::try_from((KeyType::Ecdsa, hex.clone())).unwrap_err(), ContractError::InvalidSignatureFormat { - reason: "Invalid input length".into() + reason: "invalid input length 63, expected 64".into() } ); } #[test] fn test_verify_signature() { - let signature = Signature::try_from((KeyType::Ecdsa, test_data::signature())).unwrap(); + let signature: Signature = + (KeyType::Ecdsa, test_data::signature()).try_into().unwrap(); let message = MsgToSign::try_from(test_data::message()).unwrap(); let public_key = PublicKey::try_from((KeyType::Ecdsa, test_data::pub_key())).unwrap(); let result = signature.verify(&message, &public_key).unwrap(); @@ -266,11 +359,12 @@ mod test { #[test] fn test_verify_signature_invalid_signature() { let invalid_signature = HexBinary::from_hex( - "a112231719403227b297139cc6beef82a4e034663bfe48cf732687860b16227a51e4bd6be96fceeecf8e77fe7cdd4f5567d71aed5388484d1f2ba355298c954e1b", + "a112231719403227b297139cc6beef82a4e034663bfe48cf732687860b16227a51e4bd6be96fceeecf8e77fe7cdd4f5567d71aed5388484d1f2ba355298c954e", ) .unwrap(); - let signature = Signature::try_from((KeyType::Ecdsa, invalid_signature)).unwrap(); + let signature: Signature = + (KeyType::Ecdsa, invalid_signature).try_into().unwrap(); let message = MsgToSign::try_from(test_data::message()).unwrap(); let public_key = PublicKey::try_from((KeyType::Ecdsa, test_data::pub_key())).unwrap(); let result = signature.verify(&message, &public_key).unwrap(); @@ -284,7 +378,8 @@ mod test { ) .unwrap(); - let signature = Signature::try_from((KeyType::Ecdsa, test_data::signature())).unwrap(); + let signature: Signature = + (KeyType::Ecdsa, test_data::signature()).try_into().unwrap(); let message = MsgToSign::try_from(test_data::message()).unwrap(); let public_key = PublicKey::try_from((KeyType::Ecdsa, invalid_pub_key)).unwrap(); let result = signature.verify(&message, &public_key).unwrap(); diff --git a/contracts/multisig/src/msg.rs b/contracts/multisig/src/msg.rs index 9d47ed391..f9bf63ab3 100644 --- a/contracts/multisig/src/msg.rs +++ b/contracts/multisig/src/msg.rs @@ -4,6 +4,7 @@ use axelar_wasm_std::Snapshot; use cosmwasm_schema::{cw_serde, QueryResponses}; use cosmwasm_std::{Addr, HexBinary, Uint256, Uint64}; +use crate::key::NonRecoverable; use crate::{ key::{KeyType, PublicKey, Signature}, types::{KeyID, MultisigState}, @@ -60,5 +61,5 @@ pub struct Signer { pub struct Multisig { pub state: MultisigState, pub quorum: Uint256, - pub signers: Vec<(Signer, Option)>, + pub signers: Vec<(Signer, Option>)>, } diff --git a/contracts/multisig/src/secp256k1.rs b/contracts/multisig/src/secp256k1.rs index 46b2d7259..6f183deb7 100644 --- a/contracts/multisig/src/secp256k1.rs +++ b/contracts/multisig/src/secp256k1.rs @@ -1,12 +1,15 @@ use cosmwasm_crypto::secp256k1_verify; // TODO: Logic specific to secp256k1 will most likely be handled by core in the future. +use crate::key::{NonRecoverable, Signature}; use crate::ContractError; -const ECDSA_SIGNATURE_LEN: usize = 64; - -pub fn ecdsa_verify(msg_hash: &[u8], sig: &[u8], pub_key: &[u8]) -> Result { - secp256k1_verify(msg_hash, &sig[0..ECDSA_SIGNATURE_LEN], pub_key).map_err(|err| { +pub fn ecdsa_verify( + msg_hash: &[u8], + sig: &Signature, + pub_key: &[u8], +) -> Result { + secp256k1_verify(msg_hash, sig.as_ref(), pub_key).map_err(|err| { ContractError::SignatureVerificationFailed { reason: err.to_string(), } diff --git a/contracts/multisig/src/signing.rs b/contracts/multisig/src/signing.rs index cdbb129b6..3bc3c0158 100644 --- a/contracts/multisig/src/signing.rs +++ b/contracts/multisig/src/signing.rs @@ -5,6 +5,7 @@ use cosmwasm_std::{Uint256, Uint64}; use axelar_wasm_std::Snapshot; +use crate::key::NonRecoverable; use crate::{ key::Signature, types::{Key, KeyID, MsgToSign, MultisigState}, @@ -16,7 +17,7 @@ pub struct SigningSession { pub id: Uint64, pub key_id: KeyID, pub msg: MsgToSign, - pub signatures: HashMap, + pub signatures: HashMap>, pub state: MultisigState, } @@ -35,7 +36,7 @@ impl SigningSession { &mut self, key: Key, signer: String, - signature: Signature, + signature: Signature, ) -> Result<(), ContractError> { assert!(self.key_id == key.id, "violated invariant: key_id mismatch"); // TODO: correct way of handling this? @@ -219,7 +220,7 @@ mod tests { let mut session = SigningSession::new(Uint64::one(), config.key_id.clone(), config.message.clone()); - let invalid_sig : Signature = (KeyType::Ecdsa, HexBinary::from_hex("a58c9543b9df54578ec45838948e19afb1c6e4c86b34d9899b10b44e619ea74e19b457611e41a047030ed233af437d7ecff84de97cb6b3c13d73d22874e035111c") + let invalid_sig : Signature = (KeyType::Ecdsa, HexBinary::from_hex("a58c9543b9df54578ec45838948e19afb1c6e4c86b34d9899b10b44e619ea74e19b457611e41a047030ed233af437d7ecff84de97cb6b3c13d73d22874e03511") .unwrap()).try_into().unwrap(); let key = KEYS.load(&config.store, (&session.key_id).into()).unwrap(); diff --git a/contracts/multisig/src/test/common.rs b/contracts/multisig/src/test/common.rs index 1d46731d0..29830f852 100644 --- a/contracts/multisig/src/test/common.rs +++ b/contracts/multisig/src/test/common.rs @@ -25,7 +25,7 @@ pub mod test_data { } pub fn signature() -> HexBinary { - HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b72021b") + HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b7202") .unwrap() } diff --git a/contracts/multisig/src/types.rs b/contracts/multisig/src/types.rs index 5f110c388..33a6932a0 100644 --- a/contracts/multisig/src/types.rs +++ b/contracts/multisig/src/types.rs @@ -17,9 +17,9 @@ impl From for HexBinary { } } -impl<'a> From<&'a MsgToSign> for &'a [u8] { - fn from(original: &'a MsgToSign) -> Self { - original.0.as_slice() +impl AsRef<[u8]> for MsgToSign { + fn as_ref(&self) -> &[u8] { + self.0.as_slice() } } From 0644b2fdf4faee600f8fa045fcb2cc6016384392 Mon Sep 17 00:00:00 2001 From: CJ Cobb <46455409+cjcobb23@users.noreply.github.com> Date: Mon, 25 Sep 2023 13:33:05 -0400 Subject: [PATCH 05/11] feat(multisig-prover): bcs encode execute data (#124) --- ampd/src/handlers/multisig.rs | 1 - contracts/multisig-prover/src/encoding/bcs.rs | 116 ++++++++++++++++-- contracts/multisig-prover/src/encoding/mod.rs | 2 +- 3 files changed, 108 insertions(+), 11 deletions(-) diff --git a/ampd/src/handlers/multisig.rs b/ampd/src/handlers/multisig.rs index 7ff9d9cd8..9622fca5c 100644 --- a/ampd/src/handlers/multisig.rs +++ b/ampd/src/handlers/multisig.rs @@ -176,7 +176,6 @@ mod test { use cosmwasm_std::{Addr, HexBinary, Uint64}; use ecdsa::SigningKey; use error_stack::{Report, Result}; - use hex::FromHex; use rand::rngs::OsRng; use tendermint::abci; diff --git a/contracts/multisig-prover/src/encoding/bcs.rs b/contracts/multisig-prover/src/encoding/bcs.rs index 54fa4122c..7f0d36377 100644 --- a/contracts/multisig-prover/src/encoding/bcs.rs +++ b/contracts/multisig-prover/src/encoding/bcs.rs @@ -1,3 +1,5 @@ +use std::convert::identity; + use axelar_wasm_std::operators::Operators; use bcs::to_bytes; use cosmwasm_std::{HexBinary, Uint256}; @@ -6,7 +8,7 @@ use crate::{error::ContractError, state::WorkerSet}; use itertools::Itertools; use multisig::{ - key::{Recoverable, Signature}, + key::{NonRecoverable, Recoverable, Signature}, msg::Signer, }; @@ -150,17 +152,40 @@ pub fn encode(data: &Data) -> HexBinary { } pub fn msg_digest(command_batch: &CommandBatch) -> HexBinary { - let msg = Keccak256::digest(encode(&command_batch.data).as_slice()); - // Sui is just mimicking EVM here let unsigned = [ - "\x19Sui Signed Message:\n32".as_bytes(), // Keccek256 hash length = 32 - msg.as_slice(), + "\x19Sui Signed Message:\n".as_bytes(), // Keccek256 hash length = 32 + encode(&command_batch.data).as_slice(), ] .concat(); Keccak256::digest(unsigned).as_slice().into() } +pub fn encode_execute_data( + command_batch: &CommandBatch, + quorum: Uint256, + signers: Vec<(Signer, Option>)>, +) -> Result { + let signers = signers + .into_iter() + .map(|(signer, non_recoverable)| { + let recoverable = non_recoverable.map(|sig| { + sig.to_recoverable( + command_batch.msg_digest().as_slice(), + &signer.pub_key, + identity, + ) + .expect("couldn't recover signature") + }); + (signer, recoverable) + }) + .collect::>(); + let input = to_bytes(&( + encode(&command_batch.data).to_vec(), + encode_proof(quorum, signers)?.to_vec(), + ))?; + Ok(input.into()) +} fn u256_to_u128(val: Uint256) -> u128 { val.to_string().parse().expect("value is larger than u128") @@ -184,20 +209,21 @@ mod test { use cosmwasm_std::{Addr, HexBinary, Uint256}; use multisig::{ - key::{PublicKey, Recoverable, Signature}, + key::{PublicKey, Signature}, msg::Signer, }; use crate::{ encoding::{ bcs::{ - command_params, encode, encode_proof, make_command_id, make_operators, - transfer_operatorship_params, u256_to_u128, u256_to_u64, + command_params, encode, encode_execute_data, encode_proof, make_command_id, + make_operators, transfer_operatorship_params, u256_to_u128, u256_to_u64, }, CommandBatchBuilder, Data, }, + state::WorkerSet, test::test_data, - types::Command, + types::{BatchID, Command, CommandBatch}, }; use super::msg_digest; @@ -479,4 +505,76 @@ mod test { let msg2 = msg_digest(&batch); assert_ne!(msg, msg2); } + + #[test] + fn test_encode_execute_data() { + let approval = HexBinary::from_hex("8a02010000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020213617070726f7665436f6e747261637443616c6c13617070726f7665436f6e747261637443616c6c0249034554480330783000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000004c064158454c415203307831000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000087010121037286a4f1177bea06c8e15cf6ec3df0b7747a01ac2329ca2999dfd74eff59902801640000000000000000000000000000000a0000000000000000000000000000000141ef5ce016a4beed7e11761e5831805e962fca3d8901696a61a6ffd3af2b646bdc3740f64643bdb164b8151d1424eb4943d03f71e71816c00726e2d68ee55600c600").unwrap(); + + let zero_addr = "00".repeat(32); + + let data = Data { + destination_chain_id: 1u32.into(), + commands: vec![ + Command { + id: HexBinary::from_hex( + "0000000000000000000000000000000000000000000000000000000000000001", + ) + .unwrap(), + ty: crate::types::CommandType::ApproveContractCall, + params: command_params( + "ETH".into(), + "0x0".into(), + zero_addr.clone(), + HexBinary::from([0; 32]), + ) + .unwrap(), + }, + Command { + id: HexBinary::from_hex( + "0000000000000000000000000000000000000000000000000000000000000002", + ) + .unwrap(), + ty: crate::types::CommandType::ApproveContractCall, + params: command_params( + "AXELAR".into(), + "0x1".into(), + zero_addr, + HexBinary::from([0; 32]), + ) + .unwrap(), + }, + ], + }; + + let command_batch = CommandBatch { + message_ids: vec![], + id: BatchID::new(&vec!["foobar".to_string()], None), + data, + encoder: crate::encoding::Encoder::Bcs, + }; + let quorum = 10u128; + + let signer = Signer { + address: Addr::unchecked("axelarvaloper1x86a8prx97ekkqej2x636utrdu23y8wupp9gk5"), + weight: Uint256::from(100u128), + pub_key: PublicKey::Ecdsa( + HexBinary::from_hex( + "037286a4f1177bea06c8e15cf6ec3df0b7747a01ac2329ca2999dfd74eff599028", + ) + .unwrap(), + ), + }; + let signature = Signature::Ecdsa( + HexBinary::from_hex("ef5ce016a4beed7e11761e5831805e962fca3d8901696a61a6ffd3af2b646bdc3740f64643bdb164b8151d1424eb4943d03f71e71816c00726e2d68ee55600c6").unwrap(), + PhantomData); + let encoded = encode_execute_data( + &command_batch, + Uint256::from(quorum), + vec![(signer, Some(signature))], + ); + assert!(encoded.is_ok()); + let encoded = encoded.unwrap(); + assert_eq!(encoded.len(), approval.to_vec().len()); + assert_eq!(encoded.to_vec(), approval.to_vec()); + } } diff --git a/contracts/multisig-prover/src/encoding/mod.rs b/contracts/multisig-prover/src/encoding/mod.rs index c6475cb3d..b775f1052 100644 --- a/contracts/multisig-prover/src/encoding/mod.rs +++ b/contracts/multisig-prover/src/encoding/mod.rs @@ -123,7 +123,7 @@ impl CommandBatch { ) -> Result { match self.encoder { Encoder::Abi => abi::encode_execute_data(self, quorum, signers), - Encoder::Bcs => todo!(), + Encoder::Bcs => bcs::encode_execute_data(self, quorum, signers), } } } From 74a34f38222e5f1186c806072fa6ad16cdd39e92 Mon Sep 17 00:00:00 2001 From: Christian Gorenflo Date: Mon, 25 Sep 2023 20:24:46 -0400 Subject: [PATCH 06/11] Use large runner for cosmwasm compilation (#127) --- .github/workflows/basic.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/basic.yaml b/.github/workflows/basic.yaml index a53633275..d1954ed86 100644 --- a/.github/workflows/basic.yaml +++ b/.github/workflows/basic.yaml @@ -42,7 +42,7 @@ jobs: cosmwasm-compilation: name: Cosmwasm Compilation - runs-on: ubuntu-latest + runs-on: ubuntu-latest-large steps: - uses: actions/checkout@v4 From 35597300007c3afc46946e45b8bb8b98d1acb7a1 Mon Sep 17 00:00:00 2001 From: Christian Gorenflo Date: Tue, 26 Sep 2023 15:06:02 -0400 Subject: [PATCH 07/11] feat: append msg ids to error for duplicate messages (#126) --- Cargo.lock | 1 + contracts/gateway/Cargo.toml | 1 + contracts/gateway/src/contract.rs | 3 +- contracts/gateway/src/contract/execute.rs | 114 +++++++++++++--------- contracts/gateway/src/error.rs | 5 +- contracts/gateway/tests/tests.rs | 27 ++--- 6 files changed, 89 insertions(+), 62 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0df5c9c3c..779f5331f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4858,6 +4858,7 @@ dependencies = [ "cw-utils 1.0.1", "cw2 0.15.1", "error-stack", + "itertools 0.11.0", "report", "schemars", "serde", diff --git a/contracts/gateway/Cargo.toml b/contracts/gateway/Cargo.toml index 644d1cf78..2e86a980b 100644 --- a/contracts/gateway/Cargo.toml +++ b/contracts/gateway/Cargo.toml @@ -39,6 +39,7 @@ cw-storage-plus = "1.0.1" cw-utils = "1.0.1" cw2 = "0.15.1" error-stack = { workspace = true } +itertools = { workspace = true } report = { workspace = true } schemars = "0.8.10" serde = { version = "1.0.145", default-features = false, features = ["derive"] } diff --git a/contracts/gateway/src/contract.rs b/contracts/gateway/src/contract.rs index 5c75c421b..aebd49b2f 100644 --- a/contracts/gateway/src/contract.rs +++ b/contracts/gateway/src/contract.rs @@ -1,6 +1,7 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult}; +use error_stack::Report; use crate::{ error::ContractError, @@ -39,7 +40,7 @@ pub fn execute( ExecuteMsg::RouteMessages(msgs) => { let router = CONFIG.load(deps.storage)?.router; if info.sender == router { - route_outgoing_messages(deps, msgs) + route_outgoing_messages(deps, msgs).map_err(Report::from) } else { route_incoming_messages(deps, msgs) } diff --git a/contracts/gateway/src/contract/execute.rs b/contracts/gateway/src/contract/execute.rs index 5d269c23f..27f6b2895 100644 --- a/contracts/gateway/src/contract/execute.rs +++ b/contracts/gateway/src/contract/execute.rs @@ -1,80 +1,50 @@ -use connection_router::state::{CrossChainId, NewMessage}; use cosmwasm_std::{to_binary, QueryRequest, WasmMsg, WasmQuery}; +use error_stack::{Report, ResultExt}; +use itertools::Itertools; + +use connection_router::state::{CrossChainId, NewMessage}; use crate::{events::GatewayEvent, state::OUTGOING_MESSAGES}; use super::*; -fn contains_duplicates(msgs: &mut Vec) -> bool { - let orig_len = msgs.len(); - msgs.sort_unstable_by_key(|msg| msg.cc_id.to_string()); - msgs.dedup_by(|a, b| a.cc_id == b.cc_id); - orig_len != msgs.len() -} - -fn partition_by_verified( - deps: DepsMut, - msgs: Vec, -) -> Result<(Vec, Vec), ContractError> { - let verifier = CONFIG.load(deps.storage)?.verifier; - - let query_msg = aggregate_verifier::msg::QueryMsg::IsVerified { - messages: msgs.clone(), - }; - let query_response: Vec<(CrossChainId, bool)> = - deps.querier.query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: verifier.to_string(), - msg: to_binary(&query_msg)?, - }))?; - - Ok(msgs.into_iter().partition(|msg| -> bool { - match query_response.iter().find(|r| msg.cc_id == r.0) { - Some((_, v)) => *v, - None => false, - } - })) -} - pub fn verify_messages( deps: DepsMut, - mut msgs: Vec, -) -> Result { - let config = CONFIG.load(deps.storage)?; - let verifier = config.verifier; + msgs: Vec, +) -> error_stack::Result { + ensure_unique_ids(&msgs)?; - if contains_duplicates(&mut msgs) { - return Err(ContractError::DuplicateMessageID); - } + let verifier = load_config(&deps)?.verifier; - let (_, unverified) = partition_by_verified(deps, msgs)?; + let (_, unverified) = partition_by_verified(deps, msgs).map_err(Report::from)?; Ok(Response::new().add_message(WasmMsg::Execute { contract_addr: verifier.to_string(), msg: to_binary(&aggregate_verifier::msg::ExecuteMsg::VerifyMessages { messages: unverified, - })?, + }) + .map_err(ContractError::from)?, funds: vec![], })) } pub fn route_incoming_messages( deps: DepsMut, - mut msgs: Vec, -) -> Result { - let router = CONFIG.load(deps.storage)?.router; + msgs: Vec, +) -> error_stack::Result { + ensure_unique_ids(&msgs)?; - if contains_duplicates(&mut msgs) { - return Err(ContractError::DuplicateMessageID); - } + let router = load_config(&deps)?.router; - let (verified, unverified) = partition_by_verified(deps, msgs.clone())?; + let (verified, unverified) = partition_by_verified(deps, msgs).map_err(Report::from)?; Ok(Response::new() .add_message(WasmMsg::Execute { contract_addr: router.to_string(), msg: to_binary(&connection_router::msg::ExecuteMsg::RouteMessages( verified.clone(), - ))?, + )) + .map_err(ContractError::from)?, funds: vec![], }) .add_events( @@ -102,3 +72,51 @@ pub fn route_outgoing_messages( .map(|msg| GatewayEvent::MessageRouted { msg }.into()), )) } + +fn partition_by_verified( + deps: DepsMut, + msgs: Vec, +) -> error_stack::Result<(Vec, Vec), ContractError> { + let verifier = load_config(&deps)?.verifier; + + let query_msg = aggregate_verifier::msg::QueryMsg::IsVerified { + messages: msgs.clone(), + }; + let query_response: Vec<(CrossChainId, bool)> = deps + .querier + .query(&QueryRequest::Wasm(WasmQuery::Smart { + contract_addr: verifier.to_string(), + msg: to_binary(&query_msg).map_err(ContractError::from)?, + })) + .map_err(ContractError::from)?; + + Ok(msgs.into_iter().partition(|msg| -> bool { + match query_response.iter().find(|r| msg.cc_id == r.0) { + Some((_, v)) => *v, + None => false, + } + })) +} + +fn load_config(deps: &DepsMut) -> error_stack::Result { + let cfg = CONFIG + .load(deps.storage) + .change_context(ContractError::ConfigNotFound)?; + Ok(cfg) +} + +fn ensure_unique_ids(msgs: &[NewMessage]) -> error_stack::Result<(), ContractError> { + let duplicates: Vec<_> = msgs + .iter() + // the following two map instructions are separated on purpose + // so the duplicate check is done on the typed id instead of just a string + .map(|m| &m.cc_id) + .duplicates() + .map(|cc_id| cc_id.to_string()) + .collect(); + if !duplicates.is_empty() { + return Err(ContractError::DuplicateMessageIds) + .attach_printable(duplicates.iter().join(", ")); + } + Ok(()) +} diff --git a/contracts/gateway/src/error.rs b/contracts/gateway/src/error.rs index 5af89069c..7a1b451d3 100644 --- a/contracts/gateway/src/error.rs +++ b/contracts/gateway/src/error.rs @@ -14,5 +14,8 @@ pub enum ContractError { SenderNotRouter, #[error("batch contains duplicate message ids")] - DuplicateMessageID, + DuplicateMessageIds, + + #[error("could not find contract config")] + ConfigNotFound, } diff --git a/contracts/gateway/tests/tests.rs b/contracts/gateway/tests/tests.rs index 01bfa690a..9fbc278d6 100644 --- a/contracts/gateway/tests/tests.rs +++ b/contracts/gateway/tests/tests.rs @@ -756,12 +756,14 @@ fn duplicate_message_id() { &[], ) .unwrap_err(); - assert_eq!( - err.downcast::() - .unwrap() - .to_string(), - axelar_wasm_std::ContractError::from(ContractError::DuplicateMessageID).to_string() - ); + + assert!(err + .downcast::() + .unwrap() + .to_string() + .contains( + &axelar_wasm_std::ContractError::from(ContractError::DuplicateMessageIds).to_string() + )); let err = app .execute_contract( @@ -771,12 +773,13 @@ fn duplicate_message_id() { &[], ) .unwrap_err(); - assert_eq!( - err.downcast::() - .unwrap() - .to_string(), - axelar_wasm_std::ContractError::from(ContractError::DuplicateMessageID).to_string() - ); + assert!(err + .downcast::() + .unwrap() + .to_string() + .contains( + &axelar_wasm_std::ContractError::from(ContractError::DuplicateMessageIds).to_string() + )); //verify one of them mark_messages_as_verified(&mut app, verifier_address.clone(), msgs[0..1].to_vec()); From 8ad0b07a74eda12a55dfad01952009c42b7f7802 Mon Sep 17 00:00:00 2001 From: Fahim Ahmed <68152521+fahimahmedx@users.noreply.github.com> Date: Thu, 28 Sep 2023 10:12:28 -0400 Subject: [PATCH 08/11] refactor: refactor some worker_set functions (#128) * task: refactor some worker_set functions * refactor code for initializing a worker set * fix lint * fix formatting * update helper functions * fix lints * remove unwraps() * remove unwrap() again * fix lint * resolve redundant match statement --- contracts/multisig-prover/src/execute.rs | 140 +++++++++++++++-------- 1 file changed, 95 insertions(+), 45 deletions(-) diff --git a/contracts/multisig-prover/src/execute.rs b/contracts/multisig-prover/src/execute.rs index 1259af7ef..02173b7a8 100644 --- a/contracts/multisig-prover/src/execute.rs +++ b/contracts/multisig-prover/src/execute.rs @@ -1,5 +1,5 @@ use cosmwasm_std::{ - to_binary, wasm_execute, Addr, Deps, DepsMut, Env, QuerierWrapper, QueryRequest, Response, + to_binary, wasm_execute, Addr, DepsMut, Env, QuerierWrapper, QueryRequest, Response, Storage, SubMsg, WasmQuery, }; use multisig::key::{KeyType, PublicKey}; @@ -142,62 +142,103 @@ fn get_workers_info( }) } -pub fn update_worker_set(deps: DepsMut, env: Env) -> Result { - let config = CONFIG.load(deps.storage)?; - - let workers_info = get_workers_info(&deps, &env, &config)?; +fn get_next_worker_set( + deps: &DepsMut, + env: &Env, + config: &Config, +) -> Result, ContractError> { + let workers_info = get_workers_info(deps, env, config)?; + let cur_worker_set = CURRENT_WORKER_SET.may_load(deps.storage)?; let new_worker_set = WorkerSet::new( workers_info.pubkeys_by_participant, workers_info.snapshot.quorum.into(), env.block.height, )?; - let cur_worker_set = CURRENT_WORKER_SET.may_load(deps.storage)?; + match cur_worker_set { + Some(cur_worker_set) => { + if should_update_worker_set( + &new_worker_set, + &cur_worker_set, + config.worker_set_diff_threshold as usize, + ) { + Ok(Some(new_worker_set)) + } else { + Ok(None) + } + } + None => Ok(Some(new_worker_set)), + } +} + +fn save_next_worker_set( + storage: &mut dyn Storage, + workers_info: WorkersInfo, + new_worker_set: WorkerSet, +) -> Result<(), ContractError> { + if different_set_in_progress(storage, &new_worker_set) { + return Err(ContractError::WorkerSetConfirmationInProgress); + } + + Ok(NEXT_WORKER_SET.save(storage, &(new_worker_set, workers_info.snapshot))?) +} + +fn initialize_worker_set( + storage: &mut dyn Storage, + new_worker_set: WorkerSet, +) -> Result<(), ContractError> { + let key_id = new_worker_set.id(); // this is really just the worker_set_id + + CURRENT_WORKER_SET.save(storage, &new_worker_set)?; + KEY_ID.save(storage, &key_id)?; + + Ok(()) +} - let key_id = new_worker_set.id(); +fn make_keygen_msg( + key_id: String, + snapshot: axelar_wasm_std::Snapshot, + worker_set: WorkerSet, +) -> multisig::msg::ExecuteMsg { + multisig::msg::ExecuteMsg::KeyGen { + key_id, + snapshot, + pub_keys_by_address: worker_set + .signers + .into_iter() + .map(|signer| { + ( + signer.address.to_string(), + (KeyType::Ecdsa, signer.pub_key.as_ref().into()), + ) + }) + .collect(), + } +} + +pub fn update_worker_set(deps: DepsMut, env: Env) -> Result { + let config = CONFIG.load(deps.storage)?; + let workers_info = get_workers_info(&deps, &env, &config)?; + let cur_worker_set = CURRENT_WORKER_SET.may_load(deps.storage)?; + let new_worker_set = + get_next_worker_set(&deps, &env, &config)?.ok_or(ContractError::WorkerSetUnchanged)?; match cur_worker_set { None => { // if no worker set, just store it and return - CURRENT_WORKER_SET.save(deps.storage, &new_worker_set)?; - - KEY_ID.save(deps.storage, &key_id)?; - - let key_gen_msg = multisig::msg::ExecuteMsg::KeyGen { - key_id, - snapshot: workers_info.snapshot, - pub_keys_by_address: new_worker_set - .signers - .into_iter() - .map(|signer| { - ( - signer.address.to_string(), - (KeyType::Ecdsa, signer.pub_key.as_ref().into()), - ) - }) - .collect(), - }; + initialize_worker_set(deps.storage, new_worker_set.clone())?; + let key_gen_msg = make_keygen_msg( + new_worker_set.id(), + workers_info.snapshot, + new_worker_set.clone(), + ); Ok(Response::new().add_message(wasm_execute(config.multisig, &key_gen_msg, vec![])?)) } Some(cur_worker_set) => { - if !should_update_worker_set( - &new_worker_set, - &cur_worker_set, - config.worker_set_diff_threshold as usize, - ) { - return Err(ContractError::WorkerSetUnchanged); - } - - if different_set_in_progress(deps.as_ref(), &new_worker_set) { - return Err(ContractError::WorkerSetConfirmationInProgress); - } + save_next_worker_set(deps.storage, workers_info, new_worker_set.clone())?; - NEXT_WORKER_SET.save( - deps.storage, - &(new_worker_set.clone(), workers_info.snapshot), - )?; let mut builder = CommandBatchBuilder::new(config.destination_chain_id, config.encoder); builder.add_new_worker_set(new_worker_set)?; @@ -272,8 +313,8 @@ pub fn should_update_worker_set( // Returns true if there is a different worker set pending for confirmation, false if there is no // worker set pending or if the pending set is the same. We can't use direct comparison // because the created_at might be different, so we compare only the signers and threshold. -fn different_set_in_progress(deps: Deps, new_worker_set: &WorkerSet) -> bool { - if let Ok(Some((next_worker_set, _))) = NEXT_WORKER_SET.may_load(deps.storage) { +fn different_set_in_progress(storage: &dyn Storage, new_worker_set: &WorkerSet) -> bool { + if let Ok(Some((next_worker_set, _))) = NEXT_WORKER_SET.may_load(storage) { return next_worker_set.signers != new_worker_set.signers || next_worker_set.threshold != new_worker_set.threshold; } @@ -337,7 +378,10 @@ mod tests { let deps = mock_dependencies(); let new_worker_set = test_data::new_worker_set(); - assert!(!different_set_in_progress(deps.as_ref(), &new_worker_set)); + assert!(!different_set_in_progress( + deps.as_ref().storage, + &new_worker_set + )); } #[test] @@ -351,7 +395,10 @@ mod tests { new_worker_set.created_at += 1; - assert!(!different_set_in_progress(deps.as_ref(), &new_worker_set)); + assert!(!different_set_in_progress( + deps.as_ref().storage, + &new_worker_set + )); } #[test] @@ -365,7 +412,10 @@ mod tests { new_worker_set.signers.pop_first(); - assert!(different_set_in_progress(deps.as_ref(), &new_worker_set)); + assert!(different_set_in_progress( + deps.as_ref().storage, + &new_worker_set + )); } fn snapshot() -> Snapshot { From fcb1f42602c3e5fd210a513674186ec94a93ecbe Mon Sep 17 00:00:00 2001 From: eguajardo Date: Thu, 28 Sep 2023 12:47:56 -0600 Subject: [PATCH 09/11] feat: integrate mdbook documentation tool (#125) * setup mdbook * move readme files to book * rename doc directory and created top level README * remove test anchors * update documentation for contributing to the docs and fix instructions --------- Co-authored-by: Sammy Liu --- README.md | 154 +--------------- doc/README.md | 35 ++++ doc/book.toml | 20 +++ doc/src/SUMMARY.md | 17 ++ doc/src/contracts/aggregate_verifier.md | 0 doc/src/contracts/connection_router.md | 0 doc/src/contracts/gateway.md | 0 .../src/contracts/multisig.md | 0 .../src/contracts/multisig_prover.md | 0 doc/src/contracts/service_registry.md | 0 .../src/contracts/voting_verifier.md | 0 doc/src/contributing/documentation.md | 53 ++++++ doc/src/overview.md | 167 ++++++++++++++++++ doc/theme/head.hbs | 5 + 14 files changed, 301 insertions(+), 150 deletions(-) create mode 100644 doc/README.md create mode 100644 doc/book.toml create mode 100644 doc/src/SUMMARY.md create mode 100644 doc/src/contracts/aggregate_verifier.md create mode 100644 doc/src/contracts/connection_router.md create mode 100644 doc/src/contracts/gateway.md rename contracts/multisig/README.md => doc/src/contracts/multisig.md (100%) rename contracts/multisig-prover/README.md => doc/src/contracts/multisig_prover.md (100%) create mode 100644 doc/src/contracts/service_registry.md rename contracts/voting-verifier/README.md => doc/src/contracts/voting_verifier.md (100%) create mode 100644 doc/src/contributing/documentation.md create mode 100644 doc/src/overview.md create mode 100644 doc/theme/head.hbs diff --git a/README.md b/README.md index 6ca360eec..d7234f6a7 100644 --- a/README.md +++ b/README.md @@ -1,153 +1,7 @@ -# Message Semantics -Structure of a routing packet (`M` in the diagrams) -```rust - struct Message { - id: String, //should be formatted as [source_chain]:[unique identifier], i.e. Ethereum:0x74ac0205b1f8f51023942856145182f0e6fdd41ccb2c8058bf2d89fc67564d56:0 - source_address: String, - source_chain: String, - destination_address: String, - destination_chain: String, - payload_hash: HexBinary - } -``` -# High Level Architecture -Incoming Flow: -```mermaid -flowchart TD -subgraph Axelar - G1{"Gateway"} - G2{"Gateway"} - Vr{"Aggregate Verifier"} - Vo{"Voting verifier"} - R{"Router"} - S{"Service Registry"} -end +# Axelar Amplifier -Relayer --"VerifyMessages([M1,M2])"-->G1 -G1 --"VerifyMessages([M1,M2])"--> Vr -Vr --"VerifyMessages([M1,M2])"--> Vo -Vo --"GetActiveWorkers"--> S -Workers --"Vote(poll_id, votes)"--> Vo +The Interchain Amplifier enables developers to permissionlessly set up connections to the Axelar network. Developers gain access to Axelar's interconnected network of chains and can "amplify" their resources by paying the cost equivalent to developing only one connection. They can establish connections between new ecosystems or existing chains to add new network properties, such as improved security or better delivery and availability. -Relayer --"RouteMessages([M1,M2])"-->G1 -G1 --"RouteMessages([M1,M2])"-->R -R --"RouteMessages([M1,M2])"-->G2 -``` -Outgoing Flow: -```mermaid -flowchart TD -subgraph Axelar - G2{"Gateway"} - P{"Prover"} - M{"Multisig"} - S{"Service Registry"} -end +### Documentation -Relayer --"ConstructProof([M1.id,M2.id])"-->P -P --"GetMessages([M1.id,M2.id])"-->G2 -P --"GetActiveWorkers"-->S -P --"StartSigningSession(key_id, batch_hash)"-->M -Workers --"SubmitSignature(session_id, signature)"-->M -Relayer --"GetProof(multisig_session_id)" --> P -P --"GetSigningSession(session_id)"-->M -``` - -# Event Flow - -In the below diagram, the blue box represents the protocol. All messages flowing into, out of or within the blue box -are part of the protocol. All components within the blue box are on chain. All components outside of the blue box are off chain. - -## Voting Contract Flows -Incoming Message Flow -```mermaid -sequenceDiagram - participant Relayer - box Blue Protocol - participant IncomingGateway - participant Router - participant Verifier - participant Prover - participant Voting Verifier - participant Service Registry - end - participant Worker - Relayer->>IncomingGateway: VerifyMessages([M1,M2]) - IncomingGateway->>Verifier: VerifyMessages([M1,M2]) - Verifier->>Voting Verifier: VerifyMessages([M1,M2]) - Voting Verifier->>Service Registry: GetActiveWorkers - Voting Verifier->>Worker: emit PollStarted - Voting Verifier-->>Verifier: [(M1.id,false),(M2.id,false)] - Verifier-->>IncomingGateway: [(M1.id,false),(M2.id, false)] - IncomingGateway-->>Relayer: [(M1.id,false),(M2.id, false)] - Worker->>Voting Verifier: Vote - Worker->>Voting Verifier: Vote - Worker->>Voting Verifier: EndPoll - - - - Relayer->>IncomingGateway: RouteMessages([M1,M2]) - IncomingGateway->>Verifier: IsVerified([M1,M2]) - Verifier->>Voting Verifier: IsVerified([M1,M2]) - Voting Verifier->>Verifier: [(M1.id,true),(M2.id,true)] - Verifier->>IncomingGateway: [(M1.id,true),(M2.id,true)] - IncomingGateway->>Router: RouteMessages([M1,M2]) - -``` - - -Outgoing Message Flow -```mermaid -sequenceDiagram - participant Relayer - box Blue Protocol - participant OutgoingGateway - participant Router - participant Prover - participant Multisig - end - participant Worker - - - Router->>OutgoingGateway: RouteMessages([M1,M2]) - Relayer->>Prover: ConstructProof([M1.id,M2.id]) - Prover->>OutgoingGateway: GetMessages([M1,M2]) - OutgoingGateway-->>Prover: [M1,M2] - Prover->>Prover: create batch of [M1,M2] - Prover->>Multisig: StartSigningSession(snapshot, batch hash) - Multisig-->>Prover: multisig_session_id - Prover-->>Relayer: multisig_session_id - Worker->>Multisig: SubmitSignature(session_id, signature) - Worker->>Multisig: SubmitSignature(session_id, signature) - Relayer->>Prover: GetProof(multisig_session_id) - Prover->>Multisig: GetSigningSession(session_id) - Multisig-->>Prover: signing session - Prover-->>Relayer: signed batch - -``` - -Prover stores the snapshot of the current signers and passes the snapshot to the multisig contract. -Periodically, the stored snapshot is rotated by the prover controller, which triggers the prover to -query the service registry for an updated snapshot. - - -## Contract Overview - -### Connection Router -[`connection-router`](./contracts/connection-router) is the way messages are passed between different gateways. The router has methods for registering new chains and gateways, updating the address of the registered gateway, and freezing chains (preventing message flow). These methods are only callable by the router admin. Messages are passed to the router from registered gateways, and the router passes those messages to the appropriate gateway based on each message's destination chain. - -### Gateway - [`gateway`](./contracts/gateway) is the entry point for incoming messages. Each gateway corresponds to a single connected external chain. Messages are passed to the gateway in a permissionless manner. For each message passed to the gateway, the gateway checks whether the message has been verified by calling into a linked verifier contract. For each verified message, the gateway passes the message to the router. - -The gateway also accepts messages from the router. These are messages sent from other chains. The gateway trusts that any message being sent from the router was originally sent from the correct source gateway, and verified appropriately by the source verifier. The gateway stores these received messages, which can be later added to a proof, to be relayed to an external chain. - -### Verifier -The verifier contracts are responsible for verifying whether a given message or batch of messages has occurred on a connected external chain. The verifier can take many different forms, such as a [`voting-verifier`](./contracts/voting-verifier) that conducts stake weighted polls for batches of messages, a light client that accepts block headers and merkle tree proofs, a zk proof verifier, etc. The verifier can also be an [`aggregate-verifier`](./contracts/aggregate-verifier), that is linked to 1 or more other verifiers, and defines a security policy such as 2 out of 3 linked verification methods need to report a message as verified. - -### Prover -The prover contract is responsible for constructing proofs of routed messages, to be passed to external chains. The most common example of this is the [`multisig-prover`](./contracts/multisig-prover) that constructs signed batches of routed messages, which are then relayed (permissionlessly) to an external chain. In this example, the prover fetches the messages from the gateway, and interacts with the multisig contract to conduct the signing. - -### Multisig Contract - [`multisig`](./contracts/multisig) is responsible for signing arbitrary blobs of data. Contracts register with the multisig contract to generate a key id, and then use that key id to initiate signing sessions. Off chain workers associated with the key id sign messages when new signing sessions are created. - -### Service Registry - [`service-registry`](./contracts/service-registry) is responsible for tracking workers associated with specific services. Two example services are voting and sigining. Workers must be authorized to join a service via governance vote. Once authorized, workers must also bond a sufficient amount of stake before becoming active in the service. Services query the service registry to create weighted snapshots of the active worker set. +High level documentation and diagrams can be found in the [doc](./doc/README.md) directory. diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 000000000..57c04fa3c --- /dev/null +++ b/doc/README.md @@ -0,0 +1,35 @@ +## How to read the docs + +You can directly navigate through the markdown files [here](./src) or build the book locally using `mdbook`. + +## Prerequisites to build book + +Install required packages + +```bash +cargo install mdbook +cargo install mdbook-mermaid +cargo install mdbook-linkcheck +``` + +## Build the book + +From the project root directory run: + +```bash +mdbook build doc +``` + +Rendered book will be generated in `target/book` from root directory + +## Serve the book locally + +To open the book in your browser run: + +```bash +mdbook serve doc --open +``` + +## Contributing + +Information about how to contribute to the documentation can be found in the documentation chapter [here](http://localhost:3000/contributing/documentation.html) diff --git a/doc/book.toml b/doc/book.toml new file mode 100644 index 000000000..83431971c --- /dev/null +++ b/doc/book.toml @@ -0,0 +1,20 @@ +[book] +language = "en" +multilingual = false +src = "src" +title = "Amplifier Documentation" + +[build] +build-dir = "../target/book" +create-missing = false + +[preprocessor] + +[preprocessor.mermaid] +command = "mdbook-mermaid" + +[output.html] + +[output.linkcheck] +warning-policy = "error" +traverse-parent-directories = true diff --git a/doc/src/SUMMARY.md b/doc/src/SUMMARY.md new file mode 100644 index 000000000..791010b84 --- /dev/null +++ b/doc/src/SUMMARY.md @@ -0,0 +1,17 @@ +# Summary + +[Overview](./overview.md) + +# Contracts + +- [Service Registry](./contracts/service_registry.md) +- [Connection Router](./contracts/connection_router.md) +- [Multisig](./contracts/multisig.md) +- [Gateway](./contracts/gateway.md) +- [Aggregate Verifier](./contracts/aggregate_verifier.md) +- [Voting Verifier](./contracts/voting_verifier.md) +- [Multisig Prover](./contracts/multisig_prover.md) + +# Contributing + +- [Documentation](./contributing/documentation.md) diff --git a/doc/src/contracts/aggregate_verifier.md b/doc/src/contracts/aggregate_verifier.md new file mode 100644 index 000000000..e69de29bb diff --git a/doc/src/contracts/connection_router.md b/doc/src/contracts/connection_router.md new file mode 100644 index 000000000..e69de29bb diff --git a/doc/src/contracts/gateway.md b/doc/src/contracts/gateway.md new file mode 100644 index 000000000..e69de29bb diff --git a/contracts/multisig/README.md b/doc/src/contracts/multisig.md similarity index 100% rename from contracts/multisig/README.md rename to doc/src/contracts/multisig.md diff --git a/contracts/multisig-prover/README.md b/doc/src/contracts/multisig_prover.md similarity index 100% rename from contracts/multisig-prover/README.md rename to doc/src/contracts/multisig_prover.md diff --git a/doc/src/contracts/service_registry.md b/doc/src/contracts/service_registry.md new file mode 100644 index 000000000..e69de29bb diff --git a/contracts/voting-verifier/README.md b/doc/src/contracts/voting_verifier.md similarity index 100% rename from contracts/voting-verifier/README.md rename to doc/src/contracts/voting_verifier.md diff --git a/doc/src/contributing/documentation.md b/doc/src/contributing/documentation.md new file mode 100644 index 000000000..48a4590ac --- /dev/null +++ b/doc/src/contributing/documentation.md @@ -0,0 +1,53 @@ +# Contributing to documentation + +Amplifier documentation uses the tool [mdbook](https://rust-lang.github.io/mdBook/) to generate this book from `.md` files. Documentation files can be found under the `doc` directory in the [project root](https://github.com/axelarnetwork/axelar-amplifier) + +## Reference code snippets with ANCHOR + +Use `ANCHOR: ` and `ANCHOR_END: ` to label code snippets in rust files. Make sure to not use triple slashes `///` for anchors in the code snippets or they will be interpreted as part of the struct documentation + +```rust +// ANCHOR: events + +pub struct MyEvent { + pub field: u32 +} + +// ANCHOR_END: events +``` + +Then reference the code snippet in the book with `\{{#include :}}` + +```rust,no_run,no_playground +\{{#include ../contracts/multisig/src/events.rs:events}} +``` + +See [Including portions of a file](https://rust-lang.github.io/mdBook/format/mdbook.html?highlight=include#including-portions-of-a-file) for more info + +Note: [Include directives to missing files do not return error](https://github.com/rust-lang/mdBook/issues/1094) + +## Mermaid diagram + +Mermaid diagrams can be rendered in the book automatically thanks to the configured preprocessor `mdbook-mermaid` + +```mermaid +flowchart TD +subgraph Axelar + G1{"Gateway"} + G2{"Gateway"} + Vr{"Aggregate Verifier"} + Vo{"Voting verifier"} + R{"Router"} + S{"Service Registry"} +end + +Relayer --"VerifyMessages([M1,M2])"-->G1 +G1 --"VerifyMessages([M1,M2])"--> Vr +Vr --"VerifyMessages([M1,M2])"--> Vo +Vo --"GetActiveWorkers"--> S +Workers --"Vote(poll_id, votes)"--> Vo + +Relayer --"RouteMessages([M1,M2])"-->G1 +G1 --"RouteMessages([M1,M2])"-->R +R --"RouteMessages([M1,M2])"-->G2 +``` diff --git a/doc/src/overview.md b/doc/src/overview.md new file mode 100644 index 000000000..1395af04a --- /dev/null +++ b/doc/src/overview.md @@ -0,0 +1,167 @@ +# Message Semantics + +Structure of a routing packet (`M` in the diagrams) + +```rust + struct Message { + id: String, //should be formatted as [source_chain]:[unique identifier], i.e. Ethereum:0x74ac0205b1f8f51023942856145182f0e6fdd41ccb2c8058bf2d89fc67564d56:0 + source_address: String, + source_chain: String, + destination_address: String, + destination_chain: String, + payload_hash: HexBinary + } +``` + +# High Level Architecture + +Incoming Flow: + +```mermaid +flowchart TD +subgraph Axelar + G1{"Gateway"} + G2{"Gateway"} + Vr{"Aggregate Verifier"} + Vo{"Voting verifier"} + R{"Router"} + S{"Service Registry"} +end + +Relayer --"VerifyMessages([M1,M2])"-->G1 +G1 --"VerifyMessages([M1,M2])"--> Vr +Vr --"VerifyMessages([M1,M2])"--> Vo +Vo --"GetActiveWorkers"--> S +Workers --"Vote(poll_id, votes)"--> Vo + +Relayer --"RouteMessages([M1,M2])"-->G1 +G1 --"RouteMessages([M1,M2])"-->R +R --"RouteMessages([M1,M2])"-->G2 +``` + +Outgoing Flow: + +```mermaid +flowchart TD +subgraph Axelar + G2{"Gateway"} + P{"Prover"} + M{"Multisig"} + S{"Service Registry"} +end + +Relayer --"ConstructProof([M1.id,M2.id])"-->P +P --"GetMessages([M1.id,M2.id])"-->G2 +P --"GetActiveWorkers"-->S +P --"StartSigningSession(key_id, batch_hash)"-->M +Workers --"SubmitSignature(session_id, signature)"-->M +Relayer --"GetProof(multisig_session_id)" --> P +P --"GetSigningSession(session_id)"-->M +``` + +# Event Flow + +In the below diagram, the blue box represents the protocol. All messages flowing into, out of or within the blue box +are part of the protocol. All components within the blue box are on chain. All components outside of the blue box are off chain. + +## Voting Contract Flows + +Incoming Message Flow + +```mermaid +sequenceDiagram + participant Relayer + box Blue Protocol + participant IncomingGateway + participant Router + participant Verifier + participant Prover + participant Voting Verifier + participant Service Registry + end + participant Worker + Relayer->>IncomingGateway: VerifyMessages([M1,M2]) + IncomingGateway->>Verifier: VerifyMessages([M1,M2]) + Verifier->>Voting Verifier: VerifyMessages([M1,M2]) + Voting Verifier->>Service Registry: GetActiveWorkers + Voting Verifier->>Worker: emit PollStarted + Voting Verifier-->>Verifier: [(M1.id,false),(M2.id,false)] + Verifier-->>IncomingGateway: [(M1.id,false),(M2.id, false)] + IncomingGateway-->>Relayer: [(M1.id,false),(M2.id, false)] + Worker->>Voting Verifier: Vote + Worker->>Voting Verifier: Vote + Worker->>Voting Verifier: EndPoll + + + + Relayer->>IncomingGateway: RouteMessages([M1,M2]) + IncomingGateway->>Verifier: IsVerified([M1,M2]) + Verifier->>Voting Verifier: IsVerified([M1,M2]) + Voting Verifier->>Verifier: [(M1.id,true),(M2.id,true)] + Verifier->>IncomingGateway: [(M1.id,true),(M2.id,true)] + IncomingGateway->>Router: RouteMessages([M1,M2]) + +``` + +Outgoing Message Flow + +```mermaid +sequenceDiagram + participant Relayer + box Blue Protocol + participant OutgoingGateway + participant Router + participant Prover + participant Multisig + end + participant Worker + + + Router->>OutgoingGateway: RouteMessages([M1,M2]) + Relayer->>Prover: ConstructProof([M1.id,M2.id]) + Prover->>OutgoingGateway: GetMessages([M1,M2]) + OutgoingGateway-->>Prover: [M1,M2] + Prover->>Prover: create batch of [M1,M2] + Prover->>Multisig: StartSigningSession(snapshot, batch hash) + Multisig-->>Prover: multisig_session_id + Prover-->>Relayer: multisig_session_id + Worker->>Multisig: SubmitSignature(session_id, signature) + Worker->>Multisig: SubmitSignature(session_id, signature) + Relayer->>Prover: GetProof(multisig_session_id) + Prover->>Multisig: GetSigningSession(session_id) + Multisig-->>Prover: signing session + Prover-->>Relayer: signed batch + +``` + +Prover stores the snapshot of the current signers and passes the snapshot to the multisig contract. +Periodically, the stored snapshot is rotated by the prover controller, which triggers the prover to +query the service registry for an updated snapshot. + +## Contract Overview + +### Connection Router + +[`connection-router`](./contracts/connection_router.md) is the way messages are passed between different gateways. The router has methods for registering new chains and gateways, updating the address of the registered gateway, and freezing chains (preventing message flow). These methods are only callable by the router admin. Messages are passed to the router from registered gateways, and the router passes those messages to the appropriate gateway based on each message's destination chain. + +### Gateway + +[`gateway`](./contracts/gateway.md) is the entry point for incoming messages. Each gateway corresponds to a single connected external chain. Messages are passed to the gateway in a permissionless manner. For each message passed to the gateway, the gateway checks whether the message has been verified by calling into a linked verifier contract. For each verified message, the gateway passes the message to the router. + +The gateway also accepts messages from the router. These are messages sent from other chains. The gateway trusts that any message being sent from the router was originally sent from the correct source gateway, and verified appropriately by the source verifier. The gateway stores these received messages, which can be later added to a proof, to be relayed to an external chain. + +### Verifier + +The verifier contracts are responsible for verifying whether a given message or batch of messages has occurred on a connected external chain. The verifier can take many different forms, such as a [`voting-verifier`](./contracts/voting_verifier.md) that conducts stake weighted polls for batches of messages, a light client that accepts block headers and merkle tree proofs, a zk proof verifier, etc. The verifier can also be an [`aggregate-verifier`](./contracts/aggregate_verifier.md), that is linked to 1 or more other verifiers, and defines a security policy such as 2 out of 3 linked verification methods need to report a message as verified. + +### Prover + +The prover contract is responsible for constructing proofs of routed messages, to be passed to external chains. The most common example of this is the [`multisig-prover`](./contracts/multisig_prover.md) that constructs signed batches of routed messages, which are then relayed (permissionlessly) to an external chain. In this example, the prover fetches the messages from the gateway, and interacts with the multisig contract to conduct the signing. + +### Multisig Contract + +[`multisig`](./contracts/multisig.md) is responsible for signing arbitrary blobs of data. Contracts register with the multisig contract to generate a key id, and then use that key id to initiate signing sessions. Off chain workers associated with the key id sign messages when new signing sessions are created. + +### Service Registry + +[`service-registry`](./contracts/service_registry.md) is responsible for tracking workers associated with specific services. Two example services are voting and sigining. Workers must be authorized to join a service via governance vote. Once authorized, workers must also bond a sufficient amount of stake before becoming active in the service. Services query the service registry to create weighted snapshots of the active worker set. diff --git a/doc/theme/head.hbs b/doc/theme/head.hbs new file mode 100644 index 000000000..45b22f378 --- /dev/null +++ b/doc/theme/head.hbs @@ -0,0 +1,5 @@ + \ No newline at end of file From e715afaf296e40a184e6f2f23679b99550d5d2ad Mon Sep 17 00:00:00 2001 From: Christian Gorenflo Date: Thu, 28 Sep 2023 16:27:50 -0400 Subject: [PATCH 10/11] refactor: isolate side-effects for easier unit testing of the gateway contract (#129) --- Cargo.lock | 1 + contracts/gateway/Cargo.toml | 1 + contracts/gateway/src/contract.rs | 41 +- contracts/gateway/src/contract/execute.rs | 642 ++++++++++++++--- contracts/gateway/src/contract/query.rs | 50 ++ contracts/gateway/src/error.rs | 24 +- contracts/gateway/src/state.rs | 38 +- contracts/gateway/tests/mock.rs | 196 ------ contracts/gateway/tests/tests.rs | 820 ---------------------- 9 files changed, 671 insertions(+), 1142 deletions(-) create mode 100644 contracts/gateway/src/contract/query.rs delete mode 100644 contracts/gateway/tests/mock.rs delete mode 100644 contracts/gateway/tests/tests.rs diff --git a/Cargo.lock b/Cargo.lock index 779f5331f..7b864cf66 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4859,6 +4859,7 @@ dependencies = [ "cw2 0.15.1", "error-stack", "itertools 0.11.0", + "mockall", "report", "schemars", "serde", diff --git a/contracts/gateway/Cargo.toml b/contracts/gateway/Cargo.toml index 2e86a980b..8efa3e877 100644 --- a/contracts/gateway/Cargo.toml +++ b/contracts/gateway/Cargo.toml @@ -40,6 +40,7 @@ cw-utils = "1.0.1" cw2 = "0.15.1" error-stack = { workspace = true } itertools = { workspace = true } +mockall = "0.11.3" report = { workspace = true } schemars = "0.8.10" serde = { version = "1.0.145", default-features = false, features = ["derive"] } diff --git a/contracts/gateway/src/contract.rs b/contracts/gateway/src/contract.rs index aebd49b2f..cfbcfc429 100644 --- a/contracts/gateway/src/contract.rs +++ b/contracts/gateway/src/contract.rs @@ -1,17 +1,15 @@ #[cfg(not(feature = "library"))] use cosmwasm_std::entry_point; -use cosmwasm_std::{to_binary, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult}; -use error_stack::Report; +use cosmwasm_std::{Binary, Deps, DepsMut, Env, MessageInfo, Response}; +use crate::contract::execute::Contract; use crate::{ - error::ContractError, msg::{ExecuteMsg, InstantiateMsg, QueryMsg}, - state::{Config, CONFIG, OUTGOING_MESSAGES}, + state::{Config, CONFIG}, }; -use self::execute::{route_incoming_messages, route_outgoing_messages, verify_messages}; - mod execute; +mod query; #[cfg_attr(not(feature = "library"), entry_point)] pub fn instantiate( @@ -35,33 +33,22 @@ pub fn execute( info: MessageInfo, msg: ExecuteMsg, ) -> Result { + let mut contract = Contract::new(deps); match msg { - ExecuteMsg::VerifyMessages(msgs) => verify_messages(deps, msgs), - ExecuteMsg::RouteMessages(msgs) => { - let router = CONFIG.load(deps.storage)?.router; - if info.sender == router { - route_outgoing_messages(deps, msgs).map_err(Report::from) - } else { - route_incoming_messages(deps, msgs) - } - } + ExecuteMsg::VerifyMessages(msgs) => contract.verify_messages(msgs), + ExecuteMsg::RouteMessages(msgs) => contract.route_messages(info.sender, msgs), } .map_err(axelar_wasm_std::ContractError::from) } #[cfg_attr(not(feature = "library"), entry_point)] -pub fn query(deps: Deps, _env: Env, msg: QueryMsg) -> StdResult { +pub fn query( + deps: Deps, + _env: Env, + msg: QueryMsg, +) -> Result { match msg { - QueryMsg::GetMessages { - message_ids: cross_chain_ids, - } => { - let mut msgs = vec![]; - - for id in cross_chain_ids { - msgs.push(OUTGOING_MESSAGES.load(deps.storage, id)?); - } - - to_binary(&msgs) - } + QueryMsg::GetMessages { message_ids } => query::get_messages(deps, message_ids), } + .map_err(axelar_wasm_std::ContractError::from) } diff --git a/contracts/gateway/src/contract/execute.rs b/contracts/gateway/src/contract/execute.rs index 27f6b2895..9d6e9655e 100644 --- a/contracts/gateway/src/contract/execute.rs +++ b/contracts/gateway/src/contract/execute.rs @@ -1,111 +1,156 @@ -use cosmwasm_std::{to_binary, QueryRequest, WasmMsg, WasmQuery}; -use error_stack::{Report, ResultExt}; +use std::collections::HashMap; + +use cosmwasm_std::{to_binary, Addr, DepsMut, Response, WasmMsg}; +use error_stack::{Result, ResultExt}; use itertools::Itertools; -use connection_router::state::{CrossChainId, NewMessage}; +use crate::contract::query; +use crate::contract::query::Verifier; +use crate::error::ContractError; +use connection_router::state::NewMessage; -use crate::{events::GatewayEvent, state::OUTGOING_MESSAGES}; +use crate::events::GatewayEvent; +use crate::state; +use crate::state::{Config, Store}; -use super::*; +pub struct Contract +where + V: Verifier, + S: Store, +{ + pub config: Config, + pub verifier: V, + pub store: S, +} -pub fn verify_messages( - deps: DepsMut, - msgs: Vec, -) -> error_stack::Result { - ensure_unique_ids(&msgs)?; +impl<'a> Contract, state::GatewayStore<'a>> { + pub fn new(deps: DepsMut) -> Contract { + let store = state::GatewayStore { + storage: deps.storage, + }; + let config = store.load_config(); + let verifier_addr = config.verifier.clone(); + Contract { + config, + store, + verifier: query::VerifierApi { + address: verifier_addr, + querier: deps.querier, + }, + } + } +} - let verifier = load_config(&deps)?.verifier; +impl Contract +where + V: Verifier, + S: Store, +{ + pub fn verify_messages(&self, msgs: Vec) -> Result { + // short circuit if there are no messages there is no need to interact with the verifier so it saves gas + if msgs.is_empty() { + return Ok(Response::new()); + } - let (_, unverified) = partition_by_verified(deps, msgs).map_err(Report::from)?; + ensure_unique_ids(&msgs)?; - Ok(Response::new().add_message(WasmMsg::Execute { - contract_addr: verifier.to_string(), - msg: to_binary(&aggregate_verifier::msg::ExecuteMsg::VerifyMessages { - messages: unverified, - }) - .map_err(ContractError::from)?, - funds: vec![], - })) -} + let (_, unverified) = self.partition_by_verified(msgs)?; -pub fn route_incoming_messages( - deps: DepsMut, - msgs: Vec, -) -> error_stack::Result { - ensure_unique_ids(&msgs)?; + // short circuit if there are no unverified messages + // there is no need to interact with the verifier so it saves gas + if unverified.is_empty() { + return Ok(Response::new()); + } - let router = load_config(&deps)?.router; + Ok(Response::new().add_message(WasmMsg::Execute { + contract_addr: self.config.verifier.to_string(), + msg: to_binary(&aggregate_verifier::msg::ExecuteMsg::VerifyMessages { + messages: unverified, + }) + .change_context(ContractError::CreateVerifierExecuteMsg)?, + funds: vec![], + })) + } - let (verified, unverified) = partition_by_verified(deps, msgs).map_err(Report::from)?; + pub fn route_messages( + &mut self, + sender: Addr, + msgs: Vec, + ) -> Result { + if sender == self.config.router { + self.route_outgoing_messages(msgs) + } else { + self.route_incoming_messages(msgs) + } + } - Ok(Response::new() - .add_message(WasmMsg::Execute { - contract_addr: router.to_string(), - msg: to_binary(&connection_router::msg::ExecuteMsg::RouteMessages( - verified.clone(), - )) - .map_err(ContractError::from)?, - funds: vec![], - }) - .add_events( - verified - .into_iter() + fn route_outgoing_messages( + &mut self, + msgs: Vec, + ) -> Result { + ensure_unique_ids(&msgs)?; + + for msg in msgs.iter() { + self.store.save_outgoing_msg(msg.cc_id.clone(), msg)?; + } + + Ok(Response::new().add_events( + msgs.into_iter() .map(|msg| GatewayEvent::MessageRouted { msg }.into()), - ) - .add_events( - unverified - .into_iter() - .map(|msg| GatewayEvent::MessageRoutingFailed { msg }.into()), )) -} - -pub fn route_outgoing_messages( - deps: DepsMut, - msgs: Vec, -) -> Result { - for m in &msgs { - OUTGOING_MESSAGES.save(deps.storage, m.cc_id.clone(), m)?; } - Ok(Response::new().add_events( - msgs.into_iter() - .map(|msg| GatewayEvent::MessageRouted { msg }.into()), - )) -} + fn route_incoming_messages(&self, msgs: Vec) -> Result { + ensure_unique_ids(&msgs)?; -fn partition_by_verified( - deps: DepsMut, - msgs: Vec, -) -> error_stack::Result<(Vec, Vec), ContractError> { - let verifier = load_config(&deps)?.verifier; - - let query_msg = aggregate_verifier::msg::QueryMsg::IsVerified { - messages: msgs.clone(), - }; - let query_response: Vec<(CrossChainId, bool)> = deps - .querier - .query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: verifier.to_string(), - msg: to_binary(&query_msg).map_err(ContractError::from)?, - })) - .map_err(ContractError::from)?; + let (verified, unverified) = self.partition_by_verified(msgs)?; + + let any_verified = !verified.is_empty(); - Ok(msgs.into_iter().partition(|msg| -> bool { - match query_response.iter().find(|r| msg.cc_id == r.0) { - Some((_, v)) => *v, - None => false, + let mut response = Response::new() + .add_events( + verified + .clone() + .into_iter() + .map(|msg| GatewayEvent::MessageRouted { msg }.into()), + ) + .add_events( + unverified + .into_iter() + .map(|msg| GatewayEvent::MessageRoutingFailed { msg }.into()), + ); + + if any_verified { + response = response.add_message(WasmMsg::Execute { + contract_addr: self.config.router.to_string(), + msg: to_binary(&connection_router::msg::ExecuteMsg::RouteMessages(verified)) + .change_context(ContractError::CreateRouterExecuteMsg)?, + funds: vec![], + }) } - })) -} -fn load_config(deps: &DepsMut) -> error_stack::Result { - let cfg = CONFIG - .load(deps.storage) - .change_context(ContractError::ConfigNotFound)?; - Ok(cfg) + Ok(response) + } + + fn partition_by_verified( + &self, + msgs: Vec, + ) -> Result<(Vec, Vec), ContractError> { + let query_response = + self.verifier + .verify(aggregate_verifier::msg::QueryMsg::IsVerified { + messages: msgs.to_vec(), + })?; + + let is_verified = query_response.into_iter().collect::>(); + + Ok(msgs + .into_iter() + .partition(|msg| -> bool { is_verified.get(&msg.cc_id).copied().unwrap_or(false) })) + } } -fn ensure_unique_ids(msgs: &[NewMessage]) -> error_stack::Result<(), ContractError> { +fn ensure_unique_ids(msgs: &[NewMessage]) -> Result<(), ContractError> { let duplicates: Vec<_> = msgs .iter() // the following two map instructions are separated on purpose @@ -120,3 +165,428 @@ fn ensure_unique_ids(msgs: &[NewMessage]) -> error_stack::Result<(), ContractErr } Ok(()) } + +#[cfg(test)] +mod tests { + use crate::contract::execute::Contract; + use crate::contract::query; + use crate::error::ContractError; + use crate::state; + use connection_router::state::{CrossChainId, NewMessage, ID_SEPARATOR}; + use cosmwasm_std::{Addr, CosmosMsg, SubMsg, WasmMsg}; + use error_stack::bail; + use std::collections::HashMap; + use std::sync::{Arc, RwLock}; + + /// If there are messages with duplicate IDs, the gateway should fail + #[test] + fn verify_fail_duplicates() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + let mut msgs = generate_messages(10); + // no messages are verified + let is_verified = HashMap::new(); + let contract = create_contract(msg_store.clone(), is_verified); + + // duplicate some IDs + msgs[5..] + .iter_mut() + .for_each(|msg| msg.cc_id.id = "same_id:000".parse().unwrap()); + + let result = contract.verify_messages(msgs); + assert!(result + .is_err_and(|err| matches!(err.current_context(), ContractError::DuplicateMessageIds))); + } + + /// If all messages are verified, the gateway should not call the verifier + #[test] + fn verify_all_verified() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + let msgs = generate_messages(10); + // mark all generated messages as verified + let is_verified = msgs.iter().map(|msg| (msg.cc_id.clone(), true)).collect(); + let contract = create_contract(msg_store.clone(), is_verified); + + // try zero, one, many messages + let inputs = vec![vec![], msgs[..1].to_vec(), msgs]; + for input in inputs { + let result = contract.verify_messages(input); + assert!(result.is_ok()); + assert_eq!(result.unwrap().messages.len(), 0); + } + } + + /// If none of the messages are verified, the gateway should tell the verifier to verify all + #[test] + fn verify_none_verified() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + let msgs = generate_messages(10); + // no messages are verified + let is_verified = HashMap::new(); + let contract = create_contract(msg_store.clone(), is_verified); + + // try one and many messages (zero messages are tested in verify_all_verified) + let inputs = vec![msgs[..1].to_vec(), msgs]; + + // expect: no error, all input messages get verified + for input in inputs { + let result = contract.verify_messages(input.clone()); + assert!(result.is_ok()); + assert_correct_messages_verified( + result.unwrap().messages, + &contract.config.verifier, + &input, + ); + } + } + + /// If a part of the messages is verified, the gateway should tell the verifier to verify only the unverified messages + #[test] + fn verify_partially_verified() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + let msgs = generate_messages(10); + // half of the messages are verified + let is_verified = msgs[..5] + .iter() + .map(|msg| (msg.cc_id.clone(), true)) + .collect(); + let contract = create_contract(msg_store.clone(), is_verified); + + // expect: no error, only the unverified messages get verified + let result = contract.verify_messages(msgs.clone()); + assert!(result.is_ok()); + assert_correct_messages_verified( + result.unwrap().messages, + &contract.config.verifier, + &msgs[5..], + ); + } + + /// As long as the state of the verifier contract doesn't change, the verify call should always return the same result + #[test] + fn verify_is_idempotent() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + let msgs = generate_messages(10); + // half of the messages are verified + let is_verified = msgs[..5] + .iter() + .map(|msg| (msg.cc_id.clone(), true)) + .collect(); + let contract = create_contract(msg_store.clone(), is_verified); + + // expect: same response when called multiple times and no messages are stored + let result1 = contract.verify_messages(msgs.clone()); + let result2 = contract.verify_messages(msgs.clone()); + assert_eq!(result1.unwrap(), result2.unwrap()); + assert!(msg_store.read().unwrap().is_empty()) + } + + /// If the verifier query returns an error, the gateway should fail + #[test] + fn verify_verifier_fails() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + let msgs = generate_messages(10); + + // make the fake query fail + let mut verifier = query::MockVerifier::new(); + verifier + .expect_verify() + .returning(|_| bail!(ContractError::QueryVerifier)); + let contract = Contract { + verifier, + ..create_contract(msg_store.clone(), HashMap::new()) + }; + + let result = contract.verify_messages(msgs.clone()); + assert!( + result.is_err_and(|err| matches!(err.current_context(), ContractError::QueryVerifier)) + ); + } + + /// If there are messages with duplicate IDs, the gateway should fail + #[test] + fn route_messages_fail_duplicates() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + let mut msgs = generate_messages(10); + // no messages are verified + let is_verified = HashMap::new(); + let mut contract = create_contract(msg_store.clone(), is_verified); + + // senders are "router" and "not a router" + let senders = vec![ + contract.config.router.clone(), + Addr::unchecked("not a router"), + ]; + + // duplicate some IDs + msgs[5..] + .iter_mut() + .for_each(|msg| msg.cc_id.id = "same_id:000".parse().unwrap()); + + for sender in senders { + let result = contract.route_messages(sender, msgs.clone()); + assert!(result.is_err_and(|err| matches!( + err.current_context(), + ContractError::DuplicateMessageIds + ))); + } + } + + /// If all messages are verified, the gateway should + /// 1. call the router if the sender is not a router + /// 2. store the msgs to be picked up by relayers if the sender is a router + #[test] + fn route_all_verified() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + + let msgs = generate_messages(10); + // mark all generated messages as verified + let is_verified = msgs.iter().map(|msg| (msg.cc_id.clone(), true)).collect(); + let mut contract = create_contract(msg_store.clone(), is_verified); + + // try one and many messages (zero messages are tested in route_none_verified) + let inputs = vec![msgs[..1].to_vec(), msgs]; + + for input in inputs { + // expect: send to router when sender is not the router + let result = contract.route_messages(Addr::unchecked("not a router"), input.clone()); + assert_correct_messages_routed( + result.unwrap().messages, + &contract.config.router, + &input, + ); + + // expect: store messages when sender is the router + let result = contract.route_messages(contract.config.router.clone(), input.clone()); + assert_eq!(result.unwrap().messages.len(), 0); + assert_correct_messages_stored(&msg_store, &input); + } + } + + /// If none of the messages are verified, the gateway should + /// 1. not call the router at all if the sender is not a router + /// 2. store all msgs to be picked up by relayers if the sender is a router, because the gateway trusts the router + #[test] + fn route_none_verified() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + let msgs = generate_messages(10); + // no messages are verified + let is_verified = HashMap::new(); + let mut contract = create_contract(msg_store.clone(), is_verified); + + // try zero, one, many messages + let inputs = vec![vec![], msgs[..1].to_vec(), msgs]; + + for input in inputs { + // expect: don't call router when sender is not the router + let result = contract.route_messages(Addr::unchecked("not a router"), input.clone()); + assert_eq!(result.unwrap().messages.len(), 0); + + // expect: store all messages when sender is the router (no verification check) + let result = contract.route_messages(contract.config.router.clone(), input.clone()); + assert_eq!(result.unwrap().messages.len(), 0); + assert_correct_messages_stored(&msg_store, &input); + } + } + + /// If a part of the messages is verified, the gateway should + /// 1. only route verified messages to the router when the sender is not a router + /// 2. store all msgs to be picked up by relayers if the sender is a router + #[test] + fn route_partially_verified() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + let msgs = generate_messages(10); + // half of the messages are verified + let is_verified = msgs[..5] + .iter() + .map(|msg| (msg.cc_id.clone(), true)) + .collect(); + let mut contract = create_contract(msg_store.clone(), is_verified); + + // expect: send verified msgs to router when sender is not the router + let result = contract.route_messages(Addr::unchecked("not a router"), msgs.clone()); + assert_correct_messages_routed( + result.unwrap().messages, + &contract.config.router, + &msgs[..5], + ); + + // expect: store all messages when sender is the router (no verification check) + let result = contract.route_messages(contract.config.router.clone(), msgs.clone()); + assert_eq!(result.unwrap().messages.len(), 0); + assert_correct_messages_stored(&msg_store, &msgs); + } + + /// When calling routing multiple times with the same input, the outcome should always be the same + #[test] + fn route_is_idempotent() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + let msgs = generate_messages(10); + // half of the messages are verified + let is_verified = msgs[..5] + .iter() + .map(|msg| (msg.cc_id.clone(), true)) + .collect(); + let mut contract = create_contract(msg_store.clone(), is_verified); + + let senders = vec![ + contract.config.router.clone(), + Addr::unchecked("not a router"), + ]; + + for sender in senders { + // expect: response and store state are the same for multiple calls + let result1 = contract.route_messages(sender.clone(), msgs.clone()); + let msg_store1 = msg_store.read().unwrap().clone(); + let result2 = contract.route_messages(sender, msgs.clone()); + let msg_store2 = msg_store.read().unwrap().clone(); + assert_eq!(result1.unwrap(), result2.unwrap()); + assert_eq!(msg_store1, msg_store2); + } + } + + /// If the verifier query returns an error, the gateway should + /// 1. fail when the sender is not a router + /// 2. store all messages when the sender is a router (there is no verification check) + #[test] + fn route_verifier_fails() { + let msg_store = Arc::new(RwLock::new(HashMap::new())); + let msgs = generate_messages(10); + + // make the fake query fail + let mut verifier = query::MockVerifier::new(); + verifier + .expect_verify() + .returning(|_| bail!(ContractError::QueryVerifier)); + let mut contract = Contract { + verifier, + ..create_contract(msg_store.clone(), HashMap::new()) + }; + + let result = contract.route_messages(Addr::unchecked("not a router"), msgs.clone()); + assert!( + result.is_err_and(|err| matches!(err.current_context(), ContractError::QueryVerifier)) + ); + + // expect: store all messages when sender is the router (no verification check) + let result = contract.route_messages(contract.config.router.clone(), msgs.clone()); + assert_eq!(result.unwrap().messages.len(), 0); + assert_correct_messages_stored(&msg_store, &msgs); + } + + /// This uses a RwLock for the msg_store so it can also be used in assertions while it is borrowed by the contract + fn create_contract( + // the store mock requires a 'static type that can be moved into the closure, so we need to use an Arc<> here + msg_store: Arc>>, + is_verified: HashMap, + ) -> Contract { + let config = state::Config { + verifier: Addr::unchecked("verifier"), + router: Addr::unchecked("router"), + }; + + let mut store = state::MockStore::new(); + store.expect_load_config().return_const(config.clone()); + store + .expect_save_outgoing_msg() + .returning(move |key, msg: &NewMessage| { + let mut msg_store = msg_store.write().unwrap(); + msg_store.insert(key, msg.clone()); + Ok(()) + }); + + let mut verifier = query::MockVerifier::new(); + verifier.expect_verify().returning(move |msg| match msg { + aggregate_verifier::msg::QueryMsg::IsVerified { messages } => Ok(messages + .into_iter() + .map(|msg: NewMessage| { + ( + msg.cc_id.clone(), + // if the msg is not know to the verifier, it is not verified + is_verified.get(&msg.cc_id).copied().unwrap_or(false), + ) + }) + .collect::>()), + }); + Contract { + config, + store, + verifier, + } + } + + fn generate_messages(count: usize) -> Vec { + (0..count) + .map(|i| NewMessage { + cc_id: CrossChainId { + chain: "mock-chain".parse().unwrap(), + id: format!("{}{}{}", "hash", ID_SEPARATOR, i).parse().unwrap(), + }, + destination_address: "idc".parse().unwrap(), + destination_chain: "mock-chain-2".parse().unwrap(), + source_address: "idc".parse().unwrap(), + payload_hash: vec![i as u8, 0, 0, 0].into(), + }) + .collect() + } + + fn assert_correct_messages_verified( + verified_msgs: Vec, + expected_verifier: &Addr, + expected_msgs: &[NewMessage], + ) { + assert_eq!(verified_msgs.len(), 1); + match verified_msgs[0].clone().msg { + CosmosMsg::Wasm(WasmMsg::Execute { + contract_addr, msg, .. + }) => { + assert_eq!(contract_addr, expected_verifier.to_string()); + + let msg: aggregate_verifier::msg::ExecuteMsg = + serde_json::from_slice(msg.as_slice()).unwrap(); + match msg { + aggregate_verifier::msg::ExecuteMsg::VerifyMessages { messages } => { + assert_eq!(messages.as_slice(), expected_msgs) + } + } + } + _ => panic!("unexpected message type"), + } + } + + fn assert_correct_messages_routed( + routed_msgs: Vec, + expected_router: &Addr, + expected_msgs: &[NewMessage], + ) { + assert_eq!(routed_msgs.len(), 1); + match routed_msgs[0].clone().msg { + CosmosMsg::Wasm(WasmMsg::Execute { + contract_addr, msg, .. + }) => { + assert_eq!(contract_addr, expected_router.to_string()); + + let msg: connection_router::msg::ExecuteMsg = + serde_json::from_slice(msg.as_slice()).unwrap(); + match msg { + connection_router::msg::ExecuteMsg::RouteMessages(messages) => { + assert_eq!(messages.as_slice(), expected_msgs) + } + _ => panic!("unexpected message type"), + } + } + _ => panic!("unexpected message type"), + } + } + + fn assert_correct_messages_stored( + locked_msg_store: &RwLock>, + expected_msgs: &[NewMessage], + ) { + let msg_store = locked_msg_store.read().unwrap(); + assert_eq!((*msg_store).len(), expected_msgs.len()); + + assert!(expected_msgs + .into_iter() + .all(|msg| { msg_store.get(&msg.cc_id).unwrap() == msg })) + } +} diff --git a/contracts/gateway/src/contract/query.rs b/contracts/gateway/src/contract/query.rs new file mode 100644 index 000000000..e80b2dbb1 --- /dev/null +++ b/contracts/gateway/src/contract/query.rs @@ -0,0 +1,50 @@ +use crate::error::ContractError; +use crate::state::OUTGOING_MESSAGES; +use connection_router::state::CrossChainId; +use cosmwasm_std::{to_binary, Addr, Binary, Deps, QuerierWrapper, QueryRequest, WasmQuery}; +use error_stack::{Result, ResultExt}; +use mockall::automock; + +#[automock] +pub trait Verifier { + fn verify( + &self, + msg: aggregate_verifier::msg::QueryMsg, + ) -> Result, ContractError>; +} + +pub struct VerifierApi<'a> { + pub address: Addr, + pub querier: QuerierWrapper<'a>, +} + +impl Verifier for VerifierApi<'_> { + fn verify( + &self, + msg: aggregate_verifier::msg::QueryMsg, + ) -> Result, ContractError> { + self.querier + .query(&QueryRequest::Wasm(WasmQuery::Smart { + contract_addr: self.address.to_string(), + msg: to_binary(&msg).change_context(ContractError::QueryVerifier)?, + })) + .change_context(ContractError::QueryVerifier) + } +} + +pub fn get_messages( + deps: Deps, + cross_chain_ids: Vec, +) -> Result { + let msgs = cross_chain_ids + .into_iter() + .map(|id| { + OUTGOING_MESSAGES + .load(deps.storage, id.clone()) + .change_context(ContractError::LoadOutgoingMessage) + .attach_printable(id.to_string()) + }) + .collect::, _>>()?; + + to_binary(&msgs).change_context(ContractError::LoadOutgoingMessage) +} diff --git a/contracts/gateway/src/error.rs b/contracts/gateway/src/error.rs index 7a1b451d3..0e440ff3a 100644 --- a/contracts/gateway/src/error.rs +++ b/contracts/gateway/src/error.rs @@ -1,21 +1,23 @@ use axelar_wasm_std_derive::IntoContractError; -use cosmwasm_std::StdError; use thiserror::Error; #[derive(Error, Debug, PartialEq, IntoContractError)] pub enum ContractError { - #[error(transparent)] - Std(#[from] StdError), + #[error("batch contains duplicate message ids")] + DuplicateMessageIds, - #[error(transparent)] - RouterError(#[from] connection_router::ContractError), + #[error("could not store outgoing message")] + StoreOutgoingMessage, - #[error("sender is not router")] - SenderNotRouter, + #[error("could not load outgoing message")] + LoadOutgoingMessage, - #[error("batch contains duplicate message ids")] - DuplicateMessageIds, + #[error("could not query the verifier contract")] + QueryVerifier, + + #[error("could not create the execute message to start verification")] + CreateVerifierExecuteMsg, - #[error("could not find contract config")] - ConfigNotFound, + #[error("could not create the execute message to start routing")] + CreateRouterExecuteMsg, } diff --git a/contracts/gateway/src/state.rs b/contracts/gateway/src/state.rs index a73a03923..1d6d5a957 100644 --- a/contracts/gateway/src/state.rs +++ b/contracts/gateway/src/state.rs @@ -1,7 +1,20 @@ +use crate::error::ContractError; use connection_router::state::{CrossChainId, NewMessage}; use cosmwasm_schema::cw_serde; -use cosmwasm_std::Addr; +use cosmwasm_std::{Addr, Storage}; use cw_storage_plus::{Item, Map}; +use error_stack::{Result, ResultExt}; +use mockall::automock; + +#[automock] +pub trait Store { + fn load_config(&self) -> Config; + fn save_outgoing_msg( + &mut self, + key: CrossChainId, + value: &NewMessage, + ) -> Result<(), ContractError>; +} #[cw_serde] pub struct Config { @@ -10,5 +23,26 @@ pub struct Config { } pub const CONFIG: Item = Item::new("config"); - pub const OUTGOING_MESSAGES: Map = Map::new("outgoing_messages"); + +pub struct GatewayStore<'a> { + pub storage: &'a mut dyn Storage, +} + +impl Store for GatewayStore<'_> { + fn load_config(&self) -> Config { + CONFIG + .load(self.storage) + .expect("config should be set during contract instantiation") + } + + fn save_outgoing_msg( + &mut self, + key: CrossChainId, + value: &NewMessage, + ) -> Result<(), ContractError> { + OUTGOING_MESSAGES + .save(self.storage, key, value) + .change_context(ContractError::StoreOutgoingMessage) + } +} diff --git a/contracts/gateway/tests/mock.rs b/contracts/gateway/tests/mock.rs deleted file mode 100644 index a12a8252d..000000000 --- a/contracts/gateway/tests/mock.rs +++ /dev/null @@ -1,196 +0,0 @@ -use connection_router::state::{CrossChainId, NewMessage}; -use cosmwasm_schema::cw_serde; -use cosmwasm_std::{to_binary, Addr, Binary, Deps, DepsMut, Env, MessageInfo, Response, StdResult}; -use cw_multi_test::{App, ContractWrapper, Executor}; -use cw_storage_plus::Map; -use gateway::error::ContractError; - -const MOCK_VERIFIER_MESSAGES: Map = Map::new("verifier_messages"); - -#[cw_serde] -pub enum MockVerifierExecuteMsg { - VerifyMessages { messages: Vec }, - MessagesVerified { messages: Vec }, -} - -pub fn mock_verifier_execute( - deps: DepsMut, - _env: Env, - _info: MessageInfo, - msg: MockVerifierExecuteMsg, -) -> Result { - match msg { - MockVerifierExecuteMsg::VerifyMessages { messages } => { - let mut res = vec![]; - for m in messages { - match MOCK_VERIFIER_MESSAGES - .may_load(deps.storage, serde_json::to_string(&m).unwrap())? - { - Some(b) => res.push((m.cc_id, b)), - None => res.push((m.cc_id, false)), - } - } - Ok(Response::new().set_data(to_binary(&res)?)) - } - MockVerifierExecuteMsg::MessagesVerified { messages } => { - for m in messages { - MOCK_VERIFIER_MESSAGES.save( - deps.storage, - serde_json::to_string(&m).unwrap(), - &true, - )?; - } - Ok(Response::new()) - } - } -} - -#[cw_serde] -pub enum MockVerifierQueryMsg { - IsVerified { messages: Vec }, -} -pub fn mock_verifier_query(deps: Deps, _env: Env, msg: MockVerifierQueryMsg) -> StdResult { - let mut res = vec![]; - - match msg { - MockVerifierQueryMsg::IsVerified { messages } => { - for m in messages { - match MOCK_VERIFIER_MESSAGES - .may_load(deps.storage, serde_json::to_string(&m).unwrap())? - { - Some(v) => res.push((m.cc_id, v)), - None => res.push((m.cc_id, false)), - } - } - } - } - to_binary(&res) -} - -pub fn is_verified( - app: &mut App, - verifier_address: Addr, - msgs: Vec, -) -> Vec<(CrossChainId, bool)> { - app.wrap() - .query_wasm_smart( - verifier_address, - &MockVerifierQueryMsg::IsVerified { messages: msgs }, - ) - .unwrap() -} - -pub fn mark_messages_as_verified(app: &mut App, verifier_address: Addr, msgs: Vec) { - app.execute_contract( - Addr::unchecked("relayer"), - verifier_address.clone(), - &MockVerifierExecuteMsg::MessagesVerified { messages: msgs }, - &[], - ) - .unwrap(); -} - -const MOCK_ROUTER_MESSAGES: Map = Map::new("router_messages"); - -pub fn mock_router_execute( - deps: DepsMut, - _env: Env, - _info: MessageInfo, - msg: connection_router::msg::ExecuteMsg, -) -> Result { - match msg { - connection_router::msg::ExecuteMsg::RouteMessages(msgs) => { - for msg in msgs { - MOCK_ROUTER_MESSAGES.save(deps.storage, msg.cc_id.clone(), &msg)?; - } - } - _ => (), - } - Ok(Response::new()) -} - -#[cw_serde] -pub enum MockRouterQueryMsg { - GetMessages { ids: Vec }, -} -pub fn mock_router_query(deps: Deps, _env: Env, msg: MockRouterQueryMsg) -> StdResult { - let mut msgs = vec![]; - - match msg { - MockRouterQueryMsg::GetMessages { ids } => { - for id in ids { - match MOCK_ROUTER_MESSAGES.may_load(deps.storage, id)? { - Some(m) => msgs.push(m), - None => (), - } - } - } - } - to_binary(&msgs) -} - -pub fn get_router_messages( - app: &mut App, - router_address: Addr, - msgs: Vec, -) -> Vec { - app.wrap() - .query_wasm_smart( - router_address, - &MockRouterQueryMsg::GetMessages { - ids: msgs.into_iter().map(|msg| msg.cc_id).collect(), - }, - ) - .unwrap() -} - -pub fn make_mock_router(app: &mut App) -> Addr { - let code = ContractWrapper::new( - mock_router_execute, - |_, _, _, _: connection_router::msg::InstantiateMsg| { - Ok::(Response::new()) - }, - mock_router_query, - ); - let code_id = app.store_code(Box::new(code)); - - let contract_address = app - .instantiate_contract( - code_id, - Addr::unchecked("router"), - &connection_router::msg::InstantiateMsg { - admin_address: Addr::unchecked("admin").to_string(), - governance_address: Addr::unchecked("governance").to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - contract_address -} - -pub fn make_mock_verifier(app: &mut App) -> Addr { - let code = ContractWrapper::new( - mock_verifier_execute, - |_, _, _, _: aggregate_verifier::msg::InstantiateMsg| { - Ok::(Response::new()) - }, - mock_verifier_query, - ); - let code_id = app.store_code(Box::new(code)); - - let contract_address = app - .instantiate_contract( - code_id, - Addr::unchecked("verifier"), - &aggregate_verifier::msg::InstantiateMsg { - verifier_address: Addr::unchecked("doesn't matter").to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - contract_address -} diff --git a/contracts/gateway/tests/tests.rs b/contracts/gateway/tests/tests.rs deleted file mode 100644 index 9fbc278d6..000000000 --- a/contracts/gateway/tests/tests.rs +++ /dev/null @@ -1,820 +0,0 @@ -use std::collections::HashSet; - -use cosmwasm_std::Addr; -use cw_multi_test::{App, ContractWrapper, Executor}; - -use connection_router::state::{CrossChainId, NewMessage, ID_SEPARATOR}; -use gateway::contract::*; -use gateway::error::ContractError; -use gateway::msg::{ExecuteMsg, InstantiateMsg, QueryMsg}; - -use crate::mock::is_verified; -use crate::mock::{ - get_router_messages, make_mock_router, make_mock_verifier, mark_messages_as_verified, -}; - -pub mod mock; -#[test] -fn verify_one_message() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: Addr::unchecked("router").to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - let msg = generate_messages(1).swap_remove(0); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(vec![]), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), vec![msg.clone()]); - assert_eq!(ret, vec![(msg.cc_id.clone(), false)]); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(vec![msg.clone()]), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), vec![msg.clone()]); - assert_eq!(ret, vec![(msg.cc_id.clone(), false)]); - - mark_messages_as_verified(&mut app, verifier_address.clone(), vec![msg.clone()]); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(vec![msg.clone()]), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), vec![msg.clone()]); - assert_eq!(ret, vec![(msg.cc_id.clone(), true)]); - - // should still return true if queried again - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(vec![msg.clone()]), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), vec![msg.clone()]); - assert_eq!(ret, vec![(msg.cc_id, true)]); -} - -fn generate_messages(count: usize) -> Vec { - let mut msgs = vec![]; - for x in 0..count { - msgs.push(NewMessage { - cc_id: CrossChainId { - chain: "mock-chain".parse().unwrap(), - id: format!("{}{}{}", "hash", ID_SEPARATOR, x).parse().unwrap(), - }, - destination_address: "idc".parse().unwrap(), - destination_chain: "mock-chain-2".parse().unwrap(), - source_address: "idc".parse().unwrap(), - payload_hash: vec![x as u8, 0, 0, 0].into(), - }) - } - msgs -} - -#[test] -fn verify_multiple_messages() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: Addr::unchecked("router").to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - let msgs = generate_messages(10); - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(msgs.clone()), - &[], - ); - - assert!(res.is_ok()); - - let ret = is_verified( - &mut app, - verifier_address.clone(), - msgs.iter() - .map(|msg| msg.clone().try_into().unwrap()) - .collect(), - ); - - let msg_id_set: HashSet<_> = msgs.iter().map(|msg| msg.cc_id.clone()).collect(); - let (_, unverified) = partition_by_verified(&ret); - assert_eq!(msg_id_set, unverified); - - mark_messages_as_verified( - &mut app, - verifier_address.clone(), - msgs.iter().map(|msg| msg.clone()).collect(), - ); - - for _ in 0..2 { - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - let (verified, _) = partition_by_verified(&ret); - assert_eq!(msg_id_set, verified); - } -} - -#[test] -fn verify_multiple_messages_mixed_status() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: Addr::unchecked("router").to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - let msgs = generate_messages(10); - let msgs_verified = &msgs[0..5]; - let msgs_unverified = &msgs[5..10]; - let expected_verified: HashSet<_> = msgs_verified.iter().map(|msg| msg.cc_id.clone()).collect(); - let expected_unverified: HashSet<_> = msgs_unverified - .iter() - .map(|msg| msg.cc_id.clone()) - .collect(); - - mark_messages_as_verified(&mut app, verifier_address.clone(), msgs_verified.to_vec()); - - // same call should return same response - for _ in 0..2 { - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let mut ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - let (verified, unverified) = partition_by_verified(&mut ret); - assert_eq!(expected_verified, verified); - assert_eq!(expected_unverified, unverified); - } - - // mark the rest as verified - mark_messages_as_verified(&mut app, verifier_address.clone(), msgs_unverified.to_vec()); - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let mut ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - let (verified, unverified) = partition_by_verified(&mut ret); - assert!(unverified.is_empty()); - assert_eq!( - msgs.into_iter() - .map(|msg| msg.cc_id) - .collect::>(), - verified - ); -} - -fn partition_by_verified( - ret: &Vec<(CrossChainId, bool)>, -) -> (HashSet, HashSet) { - let verified: HashSet<_> = ret - .into_iter() - .filter_map(|(id, verified)| if *verified { Some(id.clone()) } else { None }) - .collect(); - let unverified: HashSet<_> = ret - .into_iter() - .filter_map(|(id, verified)| if !*verified { Some(id.clone()) } else { None }) - .collect(); - - (verified, unverified) -} - -#[test] -fn execute_one_message() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - let router_address = make_mock_router(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: router_address.to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - let msgs = generate_messages(1); - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages( - msgs.iter() - .map(|msg| msg.clone().try_into().unwrap()) - .collect(), - ), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - assert_eq!( - ret, - msgs.iter() - .map(|msg| (msg.cc_id.clone(), false)) - .collect::>() - ); - - mark_messages_as_verified(&mut app, verifier_address.clone(), msgs.clone()); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - assert_eq!( - ret, - msgs.iter() - .map(|msg| (msg.cc_id.clone(), true)) - .collect::>() - ); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::RouteMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - assert_eq!( - ret, - msgs.iter() - .map(|msg| (msg.cc_id.clone(), true)) - .collect::>() - ); - - let ret = get_router_messages(&mut app, router_address, msgs.clone()); - assert_eq!(ret, msgs); -} - -#[test] -fn execute_multiple_messages() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - let router_address = make_mock_router(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: router_address.to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - let msgs = generate_messages(10); - let expected_messages: HashSet<_> = msgs.iter().map(|msg| msg.cc_id.clone()).collect(); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let mut ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - let (verified, unverified) = partition_by_verified(&mut ret); - assert!(verified.is_empty()); - assert_eq!(expected_messages, unverified); - - mark_messages_as_verified(&mut app, verifier_address.clone(), msgs.clone()); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - let ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - let (verified, unverified) = partition_by_verified(&ret); - assert!(unverified.is_empty()); - assert_eq!(expected_messages, verified); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::RouteMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - let (verified, unverified) = partition_by_verified(&ret); - assert!(unverified.is_empty()); - assert_eq!(expected_messages, verified); - - let ret = get_router_messages(&mut app, router_address, msgs.clone()); - assert_eq!(ret, msgs); -} - -#[test] -fn execute_multiple_messages_mixed_status() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - let router_address = make_mock_router(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: router_address.to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - let msgs = generate_messages(10); - let msgs_verified = &msgs[0..5]; - let msgs_unverified = &msgs[5..10]; - let expected_verified: HashSet<_> = msgs_verified.iter().map(|msg| msg.cc_id.clone()).collect(); - let expected_unverified: HashSet<_> = msgs_unverified - .iter() - .map(|msg| msg.cc_id.clone()) - .collect(); - - mark_messages_as_verified(&mut app, verifier_address.clone(), msgs_verified.to_vec()); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::RouteMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let mut ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - let (verified, unverified) = partition_by_verified(&mut ret); - assert_eq!(expected_verified, verified); - assert_eq!(expected_unverified, unverified); - - let ret = get_router_messages(&mut app, router_address.clone(), msgs_verified.to_vec()); - assert_eq!(ret, msgs_verified); - let ret = get_router_messages(&mut app, router_address, msgs_unverified.to_vec()); - assert_eq!(ret, vec![]); -} - -#[test] -fn execute_not_verified_message() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - let router_address = make_mock_router(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: router_address.to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - let msgs = generate_messages(1); - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::RouteMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - assert_eq!( - ret, - msgs.iter() - .map(|msg| (msg.cc_id.clone(), false)) - .collect::>() - ); - - mark_messages_as_verified(&mut app, verifier_address.clone(), msgs.clone()); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::RouteMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - assert_eq!( - ret, - msgs.iter() - .map(|msg| (msg.cc_id.clone(), true)) - .collect::>() - ); - - let ret = get_router_messages(&mut app, router_address, msgs.clone()); - assert_eq!(ret, msgs); -} - -#[test] -fn execute_pre_verified_message() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - let router_address = make_mock_router(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: router_address.to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - let msgs = generate_messages(1); - - mark_messages_as_verified(&mut app, verifier_address.clone(), msgs.clone()); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::RouteMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - assert_eq!( - ret, - msgs.iter() - .map(|msg| (msg.cc_id.clone(), true)) - .collect::>() - ); - - let ret = get_router_messages(&mut app, router_address, msgs.clone()); - assert_eq!(ret, msgs); -} - -#[test] -fn execute_twice() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - let router_address = make_mock_router(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: router_address.to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - let msgs = generate_messages(1); - - mark_messages_as_verified(&mut app, verifier_address.clone(), msgs.clone()); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::RouteMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - assert_eq!( - ret, - msgs.iter() - .map(|msg| (msg.cc_id.clone(), true)) - .collect::>() - ); - - let ret = get_router_messages(&mut app, router_address, msgs.clone()); - assert_eq!(ret, msgs); - - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::RouteMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs.clone()); - assert_eq!( - ret, - msgs.iter() - .map(|msg| (msg.cc_id.clone(), true)) - .collect::>() - ); -} - -#[test] -fn receive_one_message() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - let router_address = make_mock_router(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: router_address.to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - let msgs = generate_messages(1); - - let res = app.execute_contract( - router_address, - gateway_address.clone(), - &ExecuteMsg::RouteMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let ret: Vec = app - .wrap() - .query_wasm_smart( - gateway_address, - &QueryMsg::GetMessages { - message_ids: msgs.iter().map(|msg| msg.cc_id.clone()).collect(), - }, - ) - .unwrap(); - assert_eq!(ret, msgs); -} - -#[test] -fn receive_many_messages() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - let router_address = make_mock_router(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: router_address.to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - let msgs = generate_messages(10); - - let res = app.execute_contract( - router_address, - gateway_address.clone(), - &ExecuteMsg::RouteMessages(msgs.clone()), - &[], - ); - assert!(res.is_ok()); - - let ret: Vec = app - .wrap() - .query_wasm_smart( - gateway_address, - &QueryMsg::GetMessages { - message_ids: msgs.iter().map(|msg| msg.cc_id.clone()).collect(), - }, - ) - .unwrap(); - assert_eq!(ret, msgs); -} - -#[test] -fn duplicate_message_id() { - let mut app = App::default(); - let verifier_address = make_mock_verifier(&mut app); - let router_address = make_mock_router(&mut app); - - let code = ContractWrapper::new(execute, instantiate, query); - let code_id = app.store_code(Box::new(code)); - - let gateway_address = app - .instantiate_contract( - code_id, - Addr::unchecked("gateway"), - &InstantiateMsg { - verifier_address: verifier_address.to_string(), - router_address: router_address.to_string(), - }, - &[], - "Contract", - None, - ) - .unwrap(); - - // make two different messages with the same ID - let mut msgs = generate_messages(2); - msgs[1].cc_id.id = msgs[0].cc_id.id.clone(); - assert_ne!(msgs[0], msgs[1]); - - let err = app - .execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(msgs.clone()), - &[], - ) - .unwrap_err(); - - assert!(err - .downcast::() - .unwrap() - .to_string() - .contains( - &axelar_wasm_std::ContractError::from(ContractError::DuplicateMessageIds).to_string() - )); - - let err = app - .execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::RouteMessages(msgs.clone()), - &[], - ) - .unwrap_err(); - assert!(err - .downcast::() - .unwrap() - .to_string() - .contains( - &axelar_wasm_std::ContractError::from(ContractError::DuplicateMessageIds).to_string() - )); - - //verify one of them - mark_messages_as_verified(&mut app, verifier_address.clone(), msgs[0..1].to_vec()); - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(msgs[0..1].to_vec()), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs[0..1].to_vec()); - assert_eq!( - ret, - msgs[0..1] - .iter() - .map(|msg| (msg.cc_id.clone(), true)) - .collect::>() - ); - - // other should not be verified - let res = app.execute_contract( - Addr::unchecked("relayer"), - gateway_address.clone(), - &ExecuteMsg::VerifyMessages(msgs[1..2].to_vec()), - &[], - ); - assert!(res.is_ok()); - - let ret = is_verified(&mut app, verifier_address.clone(), msgs[1..2].to_vec()); - assert_eq!( - ret, - msgs[1..2] - .iter() - .map(|msg| (msg.cc_id.clone(), false)) - .collect::>() - ); -} From 9f0a3442607b0ca46d0b662e34bb302e402e38b4 Mon Sep 17 00:00:00 2001 From: Christian Gorenflo Date: Thu, 28 Sep 2023 16:54:01 -0400 Subject: [PATCH 11/11] refactor: move Recoverable types down to Ecdsa instead of being directly on Signature (#130) --- Cargo.lock | 1 + contracts/multisig-prover/src/encoding/abi.rs | 76 +++--- contracts/multisig-prover/src/encoding/bcs.rs | 51 ++-- contracts/multisig-prover/src/encoding/mod.rs | 3 +- .../multisig-prover/src/test/test_data.rs | 3 +- contracts/multisig-prover/src/types.rs | 19 +- contracts/multisig/Cargo.toml | 7 +- contracts/multisig/src/contract.rs | 3 +- contracts/multisig/src/events.rs | 3 +- contracts/multisig/src/key.rs | 224 ++++++++---------- contracts/multisig/src/msg.rs | 3 +- contracts/multisig/src/secp256k1.rs | 4 +- contracts/multisig/src/signing.rs | 7 +- 13 files changed, 182 insertions(+), 222 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7b864cf66..fa56b12a8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7448,6 +7448,7 @@ dependencies = [ "cw-multi-test", "cw-storage-plus 1.1.0", "cw2 0.15.1", + "enum-display-derive", "error-stack", "getrandom 0.2.10", "k256 0.13.1", diff --git a/contracts/multisig-prover/src/encoding/abi.rs b/contracts/multisig-prover/src/encoding/abi.rs index baffc6582..b5bd2199f 100644 --- a/contracts/multisig-prover/src/encoding/abi.rs +++ b/contracts/multisig-prover/src/encoding/abi.rs @@ -8,7 +8,6 @@ use k256::{elliptic_curve::sec1::ToEncodedPoint, PublicKey}; use sha3::{Digest, Keccak256}; use axelar_wasm_std::operators::Operators; -use multisig::key::{NonRecoverable, Recoverability, Recoverable}; use multisig::{key::Signature, msg::Signer}; use crate::{ @@ -63,20 +62,24 @@ pub fn msg_digest(command_batch: &CommandBatch) -> HexBinary { pub fn encode_execute_data( command_batch: &CommandBatch, quorum: Uint256, - signers: Vec<(Signer, Option>)>, + signers: Vec<(Signer, Option)>, ) -> Result { let signers = signers .into_iter() - .map(|(signer, non_recoverable)| { - let recoverable = non_recoverable.and_then(|sig| { - sig.to_recoverable( - command_batch.msg_digest().as_slice(), - &signer.pub_key, - add27, - ) - .ok() - }); - (signer, recoverable) + .map(|(signer, signature)| { + let mut signature = signature; + if let Some(Signature::Ecdsa(nonrecoverable)) = signature { + signature = nonrecoverable + .to_recoverable( + command_batch.msg_digest().as_slice(), + &signer.pub_key, + add27, + ) + .map(Signature::EcdsaRecoverable) + .ok(); + } + + (signer, signature) }) .collect::>(); @@ -96,7 +99,7 @@ pub fn encode_execute_data( fn encode_proof( quorum: Uint256, - signers: Vec<(Signer, Option>)>, + signers: Vec<(Signer, Option)>, ) -> Result { let mut operators = make_evm_operators_with_sigs(signers)?; operators.sort(); @@ -147,12 +150,9 @@ pub fn make_operators(worker_set: WorkerSet) -> Operators { } } -fn make_evm_operators_with_sigs( - signers_with_sigs: Vec<(Signer, Option>)>, -) -> Result>, ContractError> -where - T: Recoverability, -{ +fn make_evm_operators_with_sigs( + signers_with_sigs: Vec<(Signer, Option)>, +) -> Result, ContractError> { axelar_wasm_std::utils::try_map(signers_with_sigs, |(signer, sig)| { make_evm_operator(signer).map(|op| { if let Some(sig) = sig { @@ -163,10 +163,7 @@ where }) } -fn make_evm_operator(signer: Signer) -> Result, ContractError> -where - T: Recoverability, -{ +fn make_evm_operator(signer: Signer) -> Result { Ok(Operator { address: evm_address(signer.pub_key.as_ref())?, weight: signer.weight, @@ -534,7 +531,7 @@ mod test { op.signature, ) }) - .collect::>)>>(); + .collect::)>>(); let execute_data = &batch.encode_execute_data(quorum, signers).unwrap(); @@ -613,7 +610,7 @@ mod test { op.signature, ) }) - .collect::>)>>(); + .collect::)>>(); let res = batch.encode_execute_data(quorum, signers).unwrap(); assert_eq!(res, test_data::execute_data()); @@ -724,21 +721,22 @@ mod test { K256Signature::from_scalars(*gar, *gas).unwrap() }; - let non_recoverable: Signature = - (KeyType::Ecdsa, HexBinary::from(signature.to_vec())) - .try_into() - .unwrap(); - let recoverable_signature = non_recoverable - .to_recoverable( - HexBinary::from_hex(digest).unwrap().as_slice(), - &multisig::key::PublicKey::Ecdsa(HexBinary::from(pub_key.to_vec())), - add27, - ) + let non_recoverable: Signature = (KeyType::Ecdsa, HexBinary::from(signature.to_vec())) + .try_into() .unwrap(); - assert_eq!( - recoverable_signature.as_ref(), - ethers_signature.to_vec().as_slice() - ); + if let Signature::Ecdsa(non_recoverable) = non_recoverable { + let recoverable = non_recoverable + .to_recoverable( + HexBinary::from_hex(digest).unwrap().as_slice(), + &multisig::key::PublicKey::Ecdsa(HexBinary::from(pub_key.to_vec())), + add27, + ) + .unwrap(); + + assert_eq!(recoverable.as_ref(), ethers_signature.to_vec().as_slice()); + } else { + panic!("Invalid signature type") + } } } diff --git a/contracts/multisig-prover/src/encoding/bcs.rs b/contracts/multisig-prover/src/encoding/bcs.rs index 7f0d36377..f774e03e7 100644 --- a/contracts/multisig-prover/src/encoding/bcs.rs +++ b/contracts/multisig-prover/src/encoding/bcs.rs @@ -7,10 +7,7 @@ use cosmwasm_std::{HexBinary, Uint256}; use crate::{error::ContractError, state::WorkerSet}; use itertools::Itertools; -use multisig::{ - key::{NonRecoverable, Recoverable, Signature}, - msg::Signer, -}; +use multisig::{key::Signature, msg::Signer}; use crate::types::{CommandBatch, Operator}; @@ -51,7 +48,7 @@ pub fn transfer_operatorship_params(worker_set: &WorkerSet) -> Result>)>, + signers: Vec<(Signer, Option)>, ) -> Result { let mut operators = make_operators_with_sigs(signers); operators.sort(); // gateway requires operators to be sorted @@ -72,9 +69,7 @@ fn encode_proof( Ok(to_bytes(&(addresses, weights, quorum, signatures))?.into()) } -fn make_operators_with_sigs( - signers_with_sigs: Vec<(Signer, Option>)>, -) -> Vec> { +fn make_operators_with_sigs(signers_with_sigs: Vec<(Signer, Option)>) -> Vec { signers_with_sigs .into_iter() .map(|(signer, sig)| Operator { @@ -164,20 +159,24 @@ pub fn msg_digest(command_batch: &CommandBatch) -> HexBinary { pub fn encode_execute_data( command_batch: &CommandBatch, quorum: Uint256, - signers: Vec<(Signer, Option>)>, + signers: Vec<(Signer, Option)>, ) -> Result { let signers = signers .into_iter() - .map(|(signer, non_recoverable)| { - let recoverable = non_recoverable.map(|sig| { - sig.to_recoverable( - command_batch.msg_digest().as_slice(), - &signer.pub_key, - identity, - ) - .expect("couldn't recover signature") - }); - (signer, recoverable) + .map(|(signer, signature)| { + let mut signature = signature; + if let Some(Signature::Ecdsa(nonrecoverable)) = signature { + signature = nonrecoverable + .to_recoverable( + command_batch.msg_digest().as_slice(), + &signer.pub_key, + identity, + ) + .map(Signature::EcdsaRecoverable) + .ok(); + } + + (signer, signature) }) .collect::>(); let input = to_bytes(&( @@ -201,7 +200,7 @@ fn u256_to_u64(chain_id: Uint256) -> u64 { #[cfg(test)] mod test { - use std::{marker::PhantomData, vec}; + use std::vec; use axelar_wasm_std::operators::Operators; use bcs::from_bytes; @@ -221,7 +220,6 @@ mod test { }, CommandBatchBuilder, Data, }, - state::WorkerSet, test::test_data, types::{BatchID, Command, CommandBatch}, }; @@ -303,8 +301,8 @@ mod test { .unwrap(), ), }, - Some(Signature::Ecdsa( - HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b72021b").unwrap(), PhantomData))), + Some(Signature::EcdsaRecoverable( + HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b72021b").unwrap().try_into().unwrap()))), (Signer { address: Addr::unchecked("axelarvaloper1x86a8prx97ekkqej2x636utrdu23y8wupp9gk5"), weight: Uint256::from(10u128), @@ -315,8 +313,8 @@ mod test { .unwrap(), ), }, - Some(Signature::Ecdsa( - HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b72021b").unwrap(), PhantomData)))]; + Some(Signature::EcdsaRecoverable( + HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b72021b").unwrap().try_into().unwrap())))]; let quorum = Uint256::from(10u128); let proof = encode_proof(quorum, signers.clone()); @@ -565,8 +563,7 @@ mod test { ), }; let signature = Signature::Ecdsa( - HexBinary::from_hex("ef5ce016a4beed7e11761e5831805e962fca3d8901696a61a6ffd3af2b646bdc3740f64643bdb164b8151d1424eb4943d03f71e71816c00726e2d68ee55600c6").unwrap(), - PhantomData); + HexBinary::from_hex("ef5ce016a4beed7e11761e5831805e962fca3d8901696a61a6ffd3af2b646bdc3740f64643bdb164b8151d1424eb4943d03f71e71816c00726e2d68ee55600c6").unwrap().try_into().unwrap()); let encoded = encode_execute_data( &command_batch, Uint256::from(quorum), diff --git a/contracts/multisig-prover/src/encoding/mod.rs b/contracts/multisig-prover/src/encoding/mod.rs index b775f1052..a50491961 100644 --- a/contracts/multisig-prover/src/encoding/mod.rs +++ b/contracts/multisig-prover/src/encoding/mod.rs @@ -7,7 +7,6 @@ use cosmwasm_std::{HexBinary, Uint256}; use sha3::{Digest, Keccak256}; use connection_router::msg::Message; -use multisig::key::NonRecoverable; use multisig::{key::Signature, msg::Signer}; use crate::{ @@ -119,7 +118,7 @@ impl CommandBatch { pub fn encode_execute_data( &self, quorum: Uint256, - signers: Vec<(Signer, Option>)>, + signers: Vec<(Signer, Option)>, ) -> Result { match self.encoder { Encoder::Abi => abi::encode_execute_data(self, quorum, signers), diff --git a/contracts/multisig-prover/src/test/test_data.rs b/contracts/multisig-prover/src/test/test_data.rs index 7792c3d6d..d6b3c74e5 100644 --- a/contracts/multisig-prover/src/test/test_data.rs +++ b/contracts/multisig-prover/src/test/test_data.rs @@ -4,7 +4,6 @@ use axelar_wasm_std::{nonempty, Threshold}; use connection_router::msg::Message; use cosmwasm_schema::cw_serde; use cosmwasm_std::{Addr, HexBinary, Uint256, Uint64}; -use multisig::key::NonRecoverable; use multisig::{ key::{KeyType, PublicKey, Signature}, msg::Signer, @@ -134,7 +133,7 @@ pub struct TestOperator { pub pub_key: multisig::key::PublicKey, pub operator: HexBinary, pub weight: Uint256, - pub signature: Option>, + pub signature: Option, } pub fn operators() -> Vec { diff --git a/contracts/multisig-prover/src/types.rs b/contracts/multisig-prover/src/types.rs index 2f8a1ac65..60f6db145 100644 --- a/contracts/multisig-prover/src/types.rs +++ b/contracts/multisig-prover/src/types.rs @@ -4,7 +4,7 @@ use axelar_wasm_std::{Participant, Snapshot}; use cosmwasm_schema::cw_serde; use cosmwasm_std::{from_binary, HexBinary, StdResult, Uint256}; use cw_storage_plus::{Key, KeyDeserialize, PrimaryKey}; -use multisig::key::{PublicKey, Recoverability, Signature}; +use multisig::key::{PublicKey, Signature}; use sha3::{Digest, Keccak256}; use crate::{ @@ -90,23 +90,14 @@ pub struct CommandBatch { #[cw_serde] #[derive(Ord, PartialOrd, Eq)] -pub struct Operator -where - T: Recoverability, -{ +pub struct Operator { pub address: HexBinary, pub weight: Uint256, - pub signature: Option>, + pub signature: Option, } -impl Operator -where - T: Recoverability, -{ - pub fn with_signature(self, sig: Signature) -> Operator - where - S: Recoverability, - { +impl Operator { + pub fn with_signature(self, sig: Signature) -> Operator { Operator { address: self.address, weight: self.weight, diff --git a/contracts/multisig/Cargo.toml b/contracts/multisig/Cargo.toml index 1f1759769..00afb023d 100644 --- a/contracts/multisig/Cargo.toml +++ b/contracts/multisig/Cargo.toml @@ -5,9 +5,9 @@ edition = "2021" description = "Multisig contract" exclude = [ - # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. - "contract.wasm", - "hash.txt", + # Those files are rust-optimizer artifacts. You might want to commit them for convenience but they should not be part of the source code publication. + "contract.wasm", + "hash.txt", ] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -39,6 +39,7 @@ cosmwasm-std = "1.1.3" cosmwasm-storage = "1.1.3" cw-storage-plus = "1.0.1" cw2 = "0.15.1" +enum-display-derive = "0.1.1" error-stack = { workspace = true } getrandom = { version = "0.2", default-features = false, features = ["custom"] } k256 = { version = "0.13.1", features = ["ecdsa"] } diff --git a/contracts/multisig/src/contract.rs b/contracts/multisig/src/contract.rs index 837e12f9f..6cb044038 100644 --- a/contracts/multisig/src/contract.rs +++ b/contracts/multisig/src/contract.rs @@ -60,7 +60,6 @@ pub fn execute( } pub mod execute { - use crate::key::NonRecoverable; use crate::{ key::{KeyType, KeyTyped, PublicKey, Signature}, signing::SigningSession, @@ -116,7 +115,7 @@ pub mod execute { .map_err(|_| ContractError::SigningSessionNotFound { session_id })?; let key = KEYS.load(deps.storage, &session.key_id)?; - let signature: Signature = match key + let signature: Signature = match key .pub_keys .iter() .find(|&(addr, _)| addr == &info.sender.to_string()) diff --git a/contracts/multisig/src/events.rs b/contracts/multisig/src/events.rs index bf0d510b3..bbd2ea8d1 100644 --- a/contracts/multisig/src/events.rs +++ b/contracts/multisig/src/events.rs @@ -3,7 +3,6 @@ use std::collections::HashMap; use cosmwasm_std::{Addr, HexBinary, Uint64}; use serde_json::to_string; -use crate::key::NonRecoverable; use crate::{ key::{PublicKey, Signature}, types::{KeyID, MsgToSign}, @@ -21,7 +20,7 @@ pub enum Event { SignatureSubmitted { session_id: Uint64, participant: Addr, - signature: Signature, + signature: Signature, }, // Emitted when a signing session was completed SigningCompleted { diff --git a/contracts/multisig/src/key.rs b/contracts/multisig/src/key.rs index edfa117e7..7209c3136 100644 --- a/contracts/multisig/src/key.rs +++ b/contracts/multisig/src/key.rs @@ -1,55 +1,107 @@ +use crate::{secp256k1::ecdsa_verify, types::MsgToSign, ContractError}; use cosmwasm_schema::cw_serde; use cosmwasm_std::{HexBinary, StdError, StdResult}; use cw_storage_plus::{KeyDeserialize, PrimaryKey}; +use enum_display_derive::Display; use serde::{de::Error, Deserializer}; -use std::marker::PhantomData; - -use crate::{secp256k1::ecdsa_verify, types::MsgToSign, ContractError}; +use std::fmt::Display; #[cw_serde] -#[derive(Copy)] +#[derive(Copy, Display)] pub enum KeyType { Ecdsa, } #[cw_serde] #[derive(PartialOrd, Ord, Eq)] -pub enum Signature -where - T: Recoverability, -{ - Ecdsa(HexBinary, PhantomData), -} - -pub trait Recoverability { - fn len() -> usize; +pub enum Signature { + Ecdsa(NonRecoverable), + EcdsaRecoverable(Recoverable), } #[cw_serde] #[derive(Ord, PartialOrd, Eq)] -pub struct Recoverable; +pub struct NonRecoverable(HexBinary); -impl Recoverable { - const LEN: usize = 65; +impl NonRecoverable { + const LEN: usize = 64; + + pub fn to_recoverable( + &self, + msg: &[u8], + pub_key: &PublicKey, + recovery_transform: impl FnOnce(u8) -> u8, + ) -> Result { + let sig = k256::ecdsa::Signature::from_slice(self.0.as_ref()).map_err(|err| { + ContractError::InvalidSignatureFormat { + reason: err.to_string(), + } + })?; + + let recovery_byte = k256::ecdsa::VerifyingKey::from_sec1_bytes(pub_key.as_ref()) + .and_then(|k| k256::ecdsa::RecoveryId::trial_recovery_from_prehash(&k, msg, &sig)) + .map_err(|err| ContractError::InvalidSignatureFormat { + reason: err.to_string(), + })? + .to_byte(); + let mut recoverable = sig.to_vec(); + recoverable.push(recovery_transform(recovery_byte)); + + Ok(Recoverable(HexBinary::from(recoverable))) + } +} + +impl AsRef<[u8]> for NonRecoverable { + fn as_ref(&self) -> &[u8] { + self.0.as_ref() + } +} + +impl TryFrom for NonRecoverable { + type Error = ContractError; + + fn try_from(value: HexBinary) -> Result { + if value.len() != Self::LEN { + return Err(ContractError::InvalidSignatureFormat { + reason: format!( + "invalid input length {}, expected {}", + value.len(), + Self::LEN + ), + }); + } + Ok(NonRecoverable(value)) + } } #[cw_serde] #[derive(Ord, PartialOrd, Eq)] -pub struct NonRecoverable; +pub struct Recoverable(HexBinary); -impl NonRecoverable { - const LEN: usize = 64; +impl Recoverable { + const LEN: usize = 65; } -impl Recoverability for Recoverable { - fn len() -> usize { - Recoverable::LEN +impl AsRef<[u8]> for Recoverable { + fn as_ref(&self) -> &[u8] { + self.0.as_ref() } } -impl Recoverability for NonRecoverable { - fn len() -> usize { - NonRecoverable::LEN +impl TryFrom for Recoverable { + type Error = ContractError; + + fn try_from(value: HexBinary) -> Result { + if value.len() != Self::LEN { + return Err(ContractError::InvalidSignatureFormat { + reason: format!( + "invalid input length {}, expected {}", + value.len(), + Self::LEN + ), + }); + } + Ok(Recoverable(value)) } } @@ -90,18 +142,15 @@ impl KeyTyped for PublicKey { } } -impl KeyTyped for Signature -where - T: Recoverability, -{ +impl KeyTyped for Signature { fn key_type(&self) -> KeyType { match self { - Signature::Ecdsa(_, _) => KeyType::Ecdsa, + Signature::Ecdsa(_) | Signature::EcdsaRecoverable(_) => KeyType::Ecdsa, } } } -impl Signature { +impl Signature { pub fn verify(&self, msg: &MsgToSign, pub_key: &PublicKey) -> Result { if !self.matches_type(pub_key) { return Err(ContractError::KeyTypeMismatch); @@ -111,51 +160,6 @@ impl Signature { KeyType::Ecdsa => ecdsa_verify(msg.as_ref(), self, pub_key.as_ref()), } } - - pub fn to_recoverable( - &self, - msg: &[u8], - pub_key: &PublicKey, - recovery_transform: impl FnOnce(u8) -> u8, - ) -> Result, ContractError> { - match self { - Signature::Ecdsa(sig, _) => { - let sig = k256::ecdsa::Signature::from_slice(sig.as_ref()).map_err(|err| { - ContractError::InvalidSignatureFormat { - reason: err.to_string(), - } - })?; - - let recovery_byte = k256::ecdsa::VerifyingKey::from_sec1_bytes(pub_key.as_ref()) - .and_then(|k| { - k256::ecdsa::RecoveryId::trial_recovery_from_prehash(&k, msg, &sig) - }) - .map_err(|err| ContractError::InvalidSignatureFormat { - reason: err.to_string(), - })? - .to_byte(); - let mut recoverable = sig.to_vec(); - recoverable.push(recovery_transform(recovery_byte)); - - (KeyType::Ecdsa, HexBinary::from(recoverable)).try_into() - } - } - } -} - -impl Signature { - pub fn verify(&self, msg: &MsgToSign, pub_key: &PublicKey) -> Result { - self.to_non_recoverable().verify(msg, pub_key) - } - - fn to_non_recoverable(&self) -> Signature { - match self { - Signature::Ecdsa(sig, _) => Signature::Ecdsa( - HexBinary::from(&sig.as_slice()[..NonRecoverable::LEN]), - PhantomData, - ), - } - } } impl<'a> PrimaryKey<'a> for KeyType { @@ -208,40 +212,21 @@ impl TryFrom<(KeyType, HexBinary)> for PublicKey { } } -impl TryFrom<(KeyType, HexBinary)> for Signature { - type Error = ContractError; - - fn try_from((key_type, sig): (KeyType, HexBinary)) -> Result { - try_from((key_type, sig), Recoverable::len()) - } -} - -impl TryFrom<(KeyType, HexBinary)> for Signature { +impl TryFrom<(KeyType, HexBinary)> for Signature { type Error = ContractError; fn try_from((key_type, sig): (KeyType, HexBinary)) -> Result { - try_from((key_type, sig), NonRecoverable::len()) - } -} - -fn try_from( - (key_type, sig): (KeyType, HexBinary), - expected_len: usize, -) -> Result, ContractError> -where - T: Recoverability, -{ - if sig.len() != expected_len { - return Err(ContractError::InvalidSignatureFormat { - reason: format!( - "invalid input length {}, expected {}", - sig.len(), - expected_len - ), - }); - } - match key_type { - KeyType::Ecdsa => Ok(Signature::Ecdsa(sig, PhantomData)), + match (key_type, sig.len()) { + (KeyType::Ecdsa, Recoverable::LEN) => Ok(Signature::EcdsaRecoverable(Recoverable(sig))), + (KeyType::Ecdsa, NonRecoverable::LEN) => Ok(Signature::Ecdsa(NonRecoverable(sig))), + (_, _) => Err(ContractError::InvalidSignatureFormat { + reason: format!( + "could not find a match for key type {} and signature length {}", + key_type, + sig.len() + ), + }), + } } } @@ -253,13 +238,11 @@ impl AsRef<[u8]> for PublicKey { } } -impl AsRef<[u8]> for Signature -where - T: Recoverability, -{ +impl AsRef<[u8]> for Signature { fn as_ref(&self) -> &[u8] { match self { - Signature::Ecdsa(sig, _) => sig.as_ref(), + Signature::Ecdsa(sig) => sig.0.as_ref(), + Signature::EcdsaRecoverable(sig) => sig.0.as_ref(), } } } @@ -276,7 +259,6 @@ impl From for HexBinary { mod test { use cosmwasm_std::HexBinary; - use crate::key::NonRecoverable; use crate::{key::Signature, test::common::test_data, types::MsgToSign, ContractError}; use super::{KeyType, PublicKey}; @@ -328,8 +310,7 @@ mod test { #[test] fn test_try_from_hexbinary_to_signature() { let hex = test_data::signature(); - let signature: Signature = - (KeyType::Ecdsa, hex.clone()).try_into().unwrap(); + let signature: Signature = (KeyType::Ecdsa, hex.clone()).try_into().unwrap(); assert_eq!(signature.as_ref(), hex.as_ref()); } @@ -339,17 +320,16 @@ mod test { HexBinary::from_hex("283786d844a7c4d1d424837074d0c8ec71becdcba4dd42b5307cb543a0e2c8b81c10ad541defd5ce84d2a608fc454827d0b65b4865c8192a2ea1736a5c4b72") .unwrap(); assert_eq!( - >::try_from((KeyType::Ecdsa, hex.clone())).unwrap_err(), + ::try_from((KeyType::Ecdsa, hex.clone())).unwrap_err(), ContractError::InvalidSignatureFormat { - reason: "invalid input length 63, expected 64".into() + reason: "could not find a match for key type Ecdsa and signature length 63".into() } ); } #[test] fn test_verify_signature() { - let signature: Signature = - (KeyType::Ecdsa, test_data::signature()).try_into().unwrap(); + let signature: Signature = (KeyType::Ecdsa, test_data::signature()).try_into().unwrap(); let message = MsgToSign::try_from(test_data::message()).unwrap(); let public_key = PublicKey::try_from((KeyType::Ecdsa, test_data::pub_key())).unwrap(); let result = signature.verify(&message, &public_key).unwrap(); @@ -363,8 +343,7 @@ mod test { ) .unwrap(); - let signature: Signature = - (KeyType::Ecdsa, invalid_signature).try_into().unwrap(); + let signature: Signature = (KeyType::Ecdsa, invalid_signature).try_into().unwrap(); let message = MsgToSign::try_from(test_data::message()).unwrap(); let public_key = PublicKey::try_from((KeyType::Ecdsa, test_data::pub_key())).unwrap(); let result = signature.verify(&message, &public_key).unwrap(); @@ -378,8 +357,7 @@ mod test { ) .unwrap(); - let signature: Signature = - (KeyType::Ecdsa, test_data::signature()).try_into().unwrap(); + let signature: Signature = (KeyType::Ecdsa, test_data::signature()).try_into().unwrap(); let message = MsgToSign::try_from(test_data::message()).unwrap(); let public_key = PublicKey::try_from((KeyType::Ecdsa, invalid_pub_key)).unwrap(); let result = signature.verify(&message, &public_key).unwrap(); diff --git a/contracts/multisig/src/msg.rs b/contracts/multisig/src/msg.rs index f9bf63ab3..9d47ed391 100644 --- a/contracts/multisig/src/msg.rs +++ b/contracts/multisig/src/msg.rs @@ -4,7 +4,6 @@ use axelar_wasm_std::Snapshot; use cosmwasm_schema::{cw_serde, QueryResponses}; use cosmwasm_std::{Addr, HexBinary, Uint256, Uint64}; -use crate::key::NonRecoverable; use crate::{ key::{KeyType, PublicKey, Signature}, types::{KeyID, MultisigState}, @@ -61,5 +60,5 @@ pub struct Signer { pub struct Multisig { pub state: MultisigState, pub quorum: Uint256, - pub signers: Vec<(Signer, Option>)>, + pub signers: Vec<(Signer, Option)>, } diff --git a/contracts/multisig/src/secp256k1.rs b/contracts/multisig/src/secp256k1.rs index 6f183deb7..2881bfe4e 100644 --- a/contracts/multisig/src/secp256k1.rs +++ b/contracts/multisig/src/secp256k1.rs @@ -1,12 +1,12 @@ use cosmwasm_crypto::secp256k1_verify; // TODO: Logic specific to secp256k1 will most likely be handled by core in the future. -use crate::key::{NonRecoverable, Signature}; +use crate::key::Signature; use crate::ContractError; pub fn ecdsa_verify( msg_hash: &[u8], - sig: &Signature, + sig: &Signature, pub_key: &[u8], ) -> Result { secp256k1_verify(msg_hash, sig.as_ref(), pub_key).map_err(|err| { diff --git a/contracts/multisig/src/signing.rs b/contracts/multisig/src/signing.rs index 3bc3c0158..d8826a1a4 100644 --- a/contracts/multisig/src/signing.rs +++ b/contracts/multisig/src/signing.rs @@ -5,7 +5,6 @@ use cosmwasm_std::{Uint256, Uint64}; use axelar_wasm_std::Snapshot; -use crate::key::NonRecoverable; use crate::{ key::Signature, types::{Key, KeyID, MsgToSign, MultisigState}, @@ -17,7 +16,7 @@ pub struct SigningSession { pub id: Uint64, pub key_id: KeyID, pub msg: MsgToSign, - pub signatures: HashMap>, + pub signatures: HashMap, pub state: MultisigState, } @@ -36,7 +35,7 @@ impl SigningSession { &mut self, key: Key, signer: String, - signature: Signature, + signature: Signature, ) -> Result<(), ContractError> { assert!(self.key_id == key.id, "violated invariant: key_id mismatch"); // TODO: correct way of handling this? @@ -220,7 +219,7 @@ mod tests { let mut session = SigningSession::new(Uint64::one(), config.key_id.clone(), config.message.clone()); - let invalid_sig : Signature = (KeyType::Ecdsa, HexBinary::from_hex("a58c9543b9df54578ec45838948e19afb1c6e4c86b34d9899b10b44e619ea74e19b457611e41a047030ed233af437d7ecff84de97cb6b3c13d73d22874e03511") + let invalid_sig : Signature = (KeyType::Ecdsa, HexBinary::from_hex("a58c9543b9df54578ec45838948e19afb1c6e4c86b34d9899b10b44e619ea74e19b457611e41a047030ed233af437d7ecff84de97cb6b3c13d73d22874e03511") .unwrap()).try_into().unwrap(); let key = KEYS.load(&config.store, (&session.key_id).into()).unwrap();