diff --git a/.changelog/unreleased/improvements/4623-integrated-fmd-indices.md b/.changelog/unreleased/improvements/4623-integrated-fmd-indices.md new file mode 100644 index 0000000000..339d09b7c6 --- /dev/null +++ b/.changelog/unreleased/improvements/4623-integrated-fmd-indices.md @@ -0,0 +1,4 @@ +- Closes [#4621](https://github.com/anoma/namada/issues/4621) + +- For the MASP Indexer client, now only fetches of MASP txs included in an index set computed via FMD if such a set is present. Also uses the set to reduce the number of trial decryptions. This PR does not handle loading in FMD index sets. That will be determined later. +([\#4623](https://github.com/anoma/namada/pull/4623)) \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 4539542bdb..53d6dc023e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -985,7 +985,7 @@ dependencies = [ "semver", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -1188,6 +1188,15 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.12", +] + [[package]] name = "codepage" version = "0.1.2" @@ -1684,6 +1693,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", + "rand_core", "typenum", ] @@ -1740,7 +1750,9 @@ dependencies = [ "curve25519-dalek-derive", "digest 0.10.7", "fiat-crypto", + "rand_core", "rustc_version", + "serde", "subtle", "zeroize", ] @@ -2138,7 +2150,7 @@ dependencies = [ "chrono", "rust_decimal", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", "winnow 0.6.26", ] @@ -2307,7 +2319,7 @@ dependencies = [ "byteorder", "heapless 0.8.0", "num-traits", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -2992,7 +3004,7 @@ dependencies = [ "rand_core", "serde", "serdect", - "thiserror 2.0.11", + "thiserror 2.0.12", "thiserror-nostd-notrait", "visibility", "zeroize", @@ -4777,6 +4789,27 @@ dependencies = [ "signature", ] +[[package]] +name = "kassandra-shared" +version = "0.0.2-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248852e4390561ee568ec214be663837e2d254576ec6b210f5799c24450203b1" +dependencies = [ + "borsh", + "chacha20poly1305", + "cobs 0.3.0", + "hex", + "once_cell", + "polyfuzzy", + "rand_core", + "serde", + "serde_cbor", + "sha2 0.10.8", + "tdx-quote", + "thiserror 2.0.12", + "x25519-dalek", +] + [[package]] name = "kdam" version = "0.6.2" @@ -5385,7 +5418,7 @@ dependencies = [ "nam-ledger-proto", "once_cell", "strum 0.26.3", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", "tracing-subscriber", @@ -5420,7 +5453,7 @@ dependencies = [ "displaydoc", "encdec", "num_enum", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -5447,7 +5480,7 @@ dependencies = [ "pasta_curves", "rand_core", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "zeroize", ] @@ -5575,7 +5608,7 @@ dependencies = [ "tendermint-config", "tendermint-rpc", "textwrap-macros", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "toml", "tracing", @@ -5614,7 +5647,7 @@ version = "0.149.1" dependencies = [ "namada_core", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -5660,7 +5693,7 @@ dependencies = [ "smooth-operator", "tendermint 0.40.3", "tendermint-proto 0.40.3", - "thiserror 2.0.11", + "thiserror 2.0.12", "tiny-keccak", "tokio", "toml", @@ -5721,7 +5754,7 @@ dependencies = [ "rand", "serde", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "toml", "tracing", ] @@ -5737,7 +5770,7 @@ dependencies = [ "namada_migrations", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -5793,7 +5826,7 @@ dependencies = [ "namada_migrations", "proptest", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -5825,7 +5858,7 @@ dependencies = [ "serde", "serde_json", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -5870,7 +5903,7 @@ dependencies = [ "serde_json", "sha2 0.10.8", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -5882,7 +5915,7 @@ dependencies = [ "kdam", "namada_core", "tendermint-rpc", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", ] @@ -5927,7 +5960,7 @@ dependencies = [ "namada_migrations", "proptest", "prost 0.13.5", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -5995,7 +6028,7 @@ dependencies = [ "tar", "tempfile", "test-log", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tokio-test", "toml", @@ -6018,7 +6051,7 @@ dependencies = [ "namada_tx", "namada_vp_env", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -6051,7 +6084,7 @@ dependencies = [ "serde", "smooth-operator", "test-log", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "tracing-subscriber", "yansi 1.0.1", @@ -6087,6 +6120,7 @@ dependencies = [ "getrandom 0.3.1", "init-once", "itertools 0.14.0", + "kassandra-shared", "lazy_static", "linkme", "masp_primitives", @@ -6131,7 +6165,7 @@ dependencies = [ "smooth-operator", "tempfile", "tendermint-rpc", - "thiserror 2.0.11", + "thiserror 2.0.12", "tiny-bip39", "tokio", "toml", @@ -6150,6 +6184,7 @@ dependencies = [ "flume", "futures", "itertools 0.14.0", + "kassandra-shared", "lazy_static", "linkme", "masp_primitives", @@ -6185,7 +6220,7 @@ dependencies = [ "tempfile", "tendermint-rpc", "test-log", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", "tracing", "typed-builder", @@ -6218,7 +6253,7 @@ dependencies = [ "proptest", "smooth-operator", "test-log", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -6238,7 +6273,7 @@ dependencies = [ "regex", "serde", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -6364,7 +6399,7 @@ dependencies = [ "namada_vp", "namada_vp_env", "proptest", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -6398,7 +6433,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "thiserror 2.0.11", + "thiserror 2.0.12", "tonic-build", ] @@ -6456,7 +6491,7 @@ dependencies = [ "smooth-operator", "tempfile", "test-log", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "wasm-instrument", "wasmer", @@ -6500,7 +6535,7 @@ dependencies = [ "namada_tx", "namada_vp_env", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -6564,7 +6599,7 @@ dependencies = [ "serde", "slip10_ed25519", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tiny-bip39", "toml", "zeroize", @@ -6772,9 +6807,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "oorandom" @@ -6904,6 +6939,18 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2 0.10.8", +] + [[package]] name = "pairing" version = "0.23.0" @@ -7104,7 +7151,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror 2.0.11", + "thiserror 2.0.12", "ucd-trie", ] @@ -7301,6 +7348,19 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "polyfuzzy" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4c8aa1a6ea51b5f6cb5053fd11ff19f71ba5ef5f9e99709aded1c030ddb4874" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "sha2 0.10.8", + "subtle", +] + [[package]] name = "portable-atomic" version = "1.10.0" @@ -7313,7 +7373,7 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" dependencies = [ - "cobs", + "cobs 0.2.3", "embedded-io 0.4.0", "embedded-io 0.6.1", "heapless 0.7.17", @@ -7388,6 +7448,15 @@ dependencies = [ "syn 2.0.98", ] +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + [[package]] name = "primitive-types" version = "0.12.2" @@ -7722,7 +7791,7 @@ checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" dependencies = [ "getrandom 0.2.15", "libredox", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -8396,9 +8465,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -8444,9 +8513,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", @@ -8660,7 +8729,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", ] @@ -9044,6 +9113,17 @@ version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" +[[package]] +name = "tdx-quote" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecbbeffe2d73f07728bcbb581f8faa9098d813ba0fafbcab5e763a2fa4491e80" +dependencies = [ + "nom", + "p256", + "sha2 0.10.8", +] + [[package]] name = "tempfile" version = "3.16.0" @@ -9343,11 +9423,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] @@ -9363,9 +9443,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", @@ -11017,6 +11097,18 @@ dependencies = [ "tap", ] +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "zeroize", +] + [[package]] name = "xattr" version = "1.4.0" diff --git a/Cargo.toml b/Cargo.toml index ddfb6bf3a3..a57b9cb52e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -175,6 +175,7 @@ indexmap = { package = "nam-indexmap", version = "2.7.1-nam.0", features = ["bor init-once = "0.6" itertools = "0.14" jubjub = { package = "nam-jubjub", version = "0.10.1-nam.0" } +kassandra = {package = "kassandra-shared", version = "0.0.2-alpha", features = ["std"]} k256 = { version = "0.13", default-features = false, features = ["ecdsa", "pkcs8", "precomputed-tables", "serde", "std"]} kdam = "0.6" konst = { version = "0.3", default-features = false } diff --git a/crates/apps_lib/src/cli.rs b/crates/apps_lib/src/cli.rs index b918a1b34e..264976e7e4 100644 --- a/crates/apps_lib/src/cli.rs +++ b/crates/apps_lib/src/cli.rs @@ -7047,8 +7047,16 @@ pub mod args { fn parse(matches: &ArgMatches) -> Self { let ledger_address = CONFIG_RPC_LEDGER_ADDRESS.parse(matches); let last_query_height = BLOCK_HEIGHT_TO_OPT.parse(matches); - let spending_keys = DATED_SPENDING_KEYS.parse(matches); - let viewing_keys = DATED_VIEWING_KEYS.parse(matches); + let spending_keys = DATED_SPENDING_KEYS + .parse(matches) + .into_iter() + .zip(std::iter::repeat(None)) + .collect(); + let viewing_keys = DATED_VIEWING_KEYS + .parse(matches) + .into_iter() + .zip(std::iter::repeat(None)) + .collect(); let with_indexer = WITH_INDEXER.parse(matches); let wait_for_last_query_height = WAIT_FOR_LAST_QUERY_HEIGHT.parse(matches); @@ -7130,12 +7138,12 @@ pub mod args { spending_keys: self .spending_keys .iter() - .map(|sk| chain_ctx.get_cached(sk)) + .map(|(sk, _)| (chain_ctx.get_cached(sk), None)) .collect(), viewing_keys: self .viewing_keys .iter() - .map(|vk| chain_ctx.get_cached(vk)) + .map(|(vk, _)| (chain_ctx.get_cached(vk), None)) .collect(), with_indexer: self.with_indexer, retry_strategy: self.retry_strategy, diff --git a/crates/apps_lib/src/cli/client.rs b/crates/apps_lib/src/cli/client.rs index 0eb92b4766..8171bc9855 100644 --- a/crates/apps_lib/src/cli/client.rs +++ b/crates/apps_lib/src/cli/client.rs @@ -368,12 +368,16 @@ impl CliApi { .get_viewing_keys() .into_iter() .map(|(k, v)| { - DatedViewingKey::new( - v, - chain_ctx - .wallet - .find_birthday(k) - .copied(), + // TODO: Fix + ( + DatedViewingKey::new( + v, + chain_ctx + .wallet + .find_birthday(k) + .copied(), + ), + None, ) }), ); diff --git a/crates/apps_lib/src/client/masp.rs b/crates/apps_lib/src/client/masp.rs index df2d7e0491..4c44b2638d 100644 --- a/crates/apps_lib/src/client/masp.rs +++ b/crates/apps_lib/src/client/masp.rs @@ -71,7 +71,7 @@ pub async fn syncing< let vks = args .viewing_keys .into_iter() - .map(|vk| vk.map(|vk| vk.as_viewing_key())) + .map(|(vk, fmd)| (vk.map(|vk| vk.as_viewing_key()), fmd)) .collect::>(); macro_rules! dispatch_client { @@ -130,6 +130,8 @@ pub async fn syncing< client, url, true, + // TODO: Fix, + None, args.max_concurrent_fetches, ))? } else { diff --git a/crates/node/src/bench_utils.rs b/crates/node/src/bench_utils.rs index 2e746b1845..e92d9d2fb5 100644 --- a/crates/node/src/bench_utils.rs +++ b/crates/node/src/bench_utils.rs @@ -1227,7 +1227,7 @@ impl BenchShieldedCtx { ledger_address: FromStr::from_str("http://127.0.0.1:1337") .unwrap(), last_query_height: None, - spending_keys: vec![spending_key], + spending_keys: vec![(spending_key, None)], viewing_keys: vec![], with_indexer: None, wait_for_last_query_height: false, diff --git a/crates/sdk/Cargo.toml b/crates/sdk/Cargo.toml index 65c39f6d64..e9c26f3391 100644 --- a/crates/sdk/Cargo.toml +++ b/crates/sdk/Cargo.toml @@ -110,6 +110,7 @@ futures.workspace = true init-once.workspace = true itertools.workspace = true jubjub = { workspace = true, optional = true } +kassandra.workspace = true lazy_static.workspace = true linkme = { workspace = true, optional = true } masp_primitives.workspace = true diff --git a/crates/sdk/src/args.rs b/crates/sdk/src/args.rs index b9ba33fc32..8da04b912f 100644 --- a/crates/sdk/src/args.rs +++ b/crates/sdk/src/args.rs @@ -35,6 +35,7 @@ use crate::error::Error; use crate::eth_bridge::bridge_pool; use crate::ibc::core::host::types::identifiers::{ChannelId, PortId}; use crate::ibc::{NamadaMemo, NamadaMemoData}; +use crate::masp::shielded_wallet::FmdIndices; use crate::rpc::{ get_registry_from_xcs_osmosis_contract, osmosis_denom_from_namada_denom, query_ibc_denom, query_osmosis_pool_routes, @@ -2497,9 +2498,9 @@ pub struct ShieldedSync { /// Height to sync up to. Defaults to most recent pub last_query_height: Option, /// Spending keys used to determine note ownership - pub spending_keys: Vec, + pub spending_keys: Vec<(C::DatedSpendingKey, Option)>, /// Viewing keys used to determine note ownership - pub viewing_keys: Vec, + pub viewing_keys: Vec<(C::DatedViewingKey, Option)>, /// Address of a `namada-masp-indexer` live instance /// /// If present, the shielded sync will be performed diff --git a/crates/sdk/src/masp/utilities.rs b/crates/sdk/src/masp/utilities.rs index 0a7c31052f..5d3df2b222 100644 --- a/crates/sdk/src/masp/utilities.rs +++ b/crates/sdk/src/masp/utilities.rs @@ -1,9 +1,11 @@ //! Helper functions and types use std::collections::BTreeMap; +use std::ops::ControlFlow; use std::sync::{Arc, RwLock}; use borsh::BorshDeserialize; +use kassandra::IndexList; use masp_primitives::merkle_tree::{CommitmentTree, IncrementalWitness}; use masp_primitives::sapling::Node; use masp_primitives::transaction::Transaction as MaspTx; @@ -20,7 +22,9 @@ use namada_token::masp::utils::{ }; use namada_tx::event::MaspEvent; use namada_tx::{IndexedTx, Tx}; +use reqwest::RequestBuilder; use tokio::sync::Semaphore; +use xorf::BinaryFuse16; use crate::error::{Error, QueryError}; use crate::masp::{extract_masp_tx, get_indexed_masp_events_at_height}; @@ -223,6 +227,29 @@ impl MaspClient for LedgerMaspClient { crate::token::storage_key::masp_commitment_anchor_key(*root); crate::rpc::query_has_storage_key(&self.inner.client, &anchor_key).await } + + fn set_fmd_indices(&mut self, _: Option) {} +} + +/// A bloom filter we can use to avoid unnecessary fetches +/// of block heights that contain no MASP notes. +#[derive(Copy, Clone)] +pub struct BlockFilter<'filter> { + /// the height at which the filter was built. + block_index_height: &'filter BlockHeight, + /// the actual bloom filter. + block_index: &'filter BinaryFuse16, +} + +impl<'filter> From<&'filter (BlockHeight, BinaryFuse16)> + for BlockFilter<'filter> +{ + fn from((h, i): &'filter (BlockHeight, BinaryFuse16)) -> Self { + Self { + block_index_height: h, + block_index: i, + } + } } #[derive(Debug)] @@ -235,6 +262,9 @@ struct IndexerMaspClientShared { /// Bloom filter to help avoid fetching block heights /// with no MASP notes. block_index: init_once::InitOnce>, + /// Indices of masp txs flagged via fuzzy message detection as relevant for + /// a viewing key being synced + fmd_indices: Option, /// Maximum number of concurrent fetches. max_concurrent_fetches: usize, } @@ -267,6 +297,7 @@ impl IndexerMaspClient { client: reqwest::Client, indexer_api: reqwest::Url, using_block_index: bool, + fmd_indices: Option, max_concurrent_fetches: usize, ) -> Self { let shared = Arc::new(IndexerMaspClientShared { @@ -280,6 +311,7 @@ impl IndexerMaspClient { } index }, + fmd_indices, }); Self { client, shared } } @@ -346,6 +378,25 @@ impl IndexerMaspClient { Ok((BlockHeight(payload.block_height), payload.index)) } + + /// This function checks if FMD indices are present. If so, + /// it creates an http request targeting the appropriate + /// api endpoint (`/tx_by_indices`). + /// + /// Otherwise, we default to fetching all MASP transactions + /// use the `/tx` api endpoint. + fn fetch_request( + &self, + from_height: u64, + offset: u64, + maybe_block_index: Option>, + ) -> ControlFlow { + if let Some(ix_list) = self.shared.fmd_indices.as_ref() { + ix_list.fetch_request(self, from_height, offset) + } else { + maybe_block_index.fetch_request(self, from_height, offset) + } + } } impl MaspClient for IndexerMaspClient { @@ -436,96 +487,52 @@ impl MaspClient for IndexerMaspClient { self.last_block_index().await.ok() }) .await - .and_then(Option::as_ref); + .and_then(Option::as_ref) + .map(BlockFilter::from); let mut fetches = vec![]; - loop { - 'do_while: { - const MAX_RANGE_THRES: u64 = 30; - - let mut from_height = from; - let mut offset = (to - from).min(MAX_RANGE_THRES); - let mut to_height = from + offset; - from += offset; - - // if the bloom filter has finished downloading, we can - // use it to avoid unnecessary fetches of block heights - // that contain no MASP notes. - // - // * `block_index_height` is the height at which the filter was - // built. - // * `block_index` is the actual bloom filter. - if let Some((BlockHeight(block_index_height), block_index)) = - maybe_block_index - { - match BlockIndex::check_block_index( - *block_index_height, - from_height, - to_height, - ) - .needs_to_fetch(block_index) - { - ControlFlow::Break(()) => { - // We do not need to fetch this range. - // - // NB: skips code below, so it's more like a - // `continue` - break 'do_while; - } - ControlFlow::Continue((from, to)) => { - // the sub-range which we need to fetch. - from_height = from; - to_height = to; - offset = to_height - from_height; - } - } - } + while from <= to { + const MAX_RANGE_THRES: u64 = 29; - fetches.push(async move { - let _permit = - self.shared.semaphore.acquire().await.unwrap(); - - let payload: TxResponse = { - let response = self - .client - .get(self.endpoint("/tx")) - .keep_alive() - .query(&[ - ("height", from_height), - ("height_offset", offset), - ]) - .send() - .await - .map_err(|err| { - Error::Other(format!( - "Failed to fetch transactions in the \ - height range {from_height}-{to_height}: \ - {err}" - )) - })?; - if !response.status().is_success() { - let err = Self::get_server_error(response).await?; - return Err(Error::Other(format!( - "Failed to fetch transactions in the range \ - {from_height}-{to_height}: {err}" - ))); - } - response.json().await.map_err(|err| { - Error::Other(format!( - "Could not deserialize the transactions JSON \ - response in the height range \ - {from_height}-{to_height}: {err}" - )) - })? - }; + let from_height = from; + let offset = (to - from).min(MAX_RANGE_THRES); + let to_height = from + offset; + from += offset + 1; - Ok(payload.txs) - }); - } + let ControlFlow::Break(request) = + self.fetch_request(from_height, offset, maybe_block_index) + else { + continue; + }; - if from >= to { - break; - } + fetches.push(async move { + let _permit = self.shared.semaphore.acquire().await.unwrap(); + + let payload: TxResponse = { + let response = request.send().await.map_err(|err| { + Error::Other(format!( + "Failed to fetch transactions in the height range \ + {from_height}--{to_height}: {err}" + )) + })?; + if !response.status().is_success() { + let err = Self::get_server_error(response).await?; + return Err(Error::Other(format!( + "Failed to fetch transactions in the range \ + {from_height}-{to_height}: {err}" + ))); + } + response.json().await.map_err(|err| { + Error::Other(format!( + "Could not deserialize the transactions JSON \ + response in the height range \ + {from_height}-{to_height}: {err}" + )) + })? + }; + + Ok(payload.txs) + }); } let mut stream_of_fetches = stream::iter(fetches) @@ -784,6 +791,94 @@ impl MaspClient for IndexerMaspClient { .to_string(), )) } + + fn set_fmd_indices(&mut self, fmd_indices: Option) { + Arc::get_mut(&mut self.shared).unwrap().fmd_indices = fmd_indices; + } +} + +pub trait Filter { + fn fetch_request( + &self, + masp_client: &IndexerMaspClient, + from_height: u64, + offset: u64, + ) -> ControlFlow; +} + +impl Filter for Option> { + fn fetch_request( + &self, + masp_client: &IndexerMaspClient, + from_height: u64, + offset: u64, + ) -> ControlFlow { + // if the bloom filter has finished downloading, + let (from_height, offset) = if let Some(BlockFilter { + block_index_height: BlockHeight(block_index_height), + block_index, + }) = self + { + match BlockIndex::check_block_index( + *block_index_height, + from_height, + from_height + offset, + ) + .needs_to_fetch(block_index) + { + ControlFlow::Break(()) => { + return ControlFlow::Continue(()); + } + ControlFlow::Continue((from, to)) => { + // the sub-range which we need to fetch. + (from, to - from) + } + } + } else { + (from_height, offset) + }; + + ControlFlow::Break( + masp_client + .client + .get(masp_client.endpoint("/tx")) + .keep_alive() + .query(&[("height", from_height), ("height_offset", offset)]), + ) + } +} + +impl Filter for IndexList { + fn fetch_request( + &self, + masp_client: &IndexerMaspClient, + from_height: u64, + offset: u64, + ) -> ControlFlow { + let (heights, indices) = self + .iter() + .filter(|ix| { + from_height <= ix.height && ix.height <= from_height + offset + }) + .fold((String::new(), String::new()), |mut acc, ix| { + acc.0.push('.'); + acc.0.push_str(&ix.height.to_string()); + acc.1.push('.'); + acc.1.push_str(&ix.tx.to_string()); + acc + }); + if heights.is_empty() { + ControlFlow::Continue(()) + } else { + ControlFlow::Break( + masp_client + .client + .get(masp_client.endpoint("/tx_by_indices")) + .keep_alive() + .query(&[("heights", heights), ("block_indices", indices)]), + ) + } + } } #[derive(Copy, Clone)] @@ -885,9 +980,13 @@ impl BlockIndex { mod test_block_index { use std::ops::ControlFlow; + use assert_matches::assert_matches; + use namada_core::chain::BlockHeight; use proptest::proptest; + use xorf::BinaryFuse16; - use super::BlockIndex; + use super::{BlockFilter, BlockIndex, Filter}; + use crate::masp::IndexerMaspClient; /// An arbitrary filter fn block_filter() -> xorf::BinaryFuse16 { @@ -1003,4 +1102,26 @@ mod test_block_index { panic!("Test failed"); }; } + + #[test] + fn test_xorf_filter_trait() { + let block_filter = BinaryFuse16::try_from(vec![]).expect("Test failed"); + let client = IndexerMaspClient::new( + reqwest::Client::new(), + reqwest::Url::parse("http://bigbubbahacks.com") + .expect("Test failed"), + true, + None, + 1, + ); + let height = BlockHeight::first(); + assert_matches!( + Some(BlockFilter { + block_index_height: &height, + block_index: &block_filter + }) + .fetch_request(&client, 1, 30), + ControlFlow::Break(_) + ); + } } diff --git a/crates/shielded_token/Cargo.toml b/crates/shielded_token/Cargo.toml index 5ac9a0dbc1..520c36a472 100644 --- a/crates/shielded_token/Cargo.toml +++ b/crates/shielded_token/Cargo.toml @@ -58,6 +58,7 @@ eyre.workspace = true futures.workspace = true flume = { workspace = true, optional = true } itertools.workspace = true +kassandra.workspace = true lazy_static.workspace = true linkme = { workspace = true, optional = true } masp_primitives.workspace = true diff --git a/crates/shielded_token/src/masp/shielded_sync/dispatcher.rs b/crates/shielded_token/src/masp/shielded_sync/dispatcher.rs index 761979faf6..06a4900dac 100644 --- a/crates/shielded_token/src/masp/shielded_sync/dispatcher.rs +++ b/crates/shielded_token/src/masp/shielded_sync/dispatcher.rs @@ -26,6 +26,7 @@ use namada_wallet::{DatedKeypair, DatedSpendingKey}; use super::utils::{IndexedNoteEntry, MaspClient, MaspIndexedTx, MaspTxKind}; use crate::masp::shielded_sync::trial_decrypt; +use crate::masp::shielded_wallet::{FmdIndices, KeySyncData}; use crate::masp::utils::{ DecryptedData, Fetched, RetryStrategy, TrialDecrypted, blocks_left_to_fetch, }; @@ -321,8 +322,8 @@ where mut self, start_query_height: Option, last_query_height: Option, - sks: &[DatedSpendingKey], - fvks: &[DatedKeypair], + sks: &[(DatedSpendingKey, Option)], + fvks: &[(DatedKeypair, Option)], ) -> Result>, eyre::Error> { let initial_state = self .perform_initial_setup( @@ -412,12 +413,12 @@ where self.ctx.update_witness_map(masp_indexed_tx, &stx_batch)?; } let first_note_pos = self.ctx.note_index[&masp_indexed_tx]; - let mut vk_heights = BTreeMap::new(); - std::mem::swap(&mut vk_heights, &mut self.ctx.vk_heights); - for (vk, _) in vk_heights + let mut vk_sync = BTreeMap::new(); + std::mem::swap(&mut vk_sync, &mut self.ctx.vk_sync); + for (vk, _) in vk_sync .iter() // NB: skip keys that are synced past the given `indexed_tx` - .filter(|(_vk, h)| h.as_ref() < Some(&masp_indexed_tx)) + .filter(|(_vk, h)| h.height < masp_indexed_tx) { for (note_pos_offset, (note, pa, memo)) in self .cache @@ -435,24 +436,26 @@ where self.config.applied_tracker.increment_by(1); } } - std::mem::swap(&mut vk_heights, &mut self.ctx.vk_heights); + std::mem::swap(&mut vk_sync, &mut self.ctx.vk_sync); } for (_, h) in self .ctx - .vk_heights + .vk_sync .iter_mut() // NB: skip keys that are synced past the last input height .filter(|(_vk, h)| { - h.as_ref().map(|itx| &itx.indexed_tx.block_height) - < Some(last_query_height) + h.height.indexed_tx.block_height < *last_query_height }) { // NB: the entire block is synced - *h = Some(MaspIndexedTx { - indexed_tx: IndexedTx::entire_block(*last_query_height), - kind: MaspTxKind::Transfer, - }); + *h = KeySyncData { + height: MaspIndexedTx { + indexed_tx: IndexedTx::entire_block(*last_query_height), + kind: MaspTxKind::Transfer, + }, + fmd_indices: h.fmd_indices.take(), + }; } Ok(()) @@ -462,8 +465,8 @@ where &mut self, start_query_height: Option, last_query_height: Option, - sks: &[DatedSpendingKey], - fvks: &[DatedKeypair], + sks: &[(DatedSpendingKey, Option)], + fvks: &[(DatedKeypair, Option)], ) -> Result { if start_query_height > last_query_height { return Err(eyre!( @@ -473,31 +476,46 @@ where )); } - for vk in sks + for (vk, mut fmd) in sks .iter() - .map(|esk| { - esk.map(|k| { - to_viewing_key(&MaspExtendedSpendingKey::from(k)).vk - }) + .map(|(esk, fmd)| { + ( + esk.map(|k| { + to_viewing_key(&MaspExtendedSpendingKey::from(k)).vk + }), + fmd.clone(), + ) }) - .chain(fvks.iter().copied()) + .chain(fvks.iter().cloned()) { - if let Some(h) = self.ctx.vk_heights.entry(vk.key).or_default() { + if let Some(h) = self.ctx.vk_sync.get_mut(&vk.key) { let birthday = IndexedTx::entire_block(vk.birthday); - if birthday > h.indexed_tx { - h.indexed_tx = birthday; + if birthday > h.height.indexed_tx { + h.height.indexed_tx = birthday; } - } else if vk.birthday >= BlockHeight::first() { - self.ctx.vk_heights.insert( + if let Some(ixs) = fmd.as_mut() { + ixs.retain(|ix| { + ix.height >= h.height.indexed_tx.block_height.0 + }); + } + h.fmd_indices = fmd; + } else { + self.ctx.vk_sync.insert( vk.key, - Some(MaspIndexedTx { - indexed_tx: IndexedTx::entire_block(vk.birthday), - kind: MaspTxKind::Transfer, - }), + KeySyncData { + height: MaspIndexedTx { + indexed_tx: IndexedTx::entire_block(vk.birthday), + kind: MaspTxKind::Transfer, + }, + fmd_indices: fmd, + }, ); } } + // Add the fmd indices to the client + self.client.set_fmd_indices(self.ctx.combined_fmd_indices()); + // the latest block height which has been added to the witness Merkle // tree let last_witnessed_tx = self.ctx.note_index.keys().max().cloned(); @@ -805,11 +823,10 @@ where } fn spawn_trial_decryptions(&self, itx: MaspIndexedTx, tx: &Transaction) { - for (vk, vk_height) in self.ctx.vk_heights.iter() { - let key_is_outdated = vk_height.as_ref() < Some(&itx); + for (vk, vk_sync) in self.ctx.vk_sync.iter() { + let key_is_outdated = vk_sync.height < itx; let cached = self.cache.trial_decrypted.get(&itx, vk).is_some(); - - if key_is_outdated && !cached { + if key_is_outdated && !cached && vk_sync.flagged(&itx) { let tx = tx.clone(); let vk = *vk; @@ -880,6 +897,7 @@ mod dispatcher_tests { use std::hint::spin_loop; use futures::join; + use kassandra::Index; use namada_core::chain::BlockHeight; use namada_core::control_flow::testing::shutdown_signal; use namada_core::storage::TxIndex; @@ -899,6 +917,87 @@ mod dispatcher_tests { use crate::masp::utils::MaspIndexedTx; use crate::masp::{MaspLocalTaskEnv, ShieldedSyncConfig}; + /// Test that we prune the fmd indices based on the + /// height a key is synced to when starting up. + #[tokio::test] + async fn test_fmd_filtered_on_initial_setup() { + let (client, _) = TestingMaspClient::new(BlockHeight::first()); + let (_sender, shutdown_sig) = shutdown_signal(); + let config = ShieldedSyncConfig::builder() + .client(client) + .fetched_tracker(DevNullProgressBar) + .scanned_tracker(DevNullProgressBar) + .applied_tracker(DevNullProgressBar) + .shutdown_signal(shutdown_sig) + .build(); + let temp_dir = tempdir().unwrap(); + let utils = FsShieldedUtils { + context_dir: temp_dir.path().to_path_buf(), + }; + MaspLocalTaskEnv::new(4) + .expect("Test failed") + .run(|s| async { + let mut dispatcher = config.dispatcher(s, &utils).await; + dispatcher.ctx.vk_sync = BTreeMap::from([( + arbitrary_vk(), + KeySyncData { + height: MaspIndexedTx { + kind: Default::default(), + indexed_tx: IndexedTx::entire_block(10.into()), + }, + fmd_indices: Some( + [ + Index { height: 5, tx: 0 }, + Index { height: 15, tx: 0 }, + ] + .into_iter() + .collect(), + ), + }, + )]); + dispatcher + .perform_initial_setup( + None, + None, + &[], + &[( + arbitrary_vk().into(), + Some( + [ + Index { height: 5, tx: 0 }, + Index { height: 15, tx: 0 }, + Index { height: 20, tx: 0 }, + ] + .into_iter() + .collect(), + ), + )], + ) + .await + .expect("Test failed"); + + let expected = BTreeMap::from([( + arbitrary_vk(), + KeySyncData { + height: MaspIndexedTx { + kind: Default::default(), + indexed_tx: IndexedTx::entire_block(10.into()), + }, + fmd_indices: Some( + [ + Index { height: 15, tx: 0 }, + Index { height: 20, tx: 0 }, + ] + .into_iter() + .collect(), + ), + }, + )]); + assert_eq!(expected, dispatcher.ctx.vk_sync); + }) + .await; + } + #[tokio::test] async fn test_applying_cache_drains_decrypted_data() { let (client, _) = TestingMaspClient::new(BlockHeight::first()); @@ -918,10 +1017,10 @@ mod dispatcher_tests { .expect("Test failed") .run(|s| async { let mut dispatcher = config.dispatcher(s, &utils).await; - dispatcher.ctx.vk_heights = - BTreeMap::from([(arbitrary_vk(), None)]); + dispatcher.ctx.vk_sync = + BTreeMap::from([(arbitrary_vk(), Default::default())]); // fill up the dispatcher's cache - for h in 0u64..10 { + for h in 2u64..=10 { let itx = MaspIndexedTx { indexed_tx: IndexedTx { block_height: h.into(), @@ -943,7 +1042,7 @@ mod dispatcher_tests { .apply_cache_to_shielded_context(&InitialState { last_witnessed_tx: None, start_height: Default::default(), - last_query_height: 9.into(), + last_query_height: 10.into(), }) .await .expect("Test failed"); @@ -951,12 +1050,15 @@ mod dispatcher_tests { assert!(dispatcher.cache.trial_decrypted.is_empty()); let expected = BTreeMap::from([( arbitrary_vk(), - Some(MaspIndexedTx { - indexed_tx: IndexedTx::entire_block(9.into()), - kind: MaspTxKind::Transfer, - }), + KeySyncData { + height: MaspIndexedTx { + indexed_tx: IndexedTx::entire_block(10.into()), + kind: MaspTxKind::Transfer, + }, + ..Default::default() + }, )]); - assert_eq!(expected, dispatcher.ctx.vk_heights); + assert_eq!(expected, dispatcher.ctx.vk_sync); }) .await; } @@ -1114,7 +1216,7 @@ mod dispatcher_tests { /// Test that upon each retry, we either resume from the /// latest height that had been previously stored in the - /// `vk_heights`. + /// `vk_sync`. #[test] fn test_min_height_to_sync_from() { let temp_dir = tempdir().unwrap(); @@ -1129,20 +1231,20 @@ mod dispatcher_tests { // the min height here should be 1, since // this vk hasn't decrypted any note yet - shielded_ctx.vk_heights.insert(vk, None); + shielded_ctx.vk_sync.insert(vk, KeySyncData::default()); let height = shielded_ctx.min_height_to_sync_from().unwrap(); assert_eq!(height, BlockHeight(1)); // let's bump the vk height - *shielded_ctx.vk_heights.get_mut(&vk).unwrap() = Some(MaspIndexedTx { + shielded_ctx.vk_sync.get_mut(&vk).unwrap().height = MaspIndexedTx { indexed_tx: IndexedTx { block_height: 6.into(), block_index: TxIndex(0), batch_index: None, }, kind: MaspTxKind::Transfer, - }); + }; // the min height should now be 6 let height = shielded_ctx.min_height_to_sync_from().unwrap(); @@ -1176,7 +1278,7 @@ mod dispatcher_tests { let utils = FsShieldedUtils { context_dir: temp_dir.path().to_path_buf(), }; - let (client, masp_tx_sender) = TestingMaspClient::new(2.into()); + let (client, masp_tx_sender) = TestingMaspClient::new(3.into()); let (_send, shutdown_sig) = shutdown_signal(); let mut config = ShieldedSyncConfig::builder() .fetched_tracker(DevNullProgressBar) @@ -1196,7 +1298,8 @@ mod dispatcher_tests { masp_tx_sender.send(None).expect("Test failed"); let dispatcher = config.clone().dispatcher(s, &utils).await; - let result = dispatcher.run(None, None, &[], &[vk]).await; + let result = + dispatcher.run(None, None, &[], &[(vk, None)]).await; match result { Err(msg) => assert_eq!( msg.to_string(), @@ -1220,7 +1323,7 @@ mod dispatcher_tests { .send(Some(( MaspIndexedTx { indexed_tx: IndexedTx { - block_height: 1.into(), + block_height: 2.into(), block_index: TxIndex(1), batch_index: None, }, @@ -1233,7 +1336,7 @@ mod dispatcher_tests { .send(Some(( MaspIndexedTx { indexed_tx: IndexedTx { - block_height: 1.into(), + block_height: 2.into(), block_index: TxIndex(2), batch_index: None, }, @@ -1246,7 +1349,7 @@ mod dispatcher_tests { let dispatcher = config.dispatcher(s, &utils).await; // This should complete successfully let ctx = dispatcher - .run(None, None, &[], &[vk]) + .run(None, None, &[], &[(vk, None)]) .await .expect("Test failed") .expect("Test failed"); @@ -1255,7 +1358,7 @@ mod dispatcher_tests { let expected = BTreeSet::from([ MaspIndexedTx { indexed_tx: IndexedTx { - block_height: 1.into(), + block_height: 2.into(), block_index: TxIndex(1), batch_index: None, }, @@ -1263,7 +1366,7 @@ mod dispatcher_tests { }, MaspIndexedTx { indexed_tx: IndexedTx { - block_height: 1.into(), + block_height: 2.into(), block_index: TxIndex(2), batch_index: None, }, @@ -1273,9 +1376,9 @@ mod dispatcher_tests { assert_eq!(keys, expected); assert_eq!( - *ctx.vk_heights[&vk.key].as_ref().unwrap(), + ctx.vk_sync[&vk.key].height, MaspIndexedTx { - indexed_tx: IndexedTx::entire_block(2.into(),), + indexed_tx: IndexedTx::entire_block(3.into(),), kind: MaspTxKind::Transfer } ); @@ -1284,6 +1387,139 @@ mod dispatcher_tests { .await; } + /// Test that if fetching filters out MASP txs not + /// list in fmd flags. + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] + async fn test_fetch_with_fmd_flags() { + let temp_dir = tempdir().unwrap(); + let utils = FsShieldedUtils { + context_dir: temp_dir.path().to_path_buf(), + }; + let (client, masp_tx_sender) = TestingMaspClient::new(4.into()); + let (_send, shutdown_sig) = shutdown_signal(); + let config = ShieldedSyncConfig::builder() + .fetched_tracker(DevNullProgressBar) + .scanned_tracker(DevNullProgressBar) + .applied_tracker(DevNullProgressBar) + .shutdown_signal(shutdown_sig) + .client(client) + .retry_strategy(RetryStrategy::Times(0)) + .build(); + let vk = dated_arbitrary_vk(); + + MaspLocalTaskEnv::new(4) + .expect("Test failed") + .run(|s| async { + let masp_tx = arbitrary_masp_tx(); + masp_tx_sender + .send(Some(( + MaspIndexedTx { + indexed_tx: IndexedTx { + block_height: 2.into(), + block_index: TxIndex(1), + batch_index: None, + }, + kind: MaspTxKind::Transfer, + }, + masp_tx.clone(), + ))) + .expect("Test failed"); + masp_tx_sender + .send(Some(( + MaspIndexedTx { + indexed_tx: IndexedTx { + block_height: 3.into(), + block_index: TxIndex(0), + batch_index: None, + }, + kind: MaspTxKind::Transfer, + }, + masp_tx.clone(), + ))) + .expect("Test failed"); + masp_tx_sender + .send(Some(( + MaspIndexedTx { + indexed_tx: IndexedTx { + block_height: 3.into(), + block_index: TxIndex(1), + batch_index: None, + }, + kind: MaspTxKind::Transfer, + }, + masp_tx.clone(), + ))) + .expect("Test failed"); + masp_tx_sender + .send(Some(( + MaspIndexedTx { + indexed_tx: IndexedTx { + block_height: 4.into(), + block_index: TxIndex(0), + batch_index: None, + }, + kind: MaspTxKind::Transfer, + }, + masp_tx.clone(), + ))) + .expect("Test failed"); + let dispatcher = config.clone().dispatcher(s, &utils).await; + + let ctx = dispatcher + .run( + None, + None, + &[], + &[( + vk, + Some( + [ + Index { height: 3, tx: 0 }, + Index { height: 3, tx: 1 }, + Index { height: 5, tx: 0 }, + ] + .into_iter() + .collect(), + ), + )], + ) + .await + .expect("Test failed") + .expect("Test failed"); + + let keys = + ctx.note_index.keys().cloned().collect::>(); + let expected = BTreeSet::from([ + MaspIndexedTx { + indexed_tx: IndexedTx { + block_height: 3.into(), + block_index: TxIndex(0), + batch_index: None, + }, + kind: MaspTxKind::Transfer, + }, + MaspIndexedTx { + indexed_tx: IndexedTx { + block_height: 3.into(), + block_index: TxIndex(1), + batch_index: None, + }, + kind: MaspTxKind::Transfer, + }, + ]); + + assert_eq!(keys, expected); + assert_eq!( + ctx.vk_sync[&vk.key].height, + MaspIndexedTx { + indexed_tx: IndexedTx::entire_block(4.into()), + kind: MaspTxKind::Transfer + } + ); + }) + .await; + } + /// Test that if we don't scan all fetched notes, they /// are persisted in a cache #[tokio::test(flavor = "multi_thread", worker_threads = 2)] @@ -1292,7 +1528,7 @@ mod dispatcher_tests { let utils = FsShieldedUtils { context_dir: temp_dir.path().to_path_buf(), }; - let (client, masp_tx_sender) = TestingMaspClient::new(3.into()); + let (client, masp_tx_sender) = TestingMaspClient::new(4.into()); let (_send, shutdown_sig) = shutdown_signal(); let config = ShieldedSyncConfig::builder() .fetched_tracker(DevNullProgressBar) @@ -1315,7 +1551,7 @@ mod dispatcher_tests { .send(Some(( MaspIndexedTx { indexed_tx: IndexedTx { - block_height: 1.into(), + block_height: 2.into(), block_index: TxIndex(1), batch_index: None, }, @@ -1328,7 +1564,7 @@ mod dispatcher_tests { .send(Some(( MaspIndexedTx { indexed_tx: IndexedTx { - block_height: 1.into(), + block_height: 2.into(), block_index: TxIndex(2), batch_index: None, }, @@ -1338,7 +1574,8 @@ mod dispatcher_tests { ))) .expect("Test failed"); masp_tx_sender.send(None).expect("Test failed"); - let result = dispatcher.run(None, None, &[], &[vk]).await; + let result = + dispatcher.run(None, None, &[], &[(vk, None)]).await; match result { Err(msg) => assert_eq!( msg.to_string(), @@ -1353,7 +1590,7 @@ mod dispatcher_tests { ( MaspIndexedTx { indexed_tx: IndexedTx { - block_height: 1.into(), + block_height: 2.into(), block_index: TxIndex(1), batch_index: None, }, @@ -1364,7 +1601,7 @@ mod dispatcher_tests { ( MaspIndexedTx { indexed_tx: IndexedTx { - block_height: 1.into(), + block_height: 2.into(), block_index: TxIndex(2), batch_index: None, }, @@ -1378,6 +1615,81 @@ mod dispatcher_tests { .await; } + /// Test that notes in the fetched cache are not trial + /// decrypted against viewing keys for which they are not + /// flagged via FMD. + #[tokio::test(flavor = "multi_thread", worker_threads = 2)] + async fn test_fmd_with_trial_decryption() { + let temp_dir = tempdir().unwrap(); + let utils = FsShieldedUtils { + context_dir: temp_dir.path().to_path_buf(), + }; + let (client, _masp_tx_sender) = TestingMaspClient::new(2.into()); + let (_send, shutdown_sig) = shutdown_signal(); + let config = ShieldedSyncConfig::builder() + .fetched_tracker(DevNullProgressBar) + .scanned_tracker(DevNullProgressBar) + .applied_tracker(DevNullProgressBar) + .shutdown_signal(shutdown_sig) + .client(client) + .retry_strategy(RetryStrategy::Times(0)) + .block_batch_size(1) + .build(); + let vk = dated_arbitrary_vk(); + MaspLocalTaskEnv::new(4) + .expect("Test failed") + .run(|s| async { + let mut dispatcher = config.clone().dispatcher(s, &utils).await; + let masp_tx = arbitrary_masp_tx(); + // insert MASP txs that will not be flagged for the viewing key + dispatcher.cache.fetched.txs.insert( + MaspIndexedTx { + indexed_tx: IndexedTx { + block_height: 2.into(), + block_index: TxIndex(1), + batch_index: None, + }, + kind: MaspTxKind::Transfer, + }, + masp_tx.clone(), + ); + dispatcher.cache.fetched.txs.insert( + MaspIndexedTx { + indexed_tx: IndexedTx { + block_height: 2.into(), + block_index: TxIndex(3), + batch_index: None, + }, + kind: MaspTxKind::Transfer, + }, + masp_tx.clone(), + ); + + let ctx = dispatcher + .run( + Some(2.into()), + Some(2.into()), + &[], + &[( + vk, + Some( + [Index { height: 2, tx: 0 }] + .into_iter() + .collect(), + ), + )], + ) + .await + .expect("Test failed") + .expect("Test failed"); + // check that no notes have been trial decrypted + assert!(ctx.pos_map.is_empty()); + assert!(ctx.note_map.is_empty()); + assert!(ctx.vk_map.is_empty()); + }) + .await; + } + /// Test that we can successfully interrupt the dispatcher /// and that it cleans up after itself. #[tokio::test(flavor = "multi_thread", worker_threads = 2)] @@ -1386,7 +1698,7 @@ mod dispatcher_tests { let utils = FsShieldedUtils { context_dir: temp_dir.path().to_path_buf(), }; - let (client, masp_tx_sender) = TestingMaspClient::new(2.into()); + let (client, masp_tx_sender) = TestingMaspClient::new(3.into()); let (send, shutdown_sig) = shutdown_signal(); let config = ShieldedSyncConfig::builder() .fetched_tracker(DevNullProgressBar) @@ -1409,7 +1721,7 @@ mod dispatcher_tests { .send(Some(( MaspIndexedTx { indexed_tx: IndexedTx { - block_height: 1.into(), + block_height: 2.into(), block_index: TxIndex(1), batch_index: None, }, @@ -1421,7 +1733,7 @@ mod dispatcher_tests { send.send_replace(true); let res = dispatcher - .run(None, None, &[], &[dated_arbitrary_vk()]) + .run(None, None, &[], &[(dated_arbitrary_vk(), None)]) .await .expect("Test failed"); assert!(res.is_none()); @@ -1482,27 +1794,27 @@ mod dispatcher_tests { MaspLocalTaskEnv::new(4).unwrap(), config.clone(), None, - &[sk], - &[vk], + &[(sk, None)], + &[(vk, None)], ) .await .expect("Test failed"); let birthdays = shielded_ctx - .vk_heights + .vk_sync .values() - .cloned() + .map(|s| s.height) .collect::>(); assert_eq!( birthdays, vec![ - Some(MaspIndexedTx { + MaspIndexedTx { indexed_tx: IndexedTx::entire_block(BlockHeight(30)), kind: MaspTxKind::Transfer - }), - Some(MaspIndexedTx { + }, + MaspIndexedTx { indexed_tx: IndexedTx::entire_block(BlockHeight(10)), kind: MaspTxKind::Transfer - }) + } ] ); @@ -1529,27 +1841,27 @@ mod dispatcher_tests { MaspLocalTaskEnv::new(4).unwrap(), config, None, - &[sk], - &[vk], + &[(sk, None)], + &[(vk, None)], ) .await .expect("Test failed"); let birthdays = shielded_ctx - .vk_heights + .vk_sync .values() - .cloned() + .map(|s| s.height) .collect::>(); assert_eq!( birthdays, vec![ - Some(MaspIndexedTx { + MaspIndexedTx { indexed_tx: IndexedTx::entire_block(BlockHeight(60)), kind: MaspTxKind::Transfer - }), - Some(MaspIndexedTx { + }, + MaspIndexedTx { indexed_tx: IndexedTx::entire_block(BlockHeight(10)), kind: MaspTxKind::Transfer - }) + } ] ) } diff --git a/crates/shielded_token/src/masp/shielded_sync/utils.rs b/crates/shielded_token/src/masp/shielded_sync/utils.rs index f88e4c5554..230560ded6 100644 --- a/crates/shielded_token/src/masp/shielded_sync/utils.rs +++ b/crates/shielded_token/src/masp/shielded_sync/utils.rs @@ -4,6 +4,7 @@ use std::collections::BTreeMap; use std::ops::{Bound, RangeBounds}; use borsh::{BorshDeserialize, BorshSerialize}; +use kassandra::IndexList; use masp_primitives::memo::MemoBytes; use masp_primitives::merkle_tree::{CommitmentTree, IncrementalWitness}; use masp_primitives::sapling::{Node, Note, PaymentAddress, ViewingKey}; @@ -423,6 +424,10 @@ pub trait MaspClient: Clone { &self, root: &Node, ) -> Result; + + /// The set of MASP txs to be downloaded as determined by fuzzy + /// message detection. If `None`, everything is fetched + fn set_fmd_indices(&mut self, fmd_indices: Option); } /// Given a block height range we wish to request and a cache of fetched block diff --git a/crates/shielded_token/src/masp/shielded_wallet.rs b/crates/shielded_token/src/masp/shielded_wallet.rs index 4c7312697d..c53070a301 100644 --- a/crates/shielded_token/src/masp/shielded_wallet.rs +++ b/crates/shielded_token/src/masp/shielded_wallet.rs @@ -1,7 +1,9 @@ //! The shielded wallet implementation use std::collections::{BTreeMap, BTreeSet, btree_map}; +use std::io::{Read, Write}; use eyre::{Context, eyre}; +use kassandra::{Index, IndexList}; use masp_primitives::asset_type::AssetType; #[cfg(feature = "mainnet")] use masp_primitives::consensus::MainNetwork as Network; @@ -59,6 +61,121 @@ use crate::masp::{ #[cfg(any(test, feature = "testing"))] use crate::masp::{ENV_VAR_MASP_TEST_SEED, testing}; +/// A list of index sets provided by different +/// FMD detection servers for a given key. +#[derive(Debug, Default, Clone, PartialEq, Eq)] +pub struct FmdIndices { + /// Each individual set is a list of MASP txs that a + /// particular server flagged as relevant for the + /// key. + list: Vec, + /// The union of all elements in `list` + union: HashSet, + /// The intersection of all elements in `list` + intersection: HashSet, +} + +impl From> for FmdIndices { + fn from(list: Vec) -> Self { + let acc = if list.is_empty() { + HashSet::new() + } else { + list.last().unwrap().iter().copied().collect() + }; + Self { + union: list.iter().fold(HashSet::new(), |mut acc, ix_list| { + let mut set = ix_list.iter().copied().collect::>(); + acc.append(&mut set); + acc + }), + intersection: list.iter().fold(acc, |mut acc, ix_list| { + let set = ix_list.iter().copied().collect::>(); + acc = acc.intersection(&set).copied().collect(); + acc + }), + list, + } + } +} + +impl FromIterator for FmdIndices { + fn from_iter>(iter: T) -> Self { + let list = iter.into_iter().collect::(); + Self::from(vec![list]) + } +} + +impl BorshSerialize for FmdIndices { + fn serialize(&self, writer: &mut W) -> std::io::Result<()> { + BorshSerialize::serialize(&self.list, writer) + } +} + +impl BorshDeserialize for FmdIndices { + fn deserialize_reader(reader: &mut R) -> std::io::Result { + as BorshDeserialize>::deserialize_reader(reader) + .map(Self::from) + } +} + +impl FmdIndices { + /// Check if an index has been flagged for this key + pub fn flagged(&self, ix: &Index) -> bool { + self.intersection.contains(ix) + } + + /// Get an iterator over the union of the indices from + /// each index set + pub fn union(&self) -> impl Iterator + use<'_> { + self.union.iter().copied() + } + + /// Use a predicate to determine which indices to keep + /// in the list. + pub fn retain

(&mut self, pred: P) + where + P: FnMut(&Index) -> bool + Clone, + { + let mut list = std::mem::take(&mut self.list); + for ix_list in list.iter_mut() { + ix_list.retain(pred.clone()); + } + *self = Self::from(list); + } +} + +/// Struct to hold data necessary to sync viewing keys. +#[derive( + BorshSerialize, BorshDeserialize, Debug, Default, Clone, PartialEq, Eq, +)] +pub struct KeySyncData { + /// Height the key is synced to + pub height: MaspIndexedTx, + /// An index representing a subset of all MASP txs + /// relevant to this key. Found via fuzzy message + /// detection. + pub fmd_indices: Option, +} + +impl KeySyncData { + /// Check if a MASP transaction is flagged as relevant for the + /// associated key + pub fn flagged( + &self, + MaspIndexedTx { + indexed_tx: itx, .. + }: &MaspIndexedTx, + ) -> bool { + match self.fmd_indices.as_ref() { + None => true, + Some(indices) => indices.flagged(&Index { + height: itx.block_height.0, + tx: itx.block_index.0, + }), + } + } +} + /// Represents the current state of the shielded pool from the perspective of /// the chosen viewing keys. #[derive(BorshSerialize, BorshDeserialize, Debug)] @@ -70,7 +187,9 @@ pub struct ShieldedWallet { pub tree: CommitmentTree, /// Maps viewing keys to the block height to which they are synced. /// In particular, the height given by the value *has been scanned*. - pub vk_heights: BTreeMap>, + /// Also includes an optional list of indices of txs relevant for + /// the key. + pub vk_sync: BTreeMap, /// Maps viewing keys to applicable note positions pub pos_map: HashMap>, /// Maps a nullifier to the note position to which it applies @@ -101,7 +220,7 @@ impl Default for ShieldedWallet { fn default() -> ShieldedWallet { ShieldedWallet:: { utils: U::default(), - vk_heights: BTreeMap::new(), + vk_sync: BTreeMap::new(), note_index: BTreeMap::default(), tree: CommitmentTree::empty(), pos_map: HashMap::default(), @@ -176,6 +295,19 @@ impl ShieldedWallet { Ok(()) } + /// Take the union of all FMD index lists of keys controlled by + /// this wallet. This represents the minimum set of MASP txs + /// needed to be fetched for all keys. + pub fn combined_fmd_indices(&self) -> Option { + self.vk_sync + .values() + .try_fold(IndexList::default(), |mut acc, ix| { + let next = ix.fmd_indices.as_ref()?; + acc.union(&next.union().collect()); + Some(acc) + }) + } + /// Sync the current state of the multi-asset shielded pool in a /// ShieldedContext with the state on-chain. pub async fn sync( @@ -183,8 +315,8 @@ impl ShieldedWallet { env: impl TaskEnvironment, config: ShieldedSyncConfig, last_query_height: Option, - sks: &[DatedSpendingKey], - fvks: &[DatedKeypair], + sks: &[(DatedSpendingKey, Option)], + fvks: &[(DatedKeypair, Option)], ) -> Result<(), eyre::Error> where M: MaspClient + Send + Sync + Unpin + 'static, @@ -208,8 +340,11 @@ impl ShieldedWallet { pub(crate) fn min_height_to_sync_from( &self, ) -> Result { - let Some(maybe_least_synced_vk_height) = - self.vk_heights.values().min().cloned() + let Some(maybe_least_synced_vk_height) = self + .vk_sync + .values() + .map(|s| s.height.indexed_tx.block_height) + .min() else { return Err(eyre!( "No viewing keys are available in the shielded context to \ @@ -217,8 +352,7 @@ impl ShieldedWallet { .to_string(), )); }; - Ok(maybe_least_synced_vk_height - .map_or_else(BlockHeight::first, |itx| itx.indexed_tx.block_height)) + Ok(maybe_least_synced_vk_height) } #[allow(missing_docs)] @@ -1859,7 +1993,8 @@ mod test_shielded_wallet { use super::*; use crate::masp::fs::FsShieldedUtils; use crate::masp::test_utils::{ - MockNamadaIo, TestingContext, arbitrary_pa, arbitrary_vk, create_note, + MockNamadaIo, TestingContext, arbitrary_pa, arbitrary_vk, + arbitrary_vk2, create_note, }; #[tokio::test] @@ -2203,6 +2338,83 @@ mod test_shielded_wallet { assert_eq!(rewards_est, DenominatedAmount::native(0.into())); } + #[test] + fn test_vk_sync() { + let temp_dir = tempdir().unwrap(); + let mut wallet = FsShieldedUtils::new(temp_dir.path().to_path_buf()); + + wallet.vk_sync.insert( + arbitrary_vk(), + KeySyncData { + height: Default::default(), + fmd_indices: Some(FmdIndices::from(vec![ + [ + Index { height: 3, tx: 0 }, + Index { height: 3, tx: 1 }, + Index { height: 5, tx: 0 }, + ] + .into_iter() + .collect(), + [ + Index { height: 3, tx: 1 }, + Index { height: 3, tx: 2 }, + Index { height: 5, tx: 1 }, + ] + .into_iter() + .collect(), + ])), + }, + ); + wallet.vk_sync.insert( + arbitrary_vk2(), + KeySyncData { + height: Default::default(), + fmd_indices: Some(FmdIndices::from(vec![ + [Index { height: 1, tx: 0 }, Index { height: 1, tx: 1 }] + .into_iter() + .collect(), + ])), + }, + ); + let expected = [ + Index { height: 1, tx: 0 }, + Index { height: 1, tx: 1 }, + Index { height: 3, tx: 0 }, + Index { height: 3, tx: 1 }, + Index { height: 3, tx: 2 }, + Index { height: 5, tx: 0 }, + Index { height: 5, tx: 1 }, + ] + .into_iter() + .collect::(); + assert_eq!( + expected, + wallet.combined_fmd_indices().expect("Test failed") + ); + let indices = wallet.vk_sync.get(&arbitrary_vk()).expect("Test failed"); + for ix in [ + Index { height: 3, tx: 0 }, + Index { height: 3, tx: 2 }, + Index { height: 5, tx: 0 }, + Index { height: 5, tx: 1 }, + ] { + assert!( + !indices + .fmd_indices + .as_ref() + .expect("Test failed") + .flagged(&ix) + ) + } + assert!( + indices + .fmd_indices + .as_ref() + .expect("Test failed") + .flagged(&Index { height: 3, tx: 1 }) + ) + } + proptest! { /// In this test, we have a single incentivized token /// shielded at MaspEpoch(2), owned by the shielded wallet. diff --git a/crates/shielded_token/src/masp/test_utils.rs b/crates/shielded_token/src/masp/test_utils.rs index 26a7c55a54..db492c7720 100644 --- a/crates/shielded_token/src/masp/test_utils.rs +++ b/crates/shielded_token/src/masp/test_utils.rs @@ -4,6 +4,7 @@ use std::sync::Arc; use borsh::BorshDeserialize; use eyre::eyre; +use kassandra::{Index, IndexList}; use masp_primitives::asset_type::AssetType; use masp_primitives::merkle_tree::{ CommitmentTree, IncrementalWitness, MerklePath, @@ -38,7 +39,7 @@ use crate::masp::utils::{ /// A viewing key derived from A_SPENDING_KEY pub const AA_VIEWING_KEY: &str = "zvknam1qqqqqqqqqqqqqq9v0sls5r5de7njx8ehu49pqgmqr9ygelg87l5x8y4s9r0pjlvu6x74w9gjpw856zcu826qesdre628y6tjc26uhgj6d9zqur9l5u3p99d9ggc74ald6s8y3sdtka74qmheyqvdrasqpwyv2fsmxlz57lj4grm2pthzj3sflxc0jx0edrakx3vdcngrfjmru8ywkguru8mxss2uuqxdlglaz6undx5h8w7g70t2es850g48xzdkqay5qs0yw06rtxcpjdve6"; - +pub const B_VIEWING_KEY: &str = "zvknam1q080khy2qgqqpqrp6vhyc2d39vpn5rty473yzycelycdlmlzxkj6jyevtw4x4ycm2jujg3463hx2nlgwuw45yfgl2dr86te7u4t4s6p57fzuvsxmkumk8mwpafv8cfdqcalrt9h2vngqag3q2hae0mp6ptv3zdgyjh0ycv38j07f0ckn9mkszd4kc6t3lpn37engast5lct67ef6dg3uezqzmxpmps43xlvgfjkxhlhd07k8c5klqhl0ymxpk0wlvr22wnshnqvuc0crg6tme"; // A payment address derived from A_SPENDING_KEY pub const AA_PAYMENT_ADDRESS: &str = "znam1ky620tz7z658cralqt693qpvk42wvth468zp38nqvq2apmex5rfut3dfqm2asrsqv0tc7saqje7"; @@ -54,6 +55,14 @@ pub fn arbitrary_vk() -> ViewingKey { .vk } +pub fn arbitrary_vk2() -> ViewingKey { + ExtendedFullViewingKey::from( + ExtendedViewingKey::from_str(B_VIEWING_KEY).expect("Test failed"), + ) + .fvk + .vk +} + pub fn arbitrary_pa() -> PaymentAddress { FromStr::from_str(AA_PAYMENT_ADDRESS).expect("Test failed") } @@ -357,6 +366,7 @@ pub fn arbitrary_masp_tx_with_fee_unshielding() -> Transaction { pub struct TestingMaspClient { last_height: BlockHeight, tx_recv: flume::Receiver>, + fmd_indices: Option, } impl TestingMaspClient { @@ -370,6 +380,7 @@ impl TestingMaspClient { Self { last_height, tx_recv, + fmd_indices: None, }, sender, ) @@ -398,9 +409,18 @@ impl MaspClient for TestingMaspClient { to: BlockHeight, ) -> Result, Self::Error> { let mut txs = vec![]; - - for _height in from.0..=to.0 { + // all keys are already synced to height 1. + let from = std::cmp::max(from.0, 2); + for _height in from..=to.0 { if let Some(tx) = self.tx_recv.recv_async().await.unwrap() { + if let Some(indices) = self.fmd_indices.as_ref() { + if !indices.contains(&Index { + height: tx.0.indexed_tx.block_height.0, + tx: tx.0.indexed_tx.block_index.0, + }) { + continue; + } + } txs.push(tx); } else { return Err(TestError::FetchFailure); @@ -446,6 +466,10 @@ impl MaspClient for TestingMaspClient { ) -> Result { Ok(true) } + + fn set_fmd_indices(&mut self, fmd_indices: Option) { + self.fmd_indices = fmd_indices; + } } /// A shielded context for testing diff --git a/crates/wallet/src/keys.rs b/crates/wallet/src/keys.rs index 77cfe44215..e9220a9ba2 100644 --- a/crates/wallet/src/keys.rs +++ b/crates/wallet/src/keys.rs @@ -225,7 +225,7 @@ where pub fn new(key: T, birthday: Option) -> Self { Self { key, - birthday: birthday.unwrap_or(BlockHeight(0)), + birthday: birthday.unwrap_or(BlockHeight(1)), } } diff --git a/wasm/Cargo.lock b/wasm/Cargo.lock index 9d082bffa6..defe443d41 100644 --- a/wasm/Cargo.lock +++ b/wasm/Cargo.lock @@ -68,7 +68,7 @@ dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -109,9 +109,9 @@ checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "ark-bls12-381" @@ -173,7 +173,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -186,7 +186,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -225,7 +225,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -278,18 +278,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "async-trait" -version = "0.1.86" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -320,13 +320,13 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "auto_impl" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12882f59de5360c748c4cbf569a042d5fb0eb515f7bea9c1f470b47f6ffbd73" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -429,9 +429,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" [[package]] name = "basecoin-store" @@ -538,9 +538,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" dependencies = [ "serde", ] @@ -590,9 +590,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.5" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", "arrayvec", @@ -642,9 +642,9 @@ dependencies = [ [[package]] name = "bon" -version = "3.3.2" +version = "3.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe7acc34ff59877422326db7d6f2d845a582b16396b6b08194942bf34c6528ab" +checksum = "ced38439e7a86a4761f7f7d5ded5ff009135939ecb464a24452eaa4c1696af7d" dependencies = [ "bon-macros", "rustversion", @@ -652,9 +652,9 @@ dependencies = [ [[package]] name = "bon-macros" -version = "3.3.2" +version = "3.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4159dd617a7fbc9be6a692fe69dc2954f8e6bb6bb5e4d7578467441390d77fd0" +checksum = "0ce61d2d3844c6b8d31b2353d9f66cf5e632b3e9549583fe3cac2f4f6136725e" dependencies = [ "darling", "ident_case", @@ -662,14 +662,14 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "borsh" -version = "1.5.5" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5430e3be710b68d984d1391c854eb431a9d548640711faa54eecb1df93db91cc" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" dependencies = [ "borsh-derive", "cfg_aliases", @@ -677,15 +677,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.5" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8b668d39970baad5356d7c83a86fee3a539e6f93bf6764c97368243e17a0487" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -706,9 +706,9 @@ checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytecheck" @@ -740,9 +740,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -759,12 +759,11 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.12+1.0.8" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ebc2f1a417f01e1da30ef264ee86ae31d2dcd2d603ea283d3c244a883ca2a9" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" dependencies = [ "cc", - "libc", "pkg-config", ] @@ -811,9 +810,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.13" +version = "1.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" +checksum = "04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a" dependencies = [ "jobserver", "libc", @@ -858,14 +857,14 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -881,27 +880,27 @@ dependencies = [ [[package]] name = "circular-queue" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d34327ead1c743a10db339de35fb58957564b99d248a67985c55638b22c59b5" +checksum = "2df8276ab95fe8665a814190345239d91105df5df0fda26ddc7784c96244dc76" dependencies = [ "version_check", ] [[package]] name = "clap" -version = "4.5.29" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acebd8ad879283633b343856142139f2da2317c96b05b4dd6181c61e2480184" +checksum = "eccb054f56cbd38340b380d4a8e69ef1f02f1af43db2f0cc817a4774d80ae071" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.29" +version = "4.5.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ba32cbda51c7e1dfd49acc1457ba1a7dec5b64fe360e828acb13ca8dc9c2f9" +checksum = "efd9466fac8543255d3b1fcad4762c5e116ffe808c8a3043d4263cd4fd4862a2" dependencies = [ "anstyle", "clap_lex", @@ -925,6 +924,15 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.12", +] + [[package]] name = "coins-bip32" version = "0.8.7" @@ -984,7 +992,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f76990911f2267d837d9d0ad060aa63aaad170af40904b29461734c339030d4d" dependencies = [ "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -1272,14 +1280,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", + "rand_core", "typenum", ] [[package]] name = "ct-codecs" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b916ba8ce9e4182696896f015e8a5ae6081b305f74690baa8465e35f5a142ea4" +checksum = "e994091bae428316ad612b1d563e7bd917141ba942963f65251bb07c0f31cc55" [[package]] name = "ctr" @@ -1290,6 +1299,34 @@ dependencies = [ "cipher", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "fiat-crypto", + "rand_core", + "rustc_version", + "serde", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "curve25519-dalek-ng" version = "4.1.1" @@ -1305,9 +1342,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ "darling_core", "darling_macro", @@ -1315,27 +1352,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -1354,9 +1391,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "debugless-unwrap" @@ -1366,9 +1403,9 @@ checksum = "f400d0750c0c069e8493f2256cb4da6f604b6d2eeb69a0ca8863acde352f8400" [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "zeroize", @@ -1408,18 +1445,18 @@ checksum = "74ef43543e701c01ad77d3a5922755c6a1d71b22d942cb8042be4994b380caff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "derive_more" -version = "0.99.19" +version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -1439,7 +1476,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", "unicode-xid", ] @@ -1523,7 +1560,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -1560,7 +1597,7 @@ dependencies = [ "chrono", "rust_decimal", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", "winnow 0.6.26", ] @@ -1646,7 +1683,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -1760,7 +1797,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -1781,7 +1818,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -1971,7 +2008,7 @@ dependencies = [ "reqwest 0.11.27", "serde", "serde_json", - "syn 2.0.98", + "syn 2.0.101", "toml", "walkdir", ] @@ -1989,7 +2026,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -2015,7 +2052,7 @@ dependencies = [ "serde", "serde_json", "strum 0.26.3", - "syn 2.0.98", + "syn 2.0.101", "tempfile", "thiserror 1.0.69", "tiny-keccak", @@ -2182,7 +2219,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947" dependencies = [ "cfg-if", - "rustix", + "rustix 0.38.44", "windows-sys 0.52.0", ] @@ -2319,7 +2356,7 @@ dependencies = [ "rand_core", "serde", "serdect", - "thiserror 2.0.11", + "thiserror 2.0.12", "thiserror-nostd-notrait", "visibility", "zeroize", @@ -2420,7 +2457,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -2615,6 +2652,12 @@ dependencies = [ "tracing", ] +[[package]] +name = "half" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" + [[package]] name = "hash32" version = "0.2.1" @@ -2850,10 +2893,10 @@ dependencies = [ "http 1.2.0", "hyper 1.6.0", "hyper-util", - "rustls 0.23.23", + "rustls 0.23.26", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.1", + "tokio-rustls 0.26.2", "tower-service", ] @@ -3387,7 +3430,7 @@ checksum = "27e93e76ce4da46027a59a5f2c3152e6d4adc4a9d541c782ff69b89e7fa2ccb8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -3656,7 +3699,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -3750,7 +3793,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -3935,6 +3978,27 @@ dependencies = [ "signature", ] +[[package]] +name = "kassandra-shared" +version = "0.0.2-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248852e4390561ee568ec214be663837e2d254576ec6b210f5799c24450203b1" +dependencies = [ + "borsh", + "chacha20poly1305", + "cobs 0.3.0", + "hex", + "once_cell", + "polyfuzzy", + "rand_core", + "serde", + "serde_cbor", + "sha2 0.10.8", + "tdx-quote", + "thiserror 2.0.12", + "x25519-dalek", +] + [[package]] name = "kdam" version = "0.6.2" @@ -4018,15 +4082,15 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libm" -version = "0.2.11" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "c9627da5196e5d8ed0b0495e61e518847578da83483c37288316d9b2e03a7f72" [[package]] name = "libredox" @@ -4034,7 +4098,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "libc", ] @@ -4044,11 +4108,17 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + [[package]] name = "litemap" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "litrs" @@ -4340,7 +4410,7 @@ dependencies = [ "pasta_curves", "rand_core", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "zeroize", ] @@ -4401,7 +4471,7 @@ version = "0.149.1" dependencies = [ "namada_core", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -4443,7 +4513,7 @@ dependencies = [ "smooth-operator", "tendermint 0.40.3", "tendermint-proto 0.40.3", - "thiserror 2.0.11", + "thiserror 2.0.12", "tiny-keccak", "tokio", "tracing", @@ -4478,7 +4548,7 @@ dependencies = [ "namada_vp_env", "serde", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -4491,7 +4561,7 @@ dependencies = [ "namada_macros", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -4504,7 +4574,7 @@ dependencies = [ "namada_events", "namada_macros", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -4526,7 +4596,7 @@ dependencies = [ "serde", "serde_json", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -4562,7 +4632,7 @@ dependencies = [ "serde_json", "sha2 0.10.8", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -4574,7 +4644,7 @@ dependencies = [ "kdam", "namada_core", "tendermint-rpc", - "thiserror 2.0.11", + "thiserror 2.0.12", "tokio", ] @@ -4586,7 +4656,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -4600,7 +4670,7 @@ dependencies = [ "namada_core", "namada_macros", "prost", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -4614,7 +4684,7 @@ dependencies = [ "namada_tx", "namada_vp_env", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -4637,7 +4707,7 @@ dependencies = [ "proptest", "serde", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -4669,6 +4739,7 @@ dependencies = [ "getrandom 0.3.1", "init-once", "itertools 0.14.0", + "kassandra-shared", "lazy_static", "masp_primitives", "masp_proofs", @@ -4703,7 +4774,7 @@ dependencies = [ "rand_core", "rayon", "regex", - "reqwest 0.12.12", + "reqwest 0.12.15", "rustversion", "serde", "serde_json", @@ -4711,7 +4782,7 @@ dependencies = [ "smooth-operator", "tempfile", "tendermint-rpc", - "thiserror 2.0.11", + "thiserror 2.0.12", "tiny-bip39", "tokio", "toml", @@ -4730,6 +4801,7 @@ dependencies = [ "flume", "futures", "itertools 0.14.0", + "kassandra-shared", "lazy_static", "masp_primitives", "masp_proofs", @@ -4755,7 +4827,7 @@ dependencies = [ "sha2 0.10.8", "smooth-operator", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "typed-builder", "xorf", @@ -4780,7 +4852,7 @@ dependencies = [ "patricia_tree", "proptest", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -4798,7 +4870,7 @@ dependencies = [ "regex", "serde", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -4819,7 +4891,7 @@ dependencies = [ "namada_core", "namada_state", "prost", - "strum 0.27.0", + "strum 0.27.1", ] [[package]] @@ -4887,7 +4959,7 @@ dependencies = [ "namada_tx", "namada_tx_env", "namada_vp_env", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -4896,7 +4968,7 @@ name = "namada_tx" version = "0.149.1" dependencies = [ "ark-bls12-381", - "bitflags 2.8.0", + "bitflags 2.9.0", "borsh", "data-encoding", "either", @@ -4916,7 +4988,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "thiserror 2.0.11", + "thiserror 2.0.12", "tonic-build", ] @@ -4969,7 +5041,7 @@ dependencies = [ "rayon", "smooth-operator", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "wasm-instrument", "wasmer", @@ -5008,7 +5080,7 @@ dependencies = [ "namada_tx", "namada_vp_env", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -5069,7 +5141,7 @@ dependencies = [ "serde", "slip10_ed25519", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tiny-bip39", "toml", "zeroize", @@ -5086,9 +5158,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -5153,7 +5225,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -5225,7 +5297,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -5239,9 +5311,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "opaque-debug" @@ -5276,11 +5348,11 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.70" +version = "0.10.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" +checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "cfg-if", "foreign-types", "libc", @@ -5297,7 +5369,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -5308,9 +5380,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.105" +version = "0.9.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" +checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" dependencies = [ "cc", "libc", @@ -5326,9 +5398,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "orion" -version = "0.17.8" +version = "0.17.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd806049e71da4c4a7880466b37afdc5a4c5b35a398b0d4fd9ff5d278d3b4db9" +checksum = "ccc95d369bc6b5cf404c562cd33de439ae9ca6dc4b044cd2625b2072ca0b81e4" dependencies = [ "ct-codecs", "fiat-crypto", @@ -5339,9 +5411,21 @@ dependencies = [ [[package]] name = "owo-colors" -version = "4.1.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56" +checksum = "1036865bb9422d3300cf723f657c2851d0e9ab12567854b1f4eba3d77decf564" + +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2 0.10.8", +] [[package]] name = "pairing" @@ -5377,7 +5461,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -5462,7 +5546,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31f2f4539bffe53fc4b4da301df49d114b845b077bd5727b7fe2bd9d8df2ae68" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -5490,9 +5574,9 @@ dependencies = [ [[package]] name = "peg" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "295283b02df346d1ef66052a757869b2876ac29a6bb0ac3f5f7cd44aebe40e8f" +checksum = "9928cfca101b36ec5163e70049ee5368a8a1c3c6efc9ca9c5f9cc2f816152477" dependencies = [ "peg-macros", "peg-runtime", @@ -5500,9 +5584,9 @@ dependencies = [ [[package]] name = "peg-macros" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdad6a1d9cf116a059582ce415d5f5566aabcd4008646779dab7fdc2a9a9d426" +checksum = "6298ab04c202fa5b5d52ba03269fb7b74550b150323038878fe6c372d8280f71" dependencies = [ "peg-runtime", "proc-macro2", @@ -5511,9 +5595,9 @@ dependencies = [ [[package]] name = "peg-runtime" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3aeb8f54c078314c2065ee649a7241f46b9d8e418e1a9581ba0546657d7aa3a" +checksum = "132dca9b868d927b35b5dd728167b2dee150eb1ad686008fc71ccb298b776fca" [[package]] name = "pem" @@ -5590,7 +5674,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -5604,22 +5688,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -5646,9 +5730,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "poly1305" @@ -5661,11 +5745,24 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "polyfuzzy" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4c8aa1a6ea51b5f6cb5053fd11ff19f71ba5ef5f9e99709aded1c030ddb4874" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "sha2 0.10.8", + "subtle", +] + [[package]] name = "portable-atomic" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" +checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" [[package]] name = "postcard" @@ -5673,7 +5770,7 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" dependencies = [ - "cobs", + "cobs 0.2.3", "embedded-io 0.4.0", "embedded-io 0.6.1", "heapless", @@ -5688,11 +5785,11 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy", + "zerocopy 0.8.25", ] [[package]] @@ -5703,12 +5800,21 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" +checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" dependencies = [ "proc-macro2", - "syn 2.0.98", + "syn 2.0.101", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", ] [[package]] @@ -5739,9 +5845,9 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] @@ -5772,9 +5878,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -5787,7 +5893,7 @@ checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.8.0", + "bitflags 2.9.0", "lazy_static", "num-traits", "rand", @@ -5816,7 +5922,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ "heck", - "itertools 0.11.0", + "itertools 0.14.0", "log", "multimap", "once_cell", @@ -5825,7 +5931,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.98", + "syn 2.0.101", "tempfile", ] @@ -5836,10 +5942,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.11.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -5879,9 +5985,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -5953,11 +6059,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.8" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -6091,9 +6197,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.12" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" +checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" dependencies = [ "base64 0.22.1", "bytes", @@ -6160,15 +6266,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", "getrandom 0.2.15", "libc", - "spin 0.9.8", "untrusted 0.9.0", "windows-sys 0.52.0", ] @@ -6198,7 +6303,7 @@ dependencies = [ "rkyv_derive", "seahash", "tinyvec", - "uuid 1.13.1", + "uuid 1.16.0", ] [[package]] @@ -6248,9 +6353,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.36.0" +version = "1.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" +checksum = "faa7de2ba56ac291bd90c6b9bece784a52ae1411f9506544b3eae36dd2356d50" dependencies = [ "arrayvec", "borsh", @@ -6295,10 +6400,23 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.9.4", "windows-sys 0.59.0", ] @@ -6309,20 +6427,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.8", + "ring 0.17.14", "rustls-webpki 0.101.7", "sct", ] [[package]] name = "rustls" -version = "0.23.23" +version = "0.23.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" +checksum = "df51b5869f3a441595eac5e8ff14d486ff285f7b8c0df8770e49c3b56351f0f0" dependencies = [ "once_cell", "rustls-pki-types", - "rustls-webpki 0.102.8", + "rustls-webpki 0.103.1", "subtle", "zeroize", ] @@ -6357,26 +6475,26 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "untrusted 0.9.0", ] [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "rustls-pki-types", "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "rusty-fork" @@ -6392,9 +6510,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" @@ -6435,7 +6553,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -6449,9 +6567,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" dependencies = [ "dyn-clone", "schemars_derive", @@ -6461,14 +6579,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -6495,7 +6613,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", + "ring 0.17.14", "untrusted 0.9.0", ] @@ -6526,7 +6644,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "core-foundation", "core-foundation-sys", "libc", @@ -6545,15 +6663,15 @@ dependencies = [ [[package]] name = "self_cell" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe" +checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" [[package]] name = "semver" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" dependencies = [ "serde", ] @@ -6572,9 +6690,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -6601,22 +6719,32 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.15" +version = "0.11.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" dependencies = [ "serde", ] +[[package]] +name = "serde_cbor" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +dependencies = [ + "half", + "serde", +] + [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -6627,14 +6755,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -6644,13 +6772,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -6777,9 +6905,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -6814,7 +6942,7 @@ checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.11", + "thiserror 2.0.12", "time", ] @@ -6850,9 +6978,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "smooth-operator" @@ -6871,14 +6999,14 @@ checksum = "867851a695e22b0d1fc85f2f84dba29fef7e5d571f12fb23253e0b213bf190f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", "windows-sys 0.52.0", @@ -6937,9 +7065,9 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "string_cache" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938d512196766101d333398efde81bc1f37b00cb42c2f8350e5df639f040bbbe" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", "parking_lot", @@ -6964,11 +7092,11 @@ dependencies = [ [[package]] name = "strum" -version = "0.27.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1475c515a4f03a8a7129bb5228b81a781a86cb0b3fbbc19e1c556d491a401f" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" dependencies = [ - "strum_macros 0.27.0", + "strum_macros 0.27.1", ] [[package]] @@ -6981,20 +7109,20 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "strum_macros" -version = "0.27.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9688894b43459159c82bfa5a5fa0435c19cbe3c9b427fa1dd7b1ce0c279b18a7" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" dependencies = [ "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -7064,9 +7192,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.98" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -7096,7 +7224,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -7116,7 +7244,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "core-foundation", "system-configuration-sys 0.6.0", ] @@ -7153,17 +7281,27 @@ version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" +[[package]] +name = "tdx-quote" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecbbeffe2d73f07728bcbb581f8faa9098d813ba0fafbcab5e763a2fa4491e80" +dependencies = [ + "nom", + "p256", + "sha2 0.10.8", +] + [[package]] name = "tempfile" -version = "3.16.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ - "cfg-if", "fastrand", "getrandom 0.3.1", "once_cell", - "rustix", + "rustix 1.0.5", "windows-sys 0.59.0", ] @@ -7244,7 +7382,7 @@ version = "0.40.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58dc3c4ebd336efaf0b831b0cd4d2aca24ac624875fa514e18fe636da9ea98d5" dependencies = [ - "derive_more 0.99.19", + "derive_more 0.99.20", "flex-error", "serde", "tendermint 0.40.3", @@ -7311,15 +7449,15 @@ dependencies = [ "thiserror 1.0.69", "time", "url", - "uuid 1.13.1", + "uuid 1.16.0", "walkdir", ] [[package]] name = "tendermint-testgen" -version = "0.40.1" +version = "0.40.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbbef28bac7b5b68f44416ef16d072ee8ea4af829aaf2fa259eee1c09237c36" +checksum = "cf0bf1b0142b57d5887f619e0a3686629ab7416bf8a94a468edb5e777708cb26" dependencies = [ "ed25519-consensus", "gumdrop", @@ -7344,11 +7482,11 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" +checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" dependencies = [ - "rustix", + "rustix 1.0.5", "windows-sys 0.59.0", ] @@ -7370,7 +7508,7 @@ checksum = "888d0c3c6db53c0fdab160d2ed5e12ba745383d3e85813f2ea0f2b1475ab553f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -7384,11 +7522,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] @@ -7399,18 +7537,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -7430,7 +7568,7 @@ checksum = "585e5ef40a784ce60b49c67d762110688d211d395d39e096be204535cf64590e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -7512,9 +7650,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -7527,9 +7665,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.43.0" +version = "1.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" dependencies = [ "backtrace", "bytes", @@ -7551,7 +7689,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -7576,11 +7714,11 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.1" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ - "rustls 0.23.23", + "rustls 0.23.26", "tokio", ] @@ -7612,9 +7750,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.13" +version = "0.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" dependencies = [ "bytes", "futures-core", @@ -7625,9 +7763,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" +checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" dependencies = [ "serde", "serde_spanned", @@ -7637,26 +7775,33 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap 2.7.1", "serde", "serde_spanned", "toml_datetime", - "winnow 0.7.2", + "toml_write", + "winnow 0.7.7", ] +[[package]] +name = "toml_write" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" + [[package]] name = "tonic" version = "0.12.3" @@ -7698,7 +7843,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -7767,7 +7912,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -8067,29 +8212,29 @@ dependencies = [ [[package]] name = "typed-builder" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e14ed59dc8b7b26cacb2a92bad2e8b1f098806063898ab42a3bd121d7d45e75" +checksum = "cd9d30e3a08026c78f246b173243cf07b3696d274debd26680773b6773c2afc7" dependencies = [ "typed-builder-macro", ] [[package]] name = "typed-builder-macro" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" +checksum = "3c36781cc0e46a83726d9879608e4cf6c2505237e263a8eb8c24502989cfdb28" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "typewit" @@ -8138,9 +8283,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-normalization" @@ -8236,9 +8381,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.13.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" +checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" [[package]] name = "vcpkg" @@ -8260,7 +8405,7 @@ checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -8360,7 +8505,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", "wasm-bindgen-shared", ] @@ -8395,7 +8540,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -8601,7 +8746,7 @@ version = "0.121.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dbe55c8f9d0dbd25d9447a5a889ff90c0cc3feaa7395310d3d826b2c703eaab" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", "indexmap 2.7.1", "semver", ] @@ -8697,34 +8842,39 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + [[package]] name = "windows-registry" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ "windows-result", "windows-strings", - "windows-targets 0.52.6", + "windows-targets 0.53.0", ] [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -8791,13 +8941,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -8810,6 +8976,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.33.0" @@ -8828,6 +9000,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.33.0" @@ -8846,12 +9024,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.33.0" @@ -8870,6 +9060,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.33.0" @@ -8888,6 +9084,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -8900,6 +9102,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.33.0" @@ -8918,6 +9126,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" version = "0.6.26" @@ -8929,9 +9143,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.2" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" +checksum = "6cb8234a863ea0e8cd7284fcdd4f145233eb00fee02bbdd9861aec44e6477bc5" dependencies = [ "memchr", ] @@ -8952,7 +9166,7 @@ version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.9.0", ] [[package]] @@ -8995,6 +9209,18 @@ dependencies = [ "tap", ] +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "zeroize", +] + [[package]] name = "xorf" version = "0.11.0" @@ -9038,7 +9264,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", "synstructure", ] @@ -9058,8 +9284,16 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive 0.8.25", ] [[package]] @@ -9070,27 +9304,38 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", "synstructure", ] @@ -9111,7 +9356,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -9133,7 +9378,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -9177,9 +9422,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.15+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" dependencies = [ "cc", "pkg-config", diff --git a/wasm_for_tests/Cargo.lock b/wasm_for_tests/Cargo.lock index d03c51deaf..0c042de0f4 100644 --- a/wasm_for_tests/Cargo.lock +++ b/wasm_for_tests/Cargo.lock @@ -29,7 +29,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "once_cell", "version_check", ] @@ -43,7 +43,7 @@ dependencies = [ "cfg-if", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -78,9 +78,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.95" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "ark-bls12-381" @@ -107,7 +107,7 @@ dependencies = [ "ark-std", "educe", "fnv", - "hashbrown 0.15.2", + "hashbrown 0.15.3", "itertools 0.13.0", "num-bigint", "num-integer", @@ -142,7 +142,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -155,7 +155,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -170,7 +170,7 @@ dependencies = [ "ark-std", "educe", "fnv", - "hashbrown 0.15.2", + "hashbrown 0.15.3", ] [[package]] @@ -194,7 +194,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -221,13 +221,13 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-trait" -version = "0.1.86" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -271,9 +271,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" +version = "1.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "89e25b6adfb930f02d1981565a6e5d9c547ac15a96606256d3b59040e5cd4ca3" [[package]] name = "bech32" @@ -306,16 +306,16 @@ dependencies = [ "hmac", "pbkdf2", "rand", - "sha2 0.10.8", + "sha2 0.10.9", "unicode-normalization", "zeroize", ] [[package]] name = "bitflags" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" dependencies = [ "serde", ] @@ -365,9 +365,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.5" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", "arrayvec", @@ -417,9 +417,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.5" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5430e3be710b68d984d1391c854eb431a9d548640711faa54eecb1df93db91cc" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" dependencies = [ "borsh-derive", "cfg_aliases", @@ -427,15 +427,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.5" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8b668d39970baad5356d7c83a86fee3a539e6f93bf6764c97368243e17a0487" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -446,9 +446,9 @@ checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytecheck" @@ -480,9 +480,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -498,9 +498,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.13" +version = "1.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" +checksum = "04da6a0d40b948dfc4fa8f5bbf402b0fc1a64a28dbf7d12ffd683550f2c1b63a" dependencies = [ "shlex", ] @@ -543,14 +543,14 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.39" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -576,6 +576,15 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" +[[package]] +name = "cobs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" +dependencies = [ + "thiserror 2.0.12", +] + [[package]] name = "const-crc32-nostd" version = "1.3.1" @@ -718,9 +727,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", + "rand_core", "typenum", ] +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "fiat-crypto", + "rand_core", + "rustc_version", + "serde", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "curve25519-dalek-ng" version = "4.1.1" @@ -736,9 +774,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "debugless-unwrap" @@ -748,9 +786,9 @@ checksum = "f400d0750c0c069e8493f2256cb4da6f604b6d2eeb69a0ca8863acde352f8400" [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "zeroize", @@ -784,18 +822,18 @@ checksum = "74ef43543e701c01ad77d3a5922755c6a1d71b22d942cb8042be4994b380caff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "derive_more" -version = "0.99.19" +version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -815,7 +853,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", "unicode-xid", ] @@ -869,14 +907,14 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "document-features" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" dependencies = [ "litrs", ] @@ -893,9 +931,9 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" [[package]] name = "ecdsa" @@ -946,14 +984,14 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elliptic-curve" @@ -1004,20 +1042,20 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e" dependencies = [ "libc", "windows-sys 0.59.0", @@ -1094,15 +1132,21 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ "bitvec", "rand_core", "subtle", ] +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + [[package]] name = "fixed-hash" version = "0.8.0" @@ -1167,7 +1211,7 @@ dependencies = [ "rand_core", "serde", "serdect", - "thiserror 2.0.11", + "thiserror 2.0.12", "thiserror-nostd-notrait", "visibility", "zeroize", @@ -1248,7 +1292,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -1294,9 +1338,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", @@ -1305,14 +1349,14 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" dependencies = [ "cfg-if", "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets 0.52.6", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -1327,6 +1371,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "half" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" + [[package]] name = "hash32" version = "0.2.1" @@ -1347,9 +1397,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3" dependencies = [ "allocator-api2", ] @@ -1391,9 +1441,9 @@ dependencies = [ [[package]] name = "http" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -1402,14 +1452,15 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -1623,7 +1674,7 @@ dependencies = [ "scale-info", "schemars", "serde", - "sha2 0.10.8", + "sha2 0.10.9", "subtle-encoding", "tendermint", ] @@ -1816,7 +1867,7 @@ dependencies = [ "ibc-primitives", "ibc-proto", "serde", - "sha2 0.10.8", + "sha2 0.10.9", "subtle-encoding", "tendermint", ] @@ -1882,7 +1933,7 @@ checksum = "27e93e76ce4da46027a59a5f2c3152e6d4adc4a9d541c782ff69b89e7fa2ccb8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -2000,7 +2051,7 @@ dependencies = [ "prost", "ripemd", "serde", - "sha2 0.10.8", + "sha2 0.10.9", "sha3", ] @@ -2068,7 +2119,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -2088,12 +2139,12 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.7.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.3", ] [[package]] @@ -2108,9 +2159,9 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] @@ -2144,9 +2195,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" @@ -2183,7 +2234,28 @@ dependencies = [ "elliptic-curve", "once_cell", "serdect", - "sha2 0.10.8", + "sha2 0.10.9", +] + +[[package]] +name = "kassandra-shared" +version = "0.0.2-alpha" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248852e4390561ee568ec214be663837e2d254576ec6b210f5799c24450203b1" +dependencies = [ + "borsh", + "chacha20poly1305", + "cobs 0.3.0", + "hex", + "once_cell", + "polyfuzzy", + "rand_core", + "serde", + "serde_cbor", + "sha2 0.10.9", + "tdx-quote", + "thiserror 2.0.12", + "x25519-dalek", ] [[package]] @@ -2223,15 +2295,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "libm" -version = "0.2.11" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "c9627da5196e5d8ed0b0495e61e518847578da83483c37288316d9b2e03a7f72" [[package]] name = "libredox" @@ -2245,9 +2317,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.15" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litrs" @@ -2267,9 +2339,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.25" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "masp_note_encryption" @@ -2312,7 +2384,7 @@ dependencies = [ "nonempty 0.11.0", "rand", "rand_core", - "sha2 0.10.8", + "sha2 0.10.9", "subtle", "zcash_encoding", ] @@ -2326,7 +2398,7 @@ dependencies = [ "bellman", "blake2b_simd", "directories", - "getrandom 0.2.15", + "getrandom 0.2.16", "group", "itertools 0.14.0", "lazy_static", @@ -2389,7 +2461,7 @@ checksum = "31b40876708764895b63bb5a1e9f102d3813cb16baeb9f12932b7c8f2df4248e" dependencies = [ "borsh", "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.3", "serde", ] @@ -2431,7 +2503,7 @@ dependencies = [ "pasta_curves", "rand_core", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", "zeroize", ] @@ -2458,7 +2530,7 @@ dependencies = [ "cfg-if", "ics23", "itertools 0.14.0", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] @@ -2478,7 +2550,7 @@ version = "0.149.1" dependencies = [ "namada_core", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -2512,11 +2584,11 @@ dependencies = [ "ripemd", "serde", "serde_json", - "sha2 0.10.8", + "sha2 0.10.9", "smooth-operator", "tendermint", "tendermint-proto", - "thiserror 2.0.11", + "thiserror 2.0.12", "tiny-keccak", "tracing", "uint 0.10.0", @@ -2533,7 +2605,7 @@ dependencies = [ "namada_macros", "serde", "serde_json", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -2546,7 +2618,7 @@ dependencies = [ "namada_events", "namada_macros", "serde", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -2567,7 +2639,7 @@ dependencies = [ "serde", "serde_json", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -2599,9 +2671,9 @@ dependencies = [ "prost", "serde", "serde_json", - "sha2 0.10.8", + "sha2 0.10.9", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -2612,8 +2684,8 @@ dependencies = [ "data-encoding", "proc-macro2", "quote", - "sha2 0.10.8", - "syn 2.0.98", + "sha2 0.10.9", + "syn 2.0.101", ] [[package]] @@ -2627,7 +2699,7 @@ dependencies = [ "namada_core", "namada_macros", "prost", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -2641,7 +2713,7 @@ dependencies = [ "namada_tx", "namada_vp_env", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", ] [[package]] @@ -2663,7 +2735,7 @@ dependencies = [ "once_cell", "serde", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -2683,6 +2755,7 @@ dependencies = [ "eyre", "futures", "itertools 0.14.0", + "kassandra-shared", "lazy_static", "masp_primitives", "masp_proofs", @@ -2701,10 +2774,10 @@ dependencies = [ "ripemd", "serde", "serde_json", - "sha2 0.10.8", + "sha2 0.10.9", "smooth-operator", "tempfile", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", "typed-builder", "xorf", @@ -2728,7 +2801,7 @@ dependencies = [ "namada_tx", "patricia_tree", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -2746,7 +2819,7 @@ dependencies = [ "regex", "serde", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -2799,7 +2872,7 @@ dependencies = [ "namada_tx", "namada_tx_env", "namada_vp_env", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -2826,8 +2899,8 @@ dependencies = [ "rand_core", "serde", "serde_json", - "sha2 0.10.8", - "thiserror 2.0.11", + "sha2 0.10.9", + "thiserror 2.0.12", "tonic-build", ] @@ -2879,7 +2952,7 @@ dependencies = [ "namada_tx", "namada_vp_env", "smooth-operator", - "thiserror 2.0.11", + "thiserror 2.0.12", "tracing", ] @@ -2916,7 +2989,7 @@ dependencies = [ "namada_tx", "namada_vm_env", "namada_vp_env", - "sha2 0.10.8", + "sha2 0.10.9", ] [[package]] @@ -2965,7 +3038,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -3027,14 +3100,14 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "once_cell" -version = "1.20.3" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "opaque-debug" @@ -3048,6 +3121,18 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2 0.10.9", +] + [[package]] name = "pairing" version = "0.23.0" @@ -3082,7 +3167,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -3177,13 +3262,26 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "polyfuzzy" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4c8aa1a6ea51b5f6cb5053fd11ff19f71ba5ef5f9e99709aded1c030ddb4874" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "sha2 0.10.9", + "subtle", +] + [[package]] name = "postcard" version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "170a2601f67cc9dba8edd8c4870b15f71a6a2dc196daec8c83f72b59dff628a8" dependencies = [ - "cobs", + "cobs 0.2.3", "embedded-io 0.4.0", "embedded-io 0.6.1", "heapless", @@ -3198,21 +3296,30 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy", + "zerocopy 0.8.25", ] [[package]] name = "prettyplease" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" +checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" dependencies = [ "proc-macro2", - "syn 2.0.98", + "syn 2.0.101", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", ] [[package]] @@ -3242,18 +3349,18 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -3275,7 +3382,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ "heck", - "itertools 0.13.0", + "itertools 0.14.0", "log", "multimap", "once_cell", @@ -3284,7 +3391,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.98", + "syn 2.0.101", "tempfile", ] @@ -3295,10 +3402,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -3332,13 +3439,19 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.38" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -3372,7 +3485,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", ] [[package]] @@ -3401,7 +3514,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "libredox", "thiserror 1.0.69", ] @@ -3516,9 +3629,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.36.0" +version = "1.37.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" +checksum = "faa7de2ba56ac291bd90c6b9bece784a52ae1411f9506544b3eae36dd2356d50" dependencies = [ "arrayvec", "borsh", @@ -3547,9 +3660,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.44" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ "bitflags", "errno", @@ -3560,15 +3673,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "scale-info" @@ -3591,14 +3704,14 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "schemars" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" dependencies = [ "dyn-clone", "schemars_derive", @@ -3608,14 +3721,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -3647,15 +3760,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -3671,22 +3784,32 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.15" +version = "0.11.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a" +checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" dependencies = [ "serde", ] +[[package]] +name = "serde_cbor" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +dependencies = [ + "half", + "serde", +] + [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -3697,14 +3820,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", "memchr", @@ -3714,13 +3837,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -3748,9 +3871,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -3815,7 +3938,7 @@ checksum = "867851a695e22b0d1fc85f2f84dba29fef7e5d571f12fb23253e0b213bf190f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -3851,24 +3974,24 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "strum" -version = "0.27.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1475c515a4f03a8a7129bb5228b81a781a86cb0b3fbbc19e1c556d491a401f" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.27.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9688894b43459159c82bfa5a5fa0435c19cbe3c9b427fa1dd7b1ce0c279b18a7" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" dependencies = [ "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -3918,9 +4041,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.98" +version = "2.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" dependencies = [ "proc-macro2", "quote", @@ -3933,15 +4056,25 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tdx-quote" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecbbeffe2d73f07728bcbb581f8faa9098d813ba0fafbcab5e763a2fa4491e80" +dependencies = [ + "nom", + "p256", + "sha2 0.10.9", +] + [[package]] name = "tempfile" -version = "3.16.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ - "cfg-if", "fastrand", - "getrandom 0.3.1", + "getrandom 0.3.2", "once_cell", "rustix", "windows-sys 0.59.0", @@ -3968,7 +4101,7 @@ dependencies = [ "serde_bytes", "serde_json", "serde_repr", - "sha2 0.10.8", + "sha2 0.10.9", "signature", "subtle", "subtle-encoding", @@ -3983,7 +4116,7 @@ version = "0.40.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58dc3c4ebd336efaf0b831b0cd4d2aca24ac624875fa514e18fe636da9ea98d5" dependencies = [ - "derive_more 0.99.19", + "derive_more 0.99.20", "flex-error", "serde", "tendermint", @@ -4020,11 +4153,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.12", ] [[package]] @@ -4035,18 +4168,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -4066,7 +4199,7 @@ checksum = "585e5ef40a784ce60b49c67d762110688d211d395d39e096be204535cf64590e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -4110,9 +4243,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -4125,15 +4258,15 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" [[package]] name = "toml_edit" -version = "0.22.24" +version = "0.22.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" dependencies = [ "indexmap", "toml_datetime", @@ -4151,7 +4284,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -4173,7 +4306,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] @@ -4189,7 +4322,7 @@ dependencies = [ name = "tx_fail" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4198,7 +4331,7 @@ dependencies = [ name = "tx_fail_event" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4207,7 +4340,7 @@ dependencies = [ name = "tx_infinite_guest_gas" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4216,7 +4349,7 @@ dependencies = [ name = "tx_infinite_host_gas" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4225,7 +4358,7 @@ dependencies = [ name = "tx_invalid_data" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4234,7 +4367,7 @@ dependencies = [ name = "tx_memory_limit" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4243,7 +4376,7 @@ dependencies = [ name = "tx_no_op" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4252,7 +4385,7 @@ dependencies = [ name = "tx_no_op_event" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4261,7 +4394,7 @@ dependencies = [ name = "tx_proposal_code" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_proof_of_stake", "namada_tx_prelude", "rlsf", @@ -4271,7 +4404,7 @@ dependencies = [ name = "tx_proposal_ibc_token_inflation" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4280,7 +4413,7 @@ dependencies = [ name = "tx_proposal_masp_reward" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4289,7 +4422,7 @@ dependencies = [ name = "tx_proposal_token_gas" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4298,7 +4431,7 @@ dependencies = [ name = "tx_read_storage_key" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "rlsf", ] @@ -4307,7 +4440,7 @@ dependencies = [ name = "tx_write" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_test_utils", "namada_tx_prelude", "rlsf", @@ -4315,29 +4448,29 @@ dependencies = [ [[package]] name = "typed-builder" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e14ed59dc8b7b26cacb2a92bad2e8b1f098806063898ab42a3bd121d7d45e75" +checksum = "cd9d30e3a08026c78f246b173243cf07b3696d274debd26680773b6773c2afc7" dependencies = [ "typed-builder-macro", ] [[package]] name = "typed-builder-macro" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" +checksum = "3c36781cc0e46a83726d9879608e4cf6c2505237e263a8eb8c24502989cfdb28" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "typewit" @@ -4380,9 +4513,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-normalization" @@ -4427,9 +4560,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.13.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" +checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" [[package]] name = "version_check" @@ -4445,14 +4578,14 @@ checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ] [[package]] name = "vp_always_false" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_vp_prelude", "rlsf", ] @@ -4461,7 +4594,7 @@ dependencies = [ name = "vp_always_true" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_vp_prelude", "rlsf", ] @@ -4470,7 +4603,7 @@ dependencies = [ name = "vp_eval" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "namada_vp_prelude", "rlsf", @@ -4480,7 +4613,7 @@ dependencies = [ name = "vp_infinite_guest_gas" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_vp_prelude", "rlsf", ] @@ -4489,7 +4622,7 @@ dependencies = [ name = "vp_infinite_host_gas" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_tx_prelude", "namada_vp_prelude", "rlsf", @@ -4499,7 +4632,7 @@ dependencies = [ name = "vp_memory_limit" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_vp_prelude", "rlsf", ] @@ -4508,7 +4641,7 @@ dependencies = [ name = "vp_read_storage_key" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_vp_prelude", "rlsf", ] @@ -4517,7 +4650,7 @@ dependencies = [ name = "vp_verify_signature" version = "0.149.1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "namada_vp_prelude", "rlsf", ] @@ -4530,9 +4663,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi" -version = "0.13.3+wasi-0.2.2" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" dependencies = [ "wit-bindgen-rt", ] @@ -4559,7 +4692,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", "wasm-bindgen-shared", ] @@ -4581,7 +4714,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4597,11 +4730,61 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.52.0" +version = "0.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" dependencies = [ - "windows-targets 0.52.6", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-result" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +dependencies = [ + "windows-link", ] [[package]] @@ -4745,18 +4928,18 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.7.2" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" +checksum = "6cb8234a863ea0e8cd7284fcdd4f145233eb00fee02bbdd9861aec44e6477bc5" dependencies = [ "memchr", ] [[package]] name = "wit-bindgen-rt" -version = "0.33.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ "bitflags", ] @@ -4770,6 +4953,18 @@ dependencies = [ "tap", ] +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "zeroize", +] + [[package]] name = "xorf" version = "0.11.0" @@ -4797,8 +4992,16 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ - "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb" +dependencies = [ + "zerocopy-derive 0.8.25", ] [[package]] @@ -4809,7 +5012,18 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", ] [[package]] @@ -4829,5 +5043,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.101", ]