diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2fd73f178f..d9328d3f9f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -680,6 +680,7 @@ jobs: - name: Test Template run: | cd templates/default + pnpm compile chmod 755 .enclave/generated/contracts tests chmod 644 .enclave/generated/contracts/ImageID.sol pnpm test:integration diff --git a/Cargo.lock b/Cargo.lock index fc10fc725e..92202148e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2749,6 +2749,7 @@ dependencies = [ "rayon", "serde", "sha3", + "zk-kit-imt", ] [[package]] @@ -9145,6 +9146,16 @@ dependencies = [ "syn 2.0.110", ] +[[package]] +name = "zk-kit-imt" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a40d2f9afd345a14a304ad2ced6dbff4c17a0e5c533a3bd5f64fd04dcb2531" +dependencies = [ + "hex", + "tiny-keccak", +] + [[package]] name = "zkfhe-greco" version = "0.1.0" diff --git a/crates/compute-provider/Cargo.toml b/crates/compute-provider/Cargo.toml index 72aefdce83..15328cd855 100644 --- a/crates/compute-provider/Cargo.toml +++ b/crates/compute-provider/Cargo.toml @@ -17,3 +17,4 @@ light-poseidon = "=0.2.0" ark-ff = "=0.4.2" ark-bn254 = "=0.4.0" rayon = "=1.10.0" +zk-kit-imt = "0.0.7" diff --git a/crates/compute-provider/src/compute_input.rs b/crates/compute-provider/src/compute_input.rs index a8aa666aa3..5bdf577523 100644 --- a/crates/compute-provider/src/compute_input.rs +++ b/crates/compute-provider/src/compute_input.rs @@ -5,7 +5,7 @@ // or FITNESS FOR A PARTICULAR PURPOSE. use crate::ciphertext_output::ComputeResult; -use crate::merkle_tree::MerkleTree; +use crate::merkle_tree_builder::MerkleTreeBuilder; use sha3::{Digest, Keccak256}; pub type FHEProcessor = fn(&FHEInputs) -> Vec; @@ -34,12 +34,11 @@ impl ComputeInput { "Ciphertext hash mismatch" ); - let merkle_root = MerkleTree { - leaf_hashes: self.leaf_hashes.clone(), - } - .build_tree() - .root() - .unwrap(); + let merkle_root = MerkleTreeBuilder::new() + .with_leaf_hashes(self.leaf_hashes.clone()) + .build_tree() + .root() + .unwrap(); ComputeResult { ciphertext_hash: processed_hash, diff --git a/crates/compute-provider/src/compute_manager.rs b/crates/compute-provider/src/compute_manager.rs index 87182eb5bb..52b59e4364 100644 --- a/crates/compute-provider/src/compute_manager.rs +++ b/crates/compute-provider/src/compute_manager.rs @@ -6,7 +6,7 @@ use crate::ciphertext_output::ComputeProvider; use crate::compute_input::{ComputeInput, FHEInputs}; -use crate::merkle_tree::MerkleTree; +use crate::merkle_tree_builder::MerkleTreeBuilder; use crate::FHEProcessor; use rayon::prelude::*; use sha3::{Digest, Keccak256}; @@ -56,9 +56,10 @@ where } fn start_sequential(&mut self) -> (P::Output, Vec) { - let mut tree_handler = MerkleTree::new(); - tree_handler.compute_leaf_hashes(&self.input.fhe_inputs.ciphertexts); - self.input.leaf_hashes = tree_handler.leaf_hashes.clone(); + let mut tree_builder = MerkleTreeBuilder::new(); + + tree_builder.compute_leaf_hashes(&self.input.fhe_inputs.ciphertexts); + self.input.leaf_hashes = tree_builder.leaf_hashes.clone(); // Compute the ciphertext let ciphertext = (self.processor)(&self.input.fhe_inputs); @@ -83,9 +84,10 @@ where let tally_results: Vec<(P::Output, Vec, String)> = chunks .into_par_iter() .map(|chunk| { - let mut tree_handler = MerkleTree::new(); - tree_handler.compute_leaf_hashes(&chunk); - let merkle_root = tree_handler.build_tree().root().unwrap(); + let mut tree_builder = MerkleTreeBuilder::new(); + + tree_builder.compute_leaf_hashes(&chunk); + let merkle_root = tree_builder.build_tree().root().unwrap(); let fhe_inputs = FHEInputs { ciphertexts: chunk.clone(), @@ -98,7 +100,7 @@ where let input = ComputeInput { fhe_inputs, ciphertext_hash, - leaf_hashes: tree_handler.leaf_hashes.clone(), + leaf_hashes: tree_builder.leaf_hashes.clone(), }; (self.provider.prove(&input), ciphertext, merkle_root) diff --git a/crates/compute-provider/src/lib.rs b/crates/compute-provider/src/lib.rs index a668495f8e..8671259269 100644 --- a/crates/compute-provider/src/lib.rs +++ b/crates/compute-provider/src/lib.rs @@ -7,7 +7,7 @@ mod ciphertext_output; mod compute_input; mod compute_manager; -mod merkle_tree; +mod merkle_tree_builder; pub use ciphertext_output::*; pub use compute_input::*; diff --git a/crates/compute-provider/src/merkle_tree.rs b/crates/compute-provider/src/merkle_tree_builder.rs similarity index 74% rename from crates/compute-provider/src/merkle_tree.rs rename to crates/compute-provider/src/merkle_tree_builder.rs index 6c8eb42075..53c009f500 100644 --- a/crates/compute-provider/src/merkle_tree.rs +++ b/crates/compute-provider/src/merkle_tree_builder.rs @@ -6,24 +6,35 @@ use ark_bn254::Fr; use ark_ff::{BigInt, BigInteger}; -use lean_imt::LeanIMT; use light_poseidon::{Poseidon, PoseidonHasher}; use num_bigint::BigUint; use num_traits::Num; use sha3::{Digest, Keccak256}; use std::str::FromStr; +use zk_kit_imt::imt::IMT; -pub struct MerkleTree { +pub struct MerkleTreeBuilder { pub leaf_hashes: Vec, + pub arity: usize, + pub zero_value: String, + pub depth: usize, } -impl MerkleTree { +impl MerkleTreeBuilder { pub fn new() -> Self { Self { leaf_hashes: Vec::new(), + arity: 2, + zero_value: "0".to_string(), + depth: 20, } } + pub fn with_leaf_hashes(mut self, leaf_hashes: Vec) -> Self { + self.leaf_hashes = leaf_hashes; + self + } + pub fn compute_leaf_hashes(&mut self, data: &[(Vec, u64)]) { for item in data { let hex_output = hex::encode(Keccak256::digest(&item.0)); @@ -60,9 +71,20 @@ impl MerkleTree { hex::encode(result_hash.to_bytes_be()) } - pub fn build_tree(&self) -> LeanIMT { - let mut tree = LeanIMT::new(Self::poseidon_hash); - tree.insert_many(self.leaf_hashes.clone()).unwrap(); + pub fn build_tree(&self) -> IMT { + let mut tree = IMT::new( + Self::poseidon_hash, + self.depth, + self.zero_value.clone(), + self.arity, + vec![], + ) + .unwrap(); + + for leaf in &self.leaf_hashes { + tree.insert(leaf.clone()).unwrap(); + } + tree } } diff --git a/crates/evm-helpers/src/events.rs b/crates/evm-helpers/src/events.rs index adc4b82319..cfeb6136b1 100644 --- a/crates/evm-helpers/src/events.rs +++ b/crates/evm-helpers/src/events.rs @@ -43,9 +43,6 @@ sol! { bytes plaintextOutput; } - #[derive(Debug)] - event InputPublished(uint256 indexed e3Id, bytes data, uint256 inputHash, uint256 index); - #[derive(Debug)] event CiphertextOutputPublished(uint256 indexed e3Id, bytes ciphertextOutput); diff --git a/crates/indexer/src/indexer.rs b/crates/indexer/src/indexer.rs index 4d6c8a8c9b..953fcff33e 100644 --- a/crates/indexer/src/indexer.rs +++ b/crates/indexer/src/indexer.rs @@ -14,7 +14,7 @@ use alloy::sol_types::SolEvent; use async_trait::async_trait; use e3_evm_helpers::{ contracts::{EnclaveContract, EnclaveContractFactory, EnclaveRead, ReadOnly}, - events::{CiphertextOutputPublished, E3Activated, InputPublished, PlaintextOutputPublished}, + events::{CiphertextOutputPublished, E3Activated, PlaintextOutputPublished}, listener::EventListener, }; use eyre::eyre; @@ -276,30 +276,6 @@ impl EnclaveIndexer { Ok(()) } - async fn register_input_published(&mut self) -> Result<()> { - let store = self.store.clone(); - self.listener - .add_event_handler(move |e: InputPublished| { - let store = SharedStore::new(store.clone()); - async move { - println!( - "InputPublished: e3_id={}, index={}, data=0x{}...", - e.e3Id, - e.index, - hex::encode(&e.data[..8.min(e.data.len())]) - ); - let e3_id = u64_try_from(e.e3Id)?; - - let mut repo = E3Repository::new(store, e3_id); - repo.insert_ciphertext_input(e.data.to_vec(), e.index.to::()) - .await?; - Ok(()) - } - }) - .await; - Ok(()) - } - async fn register_ciphertext_output_published(&mut self) -> Result<()> { let store = self.store.clone(); self.listener @@ -349,7 +325,6 @@ impl EnclaveIndexer { async fn setup_listeners(&mut self) -> Result<()> { self.register_e3_activated().await?; - self.register_input_published().await?; self.register_ciphertext_output_published().await?; self.register_plaintext_output_published().await?; Ok(()) diff --git a/crates/indexer/tests/integration.rs b/crates/indexer/tests/integration.rs index ff892c5f0f..535bcaed44 100644 --- a/crates/indexer/tests/integration.rs +++ b/crates/indexer/tests/integration.rs @@ -61,56 +61,6 @@ async fn test_indexer() -> Result<()> { .watch() .await?; - // InputPublished - let data = "Random data that wont actually be a string".to_string(); - contract - .emitInputPublished( - Uint::from(e3_id), - Bytes::from(data.clone().into_bytes()), - Uint::from(1111), - Uint::from(1), - ) - .send() - .await? - .watch() - .await?; - - contract - .emitInputPublished( - Uint::from(e3_id), - Bytes::from(data.clone().into_bytes()), - Uint::from(2222), - Uint::from(2), - ) - .send() - .await? - .watch() - .await?; - - contract - .emitInputPublished( - Uint::from(e3_id), - Bytes::from(data.clone().into_bytes()), - Uint::from(3333), - Uint::from(3), - ) - .send() - .await? - .watch() - .await?; - - sleep(Duration::from_millis(10)).await; - - assert_eq!(indexer.get_e3(e3_id).await?.ciphertext_inputs.len(), 3); - assert_eq!( - indexer.get_e3(e3_id).await?.ciphertext_inputs, - vec![ - (Bytes::from(data.clone().into_bytes()).to_vec(), 1), - (Bytes::from(data.clone().into_bytes()).to_vec(), 2), - (Bytes::from(data.clone().into_bytes()).to_vec(), 3), - ] - ); - let ciphertext_output = vec![9, 8, 7, 6, 5, 4, 3, 2, 1]; contract .emitCiphertextOutputPublished(Uint::from(e3_id), Bytes::from(ciphertext_output.clone())) @@ -125,8 +75,5 @@ async fn test_indexer() -> Result<()> { assert_eq!(e3.ciphertext_output, ciphertext_output); - let store = indexer.get_store(); - let val = store.get::("input_count").await?.unwrap(); - assert_eq!(val, 3); Ok(()) } diff --git a/crates/support/Cargo.lock b/crates/support/Cargo.lock index cd81f36ebe..39bb796157 100644 --- a/crates/support/Cargo.lock +++ b/crates/support/Cargo.lock @@ -8,7 +8,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "bytes", "futures-core", "futures-sink", @@ -21,16 +21,16 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.11.0" +version = "3.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44dfe5c9e0004c623edc65391dfd51daa201e7e30ebd9c9bedf873048ec32bc2" +checksum = "7926860314cbe2fb5d1f13731e387ab43bd32bca224e82e6e2db85de0a3dba49" dependencies = [ "actix-codec", "actix-rt", "actix-service", "actix-utils", "base64 0.22.1", - "bitflags 2.9.1", + "bitflags 2.10.0", "brotli", "bytes", "bytestring", @@ -65,7 +65,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -85,9 +85,9 @@ dependencies = [ [[package]] name = "actix-rt" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eda4e2a6e042aa4e55ac438a2ae052d3b5da0ecf83d7411e1a368946925208" +checksum = "92589714878ca59a7626ea19734f0e07a6a875197eec751bb5d3f99e64998c63" dependencies = [ "futures-core", "tokio", @@ -182,14 +182,14 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "addr2line" -version = "0.24.2" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] @@ -214,9 +214,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -244,9 +244,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ecf116474faea3e30ecb03cb14548598ca8243d5316ce50f820e67b3e848473" +checksum = "ae62e633fa48b4190af5e841eb05179841bb8b713945103291e2c0867037c0d1" dependencies = [ "alloy-consensus", "alloy-contract", @@ -262,13 +262,14 @@ dependencies = [ "alloy-signer-local", "alloy-transport", "alloy-transport-http", + "alloy-trie", ] [[package]] name = "alloy-chains" -version = "0.2.6" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4195a29a4b87137b2bb02105e746102873bc03561805cf45c0e510c961f160e6" +checksum = "4bc32535569185cbcb6ad5fa64d989a47bccb9a08e27284b1f2a3ccf16e6d010" dependencies = [ "alloy-primitives", "num_enum", @@ -278,9 +279,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b6093bc69509849435a2d68237a2e9fea79d27390c8e62f1e4012c460aabad8" +checksum = "b9b151e38e42f1586a01369ec52a6934702731d07e8509a7307331b09f6c46dc" dependencies = [ "alloy-eips", "alloy-primitives", @@ -297,15 +298,16 @@ dependencies = [ "rand 0.8.5", "secp256k1", "serde", + "serde_json", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "alloy-consensus-any" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d1cfed4fefd13b5620cb81cdb6ba397866ff0de514c1b24806e6e79cdff5570" +checksum = "6e2d5e8668ef6215efdb7dcca6f22277b4e483a5650e05f5de22b2350971f4b8" dependencies = [ "alloy-consensus", "alloy-eips", @@ -317,9 +319,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28074a21cd4f7c3a7ab218c4f38fae6be73944e1feae3b670c68b60bf85ca40" +checksum = "630288cf4f3a34a8c6bc75c03dce1dbd47833138f65f37d53a1661eafc96b83f" dependencies = [ "alloy-consensus", "alloy-dyn-abi", @@ -334,7 +336,7 @@ dependencies = [ "futures", "futures-util", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -375,7 +377,7 @@ dependencies = [ "alloy-rlp", "crc", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -398,14 +400,14 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "alloy-eips" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5937e2d544e9b71000942d875cbc57965b32859a666ea543cc57aae5a06d602d" +checksum = "e5434834adaf64fa20a6fb90877bc1d33214c41b055cc49f82189c98614368cc" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -418,14 +420,16 @@ dependencies = [ "derive_more", "either", "serde", + "serde_with", "sha2", + "thiserror 2.0.17", ] [[package]] name = "alloy-genesis" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51b4c13e02a8104170a4de02ccf006d7c233e6c10ab290ee16e7041e6ac221d" +checksum = "919a8471cfbed7bcd8cf1197a57dda583ce0e10c6385f6ff4e8b41304b223392" dependencies = [ "alloy-eips", "alloy-primitives", @@ -461,24 +465,24 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b590caa6b6d8bc10e6e7a7696c59b1e550e89f27f50d1ee13071150d3a3e3f66" +checksum = "d7c69f6c9c68a1287c9d5ff903d0010726934de0dac10989be37b75a29190d55" dependencies = [ "alloy-primitives", "alloy-sol-types", - "http 1.3.1", + "http 1.4.0", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] [[package]] name = "alloy-network" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36fe5af1fca03277daa56ad4ce5f6d623d3f4c2273ea30b9ee8674d18cefc1fa" +checksum = "8eaf2ae05219e73e0979cb2cf55612aafbab191d130f203079805eaf881cca58" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -497,14 +501,14 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "alloy-network-primitives" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793df1e3457573877fbde8872e4906638fde565ee2d3bd16d04aad17d43dbf0e" +checksum = "e58f4f345cef483eab7374f2b6056973c7419ffe8ad35e994b7a7f5d8e0c7ba4" dependencies = [ "alloy-consensus", "alloy-eips", @@ -515,9 +519,9 @@ dependencies = [ [[package]] name = "alloy-node-bindings" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de75f0d0af3c6cb0bd3648e530289b2c542b7bf57e7d4296d1c29281418a476" +checksum = "61321a0dbc084c2c9f2b07aa34f10db7ac80065c01721e567e5426d882c73de6" dependencies = [ "alloy-genesis", "alloy-hardforks", @@ -529,7 +533,7 @@ dependencies = [ "rand 0.8.5", "serde_json", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", "url", ] @@ -546,8 +550,8 @@ dependencies = [ "const-hex", "derive_more", "foldhash", - "hashbrown 0.15.4", - "indexmap 2.10.0", + "hashbrown 0.15.5", + "indexmap 2.12.1", "itoa", "k256", "keccak-asm", @@ -563,9 +567,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59879a772ebdcde9dc4eb38b2535d32e8503d3175687cc09e763a625c5fcf32" +checksum = "de2597751539b1cc8fe4204e5325f9a9ed83fcacfb212018dfcfa7877e76de21" dependencies = [ "alloy-chains", "alloy-consensus", @@ -589,14 +593,13 @@ dependencies = [ "either", "futures", "futures-utils-wasm", - "http 1.3.1", "lru 0.13.0", "parking_lot", "pin-project", "reqwest", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tracing", "url", @@ -622,14 +625,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "alloy-rpc-client" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f060e3bb9f319eb01867a2d6d1ff9e0114e8877f5ca8f5db447724136106cae" +checksum = "edf8eb8be597cfa8c312934d2566ec4516f066d69164f9212d7a148979fdcfd8" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -650,9 +653,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d47b637369245d2dafef84b223b1ff5ea59e6cd3a98d2d3516e32788a0b216df" +checksum = "339af7336571dd39ae3a15bde08ae6a647e62f75350bd415832640268af92c06" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -662,9 +665,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-anvil" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b1f499acb3fc729615147bc113b8b798b17379f19d43058a687edc5792c102" +checksum = "83d98fb386a462e143f5efa64350860af39950c49e7c0cbdba419c16793116ef" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -674,9 +677,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e26b4dd90b33bd158975307fb9cf5fafa737a0e33cbb772a8648bf8be13c104" +checksum = "fbde0801a32d21c5f111f037bee7e22874836fba7add34ed4a6919932dd7cf23" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -685,9 +688,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46586ec3c278639fc0e129f0eb73dbfa3d57f683c44b2ff5e066fab7ba63fa1f" +checksum = "361cd87ead4ba7659bda8127902eda92d17fa7ceb18aba1676f7be10f7222487" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -701,14 +704,14 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "alloy-serde" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e1722bc30feef87cc0fa824e43c9013f9639cc6c037be7be28a31361c788be2" +checksum = "64600fc6c312b7e0ba76f73a381059af044f4f21f43e07f51f1fa76c868fe302" dependencies = [ "alloy-primitives", "serde", @@ -717,9 +720,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3674beb29e68fbbc7be302b611cf35fe07b736e308012a280861df5a2361395" +checksum = "5772858492b26f780468ae693405f895d6a27dea6e3eab2c36b6217de47c2647" dependencies = [ "alloy-primitives", "async-trait", @@ -727,14 +730,14 @@ dependencies = [ "either", "elliptic-curve 0.13.8", "k256", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "alloy-signer-local" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad7094c39cd41b03ed642145b0bd37251e31a9cf2ed19e1ce761f089867356a6" +checksum = "f4195b803d0a992d8dbaab2ca1986fc86533d4bc80967c0cce7668b26ad99ef9" dependencies = [ "alloy-consensus", "alloy-network", @@ -743,7 +746,7 @@ dependencies = [ "async-trait", "k256", "rand 0.8.5", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -757,7 +760,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -770,11 +773,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck", - "indexmap 2.10.0", + "indexmap 2.12.1", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", "syn-solidity", "tiny-keccak", ] @@ -793,15 +796,15 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.104", + "syn 2.0.111", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52db32fbd35a9c0c0e538b58b81ebbae08a51be029e7ad60e08b60481c2ec6c3" +checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" dependencies = [ "serde", "winnow", @@ -821,12 +824,13 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89bec2f59a41c0e259b6fe92f78dfc49862c17d10f938db9c33150d5a7f42b6" +checksum = "025a940182bddaeb594c26fe3728525ae262d0806fe6a4befdf5d7bc13d54bce" dependencies = [ "alloy-json-rpc", "alloy-primitives", + "auto_impl", "base64 0.22.1", "derive_more", "futures", @@ -834,7 +838,7 @@ dependencies = [ "parking_lot", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", "tokio", "tower", "tracing", @@ -844,9 +848,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.23" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3615ec64d775fec840f4e9d5c8e1f739eb1854d8d28db093fb3d4805e0cb53" +checksum = "e3b5064d1e1e1aabc918b5954e7fb8154c39e77ec6903a581b973198b26628fa" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -859,9 +863,9 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bada1fc392a33665de0dc50d401a3701b62583c655e3522a323490a5da016962" +checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -875,23 +879,16 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.23" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f916ff6d52f219c44a9684aea764ce2c7e1d53bd4a724c9b127863aeacc30bb" +checksum = "ab54221eccefa254ce9f65b079c097b1796e48c21c7ce358230f8988d75392fb" dependencies = [ - "alloy-primitives", - "darling", + "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -903,9 +900,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.19" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -918,9 +915,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" @@ -933,22 +930,22 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.9" +version = "3.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1010,7 +1007,7 @@ checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1043,7 +1040,7 @@ dependencies = [ "ark-std 0.5.0", "educe", "fnv", - "hashbrown 0.15.4", + "hashbrown 0.15.5", "itertools 0.13.0", "num-bigint", "num-integer", @@ -1136,7 +1133,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1174,7 +1171,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1217,7 +1214,7 @@ dependencies = [ "ark-std 0.5.0", "educe", "fnv", - "hashbrown 0.15.4", + "hashbrown 0.15.5", ] [[package]] @@ -1303,7 +1300,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1354,6 +1351,12 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -1565,7 +1568,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1576,13 +1579,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1599,7 +1602,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1610,9 +1613,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-credential-types" -version = "1.2.9" +version = "1.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86590e57ea40121d47d3f2e131bfd873dea15d78dc2f4604f4734537ad9e56c4" +checksum = "b01c9521fa01558f750d183c8c68c81b0155b9d193a4ba7f84c36bd1b6d04a06" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1622,9 +1625,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5932a7d9d28b0d2ea34c6b3779d35e3dd6f6345317c34e73438c4f1f29144151" +checksum = "6b5ce75405893cd713f9ab8e297d8e438f624dde7d706108285f7e17a25a180f" dependencies = [ "aws-lc-sys", "zeroize", @@ -1632,11 +1635,10 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.33.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1826f2e4cfc2cd19ee53c42fbf68e2f81ec21108e0b7ecf6a71cf062137360fc" +checksum = "179c3777a8b5e70e90ea426114ffc565b2c1a9f82f6c4a0c5a34aa6ef5e781b6" dependencies = [ - "bindgen", "cc", "cmake", "dunce", @@ -1645,9 +1647,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.10" +version = "1.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c034a1bc1d70e16e7f4e4caf7e9f7693e4c9c24cd91cf17c2a0b21abaebc7c8b" +checksum = "7ce527fb7e53ba9626fc47824f25e256250556c40d8f81d27dd92aa38239d632" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -1670,9 +1672,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.103.0" +version = "1.109.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af040a86ae4378b7ed2f62c83b36be1848709bbbf5757ec850d0e08596a26be9" +checksum = "3c6d81b75f8ff78882e70c5909804b44553d56136899fb4015a0a68ecc870e0e" dependencies = [ "aws-credential-types", "aws-runtime", @@ -1692,7 +1694,7 @@ dependencies = [ "hex", "hmac", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "http-body 0.4.6", "lru 0.12.5", "percent-encoding", @@ -1719,7 +1721,7 @@ dependencies = [ "hex", "hmac", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "p256", "percent-encoding", "ring", @@ -1743,9 +1745,9 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.63.10" +version = "0.63.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb9a26b2831e728924ec0089e92697a78a2f9cdcf90d81e8cfcc6a6c85080369" +checksum = "95bd108f7b3563598e4dc7b62e1388c9982324a2abd622442167012690184591" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -1786,7 +1788,7 @@ dependencies = [ "futures-core", "futures-util", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "http-body 0.4.6", "percent-encoding", "pin-project-lite", @@ -1796,29 +1798,30 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.0.6" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f108f1ca850f3feef3009bdcc977be201bca9a91058864d9de0684e64514bee0" +checksum = "623254723e8dfd535f566ee7b2381645f8981da086b5c4aa26c0c41582bb1d2c" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", "aws-smithy-types", "h2 0.3.27", - "h2 0.4.11", + "h2 0.4.12", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "http-body 0.4.6", "hyper 0.14.32", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-rustls 0.24.2", "hyper-rustls 0.27.7", "hyper-util", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.29", + "rustls 0.23.35", "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", + "tokio-rustls 0.26.4", "tower", "tracing", ] @@ -1843,9 +1846,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.8.6" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e107ce0783019dbff59b3a244aa0c114e4a8c9d93498af9162608cd5474e796" +checksum = "0bbe9d018d646b96c7be063dd07987849862b0e6d07c778aad7d93d1be6c1ef0" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1856,7 +1859,7 @@ dependencies = [ "bytes", "fastrand", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "http-body 0.4.6", "http-body 1.0.1", "pin-project-lite", @@ -1875,7 +1878,7 @@ dependencies = [ "aws-smithy-types", "bytes", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "pin-project-lite", "tokio", "tracing", @@ -1893,7 +1896,7 @@ dependencies = [ "bytes-utils", "futures-core", "http 0.2.12", - "http 1.3.1", + "http 1.4.0", "http-body 0.4.6", "http-body 1.0.1", "http-body-util", @@ -1933,9 +1936,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", "cfg-if", @@ -1943,7 +1946,7 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -1998,32 +2001,23 @@ dependencies = [ ] [[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +name = "bigint-poly" +version = "0.1.0" +source = "git+https://github.com/gnosisguild/bigint-poly#9eca04d2aa473c5ead1e5a13adc8ad11bf250e4a" dependencies = [ + "num-bigint", + "num-traits", "serde", + "thiserror 1.0.69", ] [[package]] -name = "bindgen" -version = "0.72.1" +name = "bincode" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" dependencies = [ - "bitflags 2.9.1", - "cexpr", - "clang-sys", - "itertools 0.13.0", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 2.0.104", + "serde", ] [[package]] @@ -2080,9 +2074,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bitvec" @@ -2105,6 +2099,19 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block" version = "0.1.6" @@ -2135,9 +2142,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.15" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd49896f12ac9b6dcd7a5998466b9b58263a695a3dd1ecc1aaca2e12a90b080" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -2155,7 +2162,7 @@ dependencies = [ "maybe-async", "reqwest", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -2178,7 +2185,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -2215,7 +2222,7 @@ dependencies = [ "sha2", "siwe", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.17", "time", "tokio", "tokio-tungstenite", @@ -2227,9 +2234,9 @@ dependencies = [ [[package]] name = "brotli" -version = "8.0.1" +version = "8.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -2269,13 +2276,13 @@ dependencies = [ [[package]] name = "bytemuck_derive" -version = "1.8.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -2286,9 +2293,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" dependencies = [ "serde", ] @@ -2305,18 +2312,18 @@ dependencies = [ [[package]] name = "bytestring" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e465647ae23b2823b0753f50decb2d5a86d2bb2cac04788fafd1f80e45378e5f" +checksum = "113b4343b5f6617e7ad401ced8de3cc8b012e73a594347c307b90db3e9271289" dependencies = [ "bytes", ] [[package]] name = "c-kzg" -version = "2.1.1" +version = "2.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7318cfa722931cb5fe0838b98d3ce5621e75f6a6408abc21721d80de9223f2e4" +checksum = "e00bf4b112b07b505472dbefd19e37e53307e2bfed5a79e0cc161d58ccd0e687" dependencies = [ "blst", "cc", @@ -2329,11 +2336,11 @@ dependencies = [ [[package]] name = "camino" -version = "1.1.10" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -2353,37 +2360,29 @@ checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" dependencies = [ "camino", "cargo-platform", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "cc" -version = "1.2.30" +version = "1.2.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7" +checksum = "cd405d82c84ff7f35739f175f67d8b9fb7687a0e84ccdc78bd3568839827cf07" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", ] -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -2393,35 +2392,23 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link 0.1.3", -] - -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", + "windows-link", ] [[package]] name = "clap" -version = "4.5.52" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa8120877db0e5c011242f96806ce3c94e0737ab8108532a76a3300a01db2ab8" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", "clap_derive", @@ -2429,9 +2416,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.52" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02576b399397b659c26064fbc92a75fede9d18ffd5f80ca1cd74ddab167016e1" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", @@ -2448,7 +2435,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -2472,7 +2459,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -2492,15 +2479,14 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.14.1" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", - "hex", "proptest", - "serde", + "serde_core", ] [[package]] @@ -2511,9 +2497,9 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const_format" -version = "0.2.34" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" dependencies = [ "const_format_proc_macros", ] @@ -2529,6 +2515,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "cookie" version = "0.16.2" @@ -2603,15 +2595,15 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc-fast" -version = "1.3.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf62af4cc77d8fe1c22dde4e721d87f2f54056139d8c412e1366b740305f56f" +checksum = "6ddc2d09feefeee8bd78101665bd8645637828fa9317f9f292496dbbd8c65ff3" dependencies = [ "crc", "digest 0.10.7", - "libc", "rand 0.9.2", "regex", + "rustversion", ] [[package]] @@ -2694,8 +2686,18 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -2709,7 +2711,22 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.104", + "syn 2.0.111", +] + +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "serde", + "strsim", + "syn 2.0.111", ] [[package]] @@ -2718,9 +2735,20 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core", + "darling_core 0.20.11", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -2766,12 +2794,12 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", - "serde", + "serde_core", ] [[package]] @@ -2800,10 +2828,10 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -2813,7 +2841,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -2833,7 +2861,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", "unicode-xid", ] @@ -2886,7 +2914,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -2908,14 +2936,14 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "doc-comment" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" [[package]] name = "docker-generate" @@ -2943,9 +2971,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "duplicate" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97af9b5f014e228b33e77d75ee0e6e87960124f0f4b16337b586a6bec91867b1" +checksum = "8e92f10a49176cbffacaedabfaa11d51db1ea0f80a83c26e1873b43cd1742c24" dependencies = [ "heck", "proc-macro2", @@ -2954,27 +2982,33 @@ dependencies = [ [[package]] name = "dyn-clone" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "e3-bfv-helpers" -version = "0.1.0" -source = "git+https://github.com/gnosisguild/enclave?rev=2ca0aa5f47dd962add5d1d0f74900d9bceb957e5#2ca0aa5f47dd962add5d1d0f74900d9bceb957e5" +version = "0.1.5" +source = "git+https://github.com/gnosisguild/enclave?rev=632766e4ed1ceeccdeb023a56f16413a33be6f46#632766e4ed1ceeccdeb023a56f16413a33be6f46" dependencies = [ "alloy-dyn-abi", "alloy-primitives", "anyhow", "fhe", + "fhe-math", "fhe-traits", + "fhe-util", + "num-bigint", "rand 0.8.5", + "strum", + "thiserror 1.0.69", + "zkfhe-greco", ] [[package]] name = "e3-compute-provider" -version = "0.1.0" -source = "git+https://github.com/gnosisguild/enclave?rev=2ca0aa5f47dd962add5d1d0f74900d9bceb957e5#2ca0aa5f47dd962add5d1d0f74900d9bceb957e5" +version = "0.1.5" +source = "git+https://github.com/gnosisguild/enclave?rev=632766e4ed1ceeccdeb023a56f16413a33be6f46#632766e4ed1ceeccdeb023a56f16413a33be6f46" dependencies = [ "ark-bn254 0.4.0", "ark-ff 0.4.2", @@ -2986,6 +3020,7 @@ dependencies = [ "rayon", "serde", "sha3", + "zk-kit-imt", ] [[package]] @@ -3089,7 +3124,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -3179,29 +3214,29 @@ dependencies = [ [[package]] name = "enum-ordinalize" -version = "4.3.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "env_filter" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186e05a59d4c50738528153b83b0b0194d3a29507dfec16eccd4b342903397d0" +checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2" dependencies = [ "log", "regex", @@ -3228,12 +3263,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -3320,7 +3355,7 @@ dependencies = [ [[package]] name = "fhe" version = "0.1.0-beta.7" -source = "git+https://github.com/gnosisguild/fhe.rs#aa90ff007c1ef7c68eeac951ebbf1988d0f1411c" +source = "git+https://github.com/gnosisguild/fhe.rs#7692b954ce887ee78f0b6baae36447ca1aa74708" dependencies = [ "doc-comment", "fhe-math", @@ -3345,7 +3380,7 @@ dependencies = [ [[package]] name = "fhe-math" version = "0.1.0-beta.7" -source = "git+https://github.com/gnosisguild/fhe.rs#aa90ff007c1ef7c68eeac951ebbf1988d0f1411c" +source = "git+https://github.com/gnosisguild/fhe.rs#7692b954ce887ee78f0b6baae36447ca1aa74708" dependencies = [ "ethnum", "fhe-traits", @@ -3367,7 +3402,7 @@ dependencies = [ [[package]] name = "fhe-traits" version = "0.1.0-beta.7" -source = "git+https://github.com/gnosisguild/fhe.rs#aa90ff007c1ef7c68eeac951ebbf1988d0f1411c" +source = "git+https://github.com/gnosisguild/fhe.rs#7692b954ce887ee78f0b6baae36447ca1aa74708" dependencies = [ "rand 0.8.5", ] @@ -3375,7 +3410,7 @@ dependencies = [ [[package]] name = "fhe-util" version = "0.1.0-beta.7" -source = "git+https://github.com/gnosisguild/fhe.rs#aa90ff007c1ef7c68eeac951ebbf1988d0f1411c" +source = "git+https://github.com/gnosisguild/fhe.rs#7692b954ce887ee78f0b6baae36447ca1aa74708" dependencies = [ "itertools 0.12.1", "num-bigint-dig", @@ -3386,6 +3421,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + [[package]] name = "fixed-hash" version = "0.8.0" @@ -3406,9 +3447,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" dependencies = [ "crc32fast", "miniz_oxide", @@ -3453,7 +3494,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -3470,9 +3511,9 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -3558,7 +3599,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -3599,9 +3640,9 @@ checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -3617,35 +3658,35 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "js-sys", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasip2", "wasm-bindgen", ] [[package]] name = "gimli" -version = "0.31.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "gloo-timers" @@ -3693,7 +3734,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.10.0", + "indexmap 2.12.1", "slab", "tokio", "tokio-util", @@ -3702,17 +3743,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.3.1", - "indexmap 2.10.0", + "http 1.4.0", + "indexmap 2.12.1", "slab", "tokio", "tokio-util", @@ -3742,9 +3783,9 @@ checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", @@ -3752,13 +3793,19 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + [[package]] name = "hashlink" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.4", + "hashbrown 0.15.5", ] [[package]] @@ -3778,9 +3825,6 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] [[package]] name = "hex-conservative" @@ -3819,12 +3863,11 @@ dependencies = [ [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -3846,7 +3889,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.3.1", + "http 1.4.0", ] [[package]] @@ -3857,7 +3900,7 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "pin-project-lite", ] @@ -3928,19 +3971,21 @@ dependencies = [ [[package]] name = "hyper" -version = "1.6.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", - "h2 0.4.11", - "http 1.3.1", + "futures-core", + "h2 0.4.12", + "http 1.4.0", "http-body 1.0.1", "httparse", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -3968,14 +4013,14 @@ version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "http 1.3.1", - "hyper 1.6.0", + "http 1.4.0", + "hyper 1.8.1", "hyper-util", - "rustls 0.23.29", + "rustls 0.23.35", "rustls-native-certs 0.8.2", "rustls-pki-types", "tokio", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tower-service", "webpki-roots", ] @@ -3988,7 +4033,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-util", "native-tls", "tokio", @@ -3998,23 +4043,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.16" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" +checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" dependencies = [ "base64 0.22.1", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", - "hyper 1.6.0", + "hyper 1.8.1", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.0", + "socket2 0.6.1", "system-configuration", "tokio", "tower-service", @@ -4024,9 +4069,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -4048,9 +4093,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -4061,9 +4106,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -4074,11 +4119,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -4089,42 +4133,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -4140,9 +4180,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -4182,7 +4222,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -4204,22 +4244,23 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown 0.15.4", + "hashbrown 0.16.1", "serde", + "serde_core", ] [[package]] name = "io-uring" -version = "0.7.9" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +checksum = "fdd7bddefd0a8833b88a4b68f90dae22c7450d11b354198baee3874fd811b344" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "cfg-if", "libc", ] @@ -4232,9 +4273,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ "memchr", "serde", @@ -4242,9 +4283,9 @@ dependencies = [ [[package]] name = "is_terminal_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] name = "itertools" @@ -4299,43 +4340,43 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jiff" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" +checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" dependencies = [ "jiff-static", "log", "portable-atomic", "portable-atomic-util", - "serde", + "serde_core", ] [[package]] name = "jiff-static" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" +checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "jobserver" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "libc", ] [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ "once_cell", "wasm-bindgen", @@ -4397,7 +4438,7 @@ dependencies = [ "petgraph", "pico-args", "regex", - "regex-syntax 0.8.5", + "regex-syntax 0.8.8", "string_cache", "term", "tiny-keccak", @@ -4411,7 +4452,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" dependencies = [ - "regex-automata 0.4.9", + "regex-automata 0.4.13", ] [[package]] @@ -4422,9 +4463,9 @@ checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" [[package]] name = "lazy-regex" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60c7310b93682b36b98fa7ea4de998d3463ccbebd94d935d6b48ba5b6ffa7126" +checksum = "191898e17ddee19e60bccb3945aa02339e81edd4a8c50e21fd4d48cdecda7b29" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -4433,14 +4474,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.4.1" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ba01db5ef81e17eb10a5e0f2109d1b3a3e29bac3070fdbd7d156bf7dbd206a1" +checksum = "c35dc8b0da83d1a9507e12122c80dea71a9c7c613014347392483a83ea593e04" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -4458,7 +4499,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa2acc6dee32b12409446a76b9c1877e5ba9afb36dfcbe96d0ddaf15ca08f18d" dependencies = [ - "hashbrown 0.15.4", + "hashbrown 0.15.5", ] [[package]] @@ -4469,19 +4510,9 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760" [[package]] name = "libc" -version = "0.2.174" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" - -[[package]] -name = "libloading" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" -dependencies = [ - "cfg-if", - "windows-link 0.2.1", -] +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libm" @@ -4491,11 +4522,11 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4488594b9328dee448adb906d8b126d9b7deb7cf5c22161ee591610bb1be83c0" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "libc", ] @@ -4513,15 +4544,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "local-channel" @@ -4542,11 +4573,10 @@ checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] @@ -4565,7 +4595,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.4", + "hashbrown 0.15.5", ] [[package]] @@ -4574,7 +4604,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" dependencies = [ - "hashbrown 0.15.4", + "hashbrown 0.15.5", ] [[package]] @@ -4591,7 +4621,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -4630,7 +4660,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -4645,9 +4675,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "merlin" @@ -4667,7 +4697,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -4705,12 +4735,6 @@ dependencies = [ "unicase", ] -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - [[package]] name = "miniz_oxide" version = "0.8.9" @@ -4718,18 +4742,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" dependencies = [ "libc", "log", - "wasi 0.11.1+wasi-snapshot-preview1", - "windows-sys 0.59.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] @@ -4780,16 +4805,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5b0c77c1b780822bc749a33e39aeb2c07584ab93332303babeabb645298a76e" -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -4823,15 +4838,15 @@ dependencies = [ "num-integer", "num-traits", "rand 0.8.5", + "serde", ] [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", @@ -4911,9 +4926,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", "rustversion", @@ -4921,20 +4936,20 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "nybbles" -version = "0.4.1" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "675b3a54e5b12af997abc8b6638b0aee51a28caedab70d4967e0d5db3a3f1d06" +checksum = "2c4b5ecbd0beec843101bffe848217f770e8b8da81d8355b7d6e226f2199b3dc" dependencies = [ "alloy-rlp", "cfg-if", @@ -4955,9 +4970,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.7" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] @@ -4970,17 +4985,17 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "once_cell_polyfill" -version = "1.70.1" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "openssl" -version = "0.10.73" +version = "0.10.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" +checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -4997,7 +5012,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -5008,9 +5023,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.109" +version = "0.9.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" dependencies = [ "cc", "libc", @@ -5072,7 +5087,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -5083,9 +5098,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -5093,15 +5108,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -5121,18 +5136,17 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.1" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" dependencies = [ "memchr", - "thiserror 2.0.12", "ucd-trie", ] @@ -5143,7 +5157,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.10.0", + "indexmap 2.12.1", ] [[package]] @@ -5178,7 +5192,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -5284,9 +5298,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "zerovec", ] @@ -5314,12 +5328,12 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "prettyplease" -version = "0.2.36" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -5346,11 +5360,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit", + "toml_edit 0.23.7", ] [[package]] @@ -5372,14 +5386,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -5392,26 +5406,24 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", "version_check", - "yansi", ] [[package]] name = "proptest" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.9.1", - "lazy_static", + "bitflags 2.10.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", "rand_xorshift", - "regex-syntax 0.8.5", + "regex-syntax 0.8.8", "rusty-fork", "tempfile", "unarray", @@ -5454,7 +5466,7 @@ dependencies = [ "prost 0.12.6", "prost-types", "regex", - "syn 2.0.104", + "syn 2.0.111", "tempfile", ] @@ -5468,7 +5480,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -5481,7 +5493,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -5501,9 +5513,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quinn" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", @@ -5511,9 +5523,9 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.29", - "socket2 0.5.10", - "thiserror 2.0.12", + "rustls 0.23.35", + "socket2 0.6.1", + "thiserror 2.0.17", "tokio", "tracing", "web-time", @@ -5521,20 +5533,20 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.12" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", - "getrandom 0.3.3", + "getrandom 0.3.4", "lru-slab", "rand 0.9.2", "ring", "rustc-hash", - "rustls 0.23.29", + "rustls 0.23.35", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.17", "tinyvec", "tracing", "web-time", @@ -5542,23 +5554,23 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.1", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -5633,7 +5645,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "serde", ] @@ -5674,9 +5686,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -5684,11 +5696,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.15" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8af0dde094006011e6a740d4879319439489813bd0bcdc7d821beaeeff48ec" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", ] [[package]] @@ -5710,39 +5722,39 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "ref-cast" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata 0.4.13", + "regex-syntax 0.8.8", ] [[package]] @@ -5756,20 +5768,20 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax 0.8.8", ] [[package]] name = "regex-lite" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" +checksum = "8d942b98df5e658f56f20d592c7f868833fe38115e65c33003d8cd224b0155da" [[package]] name = "regex-syntax" @@ -5779,9 +5791,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "reqwest" @@ -5795,11 +5807,11 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.4.11", - "http 1.3.1", + "h2 0.4.12", + "http 1.4.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.8.1", "hyper-rustls 0.27.7", "hyper-tls", "hyper-util", @@ -5811,7 +5823,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.29", + "rustls 0.23.35", "rustls-pki-types", "serde", "serde_json", @@ -5819,7 +5831,7 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-native-tls", - "tokio-rustls 0.26.2", + "tokio-rustls 0.26.4", "tokio-util", "tower", "tower-http", @@ -5881,7 +5893,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] @@ -5901,7 +5913,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "ruint", - "semver 1.0.26", + "semver 1.0.27", "serde", "tracing", ] @@ -5923,7 +5935,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "rzup", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_json", "stability", @@ -6008,7 +6020,7 @@ dependencies = [ "anyhow", "cfg-if", "risc0-zkvm", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] @@ -6027,7 +6039,7 @@ dependencies = [ "risc0-aggregation", "risc0-zkvm", "serde", - "thiserror 2.0.12", + "thiserror 2.0.17", "tracing", ] @@ -6054,9 +6066,9 @@ dependencies = [ [[package]] name = "risc0-zkos-v1compat" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" +checksum = "faf1f35f2ef61d8d86fdd06288c11d2f3bbf08f1af66b24ca0a1976ecbf324a1" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -6116,7 +6128,7 @@ dependencies = [ "risc0-zkvm-platform", "rrs-lib", "rzup", - "semver 1.0.26", + "semver 1.0.27", "serde", "sha2", "stability", @@ -6133,7 +6145,7 @@ dependencies = [ "bytemuck", "cfg-if", "getrandom 0.2.16", - "getrandom 0.3.3", + "getrandom 0.3.4", "libm", "num_enum", "paste", @@ -6184,9 +6196,9 @@ dependencies = [ [[package]] name = "rsa" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +checksum = "40a0376c50d0358279d9d643e4bf7b7be212f1f4ff1da9070a7b54d22ef75c88" dependencies = [ "const-oid", "digest 0.10.7", @@ -6204,13 +6216,14 @@ dependencies = [ [[package]] name = "ruint" -version = "1.15.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11256b5fe8c68f56ac6f39ef0720e592f33d2367a4782740d9c9142e889c7fb4" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", "borsh", "bytes", "fastrlp 0.3.1", @@ -6225,7 +6238,7 @@ dependencies = [ "rand 0.9.2", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -6238,9 +6251,9 @@ checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" [[package]] name = "rustc-demangle" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -6269,20 +6282,20 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.26", + "semver 1.0.27", ] [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -6299,15 +6312,15 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.29" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2491382039b29b9b11ff08b76ff6c97cf287671dbb74f0be44bda389fffe9bd1" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "aws-lc-rs", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.4", + "rustls-webpki 0.103.8", "subtle", "zeroize", ] @@ -6333,7 +6346,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.3.0", + "security-framework 3.5.1", ] [[package]] @@ -6347,9 +6360,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ "web-time", "zeroize", @@ -6367,9 +6380,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.4" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ "aws-lc-rs", "ring", @@ -6379,15 +6392,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" dependencies = [ "fnv", "quick-error", @@ -6409,13 +6422,13 @@ checksum = "5d2aed296f203fa64bcb4b52069356dd86d6ec578593985b919b6995bee1f0ae" dependencies = [ "hex", "rsa", - "semver 1.0.26", + "semver 1.0.27", "serde", "serde_with", "sha2", "strum", "tempfile", - "thiserror 2.0.12", + "thiserror 2.0.17", "toml", "yaml-rust2", ] @@ -6431,11 +6444,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -6452,9 +6465,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" dependencies = [ "dyn-clone", "ref-cast", @@ -6534,7 +6547,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -6543,11 +6556,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.3.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" +checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -6556,9 +6569,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -6575,11 +6588,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -6593,22 +6607,32 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -6656,17 +6680,17 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.14.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" +checksum = "c522100790450cf78eeac1507263d0a350d4d5b30df0c8e1fe051a10c22b376e" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.10.0", + "indexmap 2.12.1", "schemars 0.9.0", - "schemars 1.0.4", + "schemars 1.1.0", "serde", "serde_derive", "serde_json", @@ -6676,14 +6700,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.14.0" +version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" +checksum = "327ada00f7d64abaac1e55a6911e90cf665aa051b9a561c7006c157f4633135e" dependencies = [ - "darling", + "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -6755,9 +6779,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.5" +version = "1.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" dependencies = [ "libc", ] @@ -6782,6 +6806,12 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "similar" version = "2.7.0" @@ -6801,7 +6831,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95bdefc0eedf06440b27092fbfe33f2cb493ad6a3423aa12cfe7f2aac44bd618" dependencies = [ "hex", - "http 1.3.1", + "http 1.4.0", "iri-string", "k256", "rand 0.8.5", @@ -6813,9 +6843,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" @@ -6838,12 +6868,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -6879,14 +6909,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -6930,7 +6960,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -6952,9 +6982,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.104" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -6963,14 +6993,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a985ff4ffd7373e10e0fb048110fb11a162e5a4c47f92ddb8787a6f766b769" +checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -6990,7 +7020,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -6999,7 +7029,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -7022,15 +7052,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.20.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -7055,11 +7085,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.17", ] [[package]] @@ -7070,18 +7100,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -7104,9 +7134,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -7119,15 +7149,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -7144,9 +7174,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -7154,9 +7184,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -7195,7 +7225,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -7220,11 +7250,11 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.2" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.29", + "rustls 0.23.35", "tokio", ] @@ -7256,9 +7286,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" dependencies = [ "bytes", "futures-core", @@ -7275,8 +7305,8 @@ checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", - "toml_edit", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] @@ -7288,20 +7318,50 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.12.1", "serde", "serde_spanned", - "toml_datetime", + "toml_datetime 0.6.11", "toml_write", "winnow", ] +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap 2.12.1", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + [[package]] name = "toml_write" version = "0.1.2" @@ -7325,14 +7385,14 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "9cf146f99d442e8e68e585f5d798ccd3cad9a7835b917e09728880a862706456" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "bytes", "futures-util", - "http 1.3.1", + "http 1.4.0", "http-body 1.0.1", "iri-string", "pin-project-lite", @@ -7373,7 +7433,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -7439,7 +7499,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 1.3.1", + "http 1.4.0", "httparse", "log", "native-tls", @@ -7451,9 +7511,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "ucd-trie" @@ -7487,9 +7547,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-xid" @@ -7538,7 +7598,7 @@ version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.12.1", "serde", "serde_json", "utoipa-gen", @@ -7552,7 +7612,7 @@ checksum = "6d79d08d92ab8af4c5e8a6da20c47ae3f61a0f1dabc1997cdf2d082b757ca08b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -7573,9 +7633,9 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "value-bag" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" +checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" [[package]] name = "vcpkg" @@ -7630,45 +7690,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.104", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ "cfg-if", "js-sys", @@ -7679,9 +7726,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7689,22 +7736,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.104", - "wasm-bindgen-backend", + "syn 2.0.111", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" dependencies = [ "unicode-ident", ] @@ -7724,9 +7771,9 @@ dependencies = [ [[package]] name = "wasmtimer" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8d49b5d6c64e8558d9b1b065014426f35c18de636895d24893dbbd329743446" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" dependencies = [ "futures", "js-sys", @@ -7738,9 +7785,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -7758,9 +7805,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" dependencies = [ "rustls-pki-types", ] @@ -7787,7 +7834,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] @@ -7798,45 +7845,39 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.61.2" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", - "windows-link 0.1.3", + "windows-link", "windows-result", "windows-strings", ] [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - [[package]] name = "windows-link" version = "0.2.1" @@ -7845,31 +7886,31 @@ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-registry" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" dependencies = [ - "windows-link 0.1.3", + "windows-link", "windows-result", "windows-strings", ] [[package]] name = "windows-result" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-link 0.1.3", + "windows-link", ] [[package]] @@ -7881,22 +7922,13 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-sys" version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.2", + "windows-targets 0.53.5", ] [[package]] @@ -7905,7 +7937,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", + "windows-link", ] [[package]] @@ -7926,18 +7958,19 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" 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", + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -7948,9 +7981,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -7960,9 +7993,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -7972,9 +8005,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -7984,9 +8017,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -7996,9 +8029,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -8008,9 +8041,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -8020,9 +8053,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -8032,33 +8065,30 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "wyz" @@ -8086,19 +8116,12 @@ dependencies = [ "hashlink", ] -[[package]] -name = "yansi" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" - [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -8106,34 +8129,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "4ea879c944afe8a2b25fef16bb4ba234f47c694565e97383b36f3a878219065c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "cf955aa904d6040f70dc8e9384444cb1030aed272ba3cb09bbc4ab9e7c1f34f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -8153,15 +8176,15 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -8174,14 +8197,14 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", "yoke", @@ -8190,9 +8213,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -8201,13 +8224,66 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", +] + +[[package]] +name = "zk-kit-imt" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a40d2f9afd345a14a304ad2ced6dbff4c17a0e5c533a3bd5f64fd04dcb2531" +dependencies = [ + "hex", + "tiny-keccak", +] + +[[package]] +name = "zkfhe-greco" +version = "0.1.0" +source = "git+https://github.com/gnosisguild/zkfhe-generator#6b424983347a4aa04c9725941f71ca6a4bed863e" +dependencies = [ + "anyhow", + "bigint-poly", + "blake3", + "fhe", + "fhe-math", + "fhe-traits", + "itertools 0.14.0", + "num-bigint", + "num-traits", + "rand 0.8.5", + "rayon", + "serde", + "serde_json", + "tempfile", + "toml", + "zkfhe-shared", +] + +[[package]] +name = "zkfhe-shared" +version = "0.1.0" +source = "git+https://github.com/gnosisguild/zkfhe-generator#6b424983347a4aa04c9725941f71ca6a4bed863e" +dependencies = [ + "anyhow", + "bigint-poly", + "chrono", + "fhe", + "fhe-math", + "fhe-traits", + "num-bigint", + "num-traits", + "rand 0.8.5", + "serde", + "serde_json", + "thiserror 1.0.69", + "toml", ] [[package]] @@ -8230,9 +8306,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.15+zstd.1.5.7" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ "cc", "pkg-config", diff --git a/crates/support/Cargo.toml b/crates/support/Cargo.toml index 58e022f633..0b7d63df80 100644 --- a/crates/support/Cargo.toml +++ b/crates/support/Cargo.toml @@ -14,13 +14,13 @@ e3-support-host = { path = "./host" } e3-user-program = { path = "./program" } e3-support-types = { path = "./types" } methods = { path = "./methods" } -alloy-primitives = { version = "=1.3.0", default-features = false, features = [ +alloy-primitives = { version = "1.3", default-features = false, features = [ "rlp", "serde", "std", ]} -alloy-sol-types = { version = "=1.3.0" } -alloy-signer-local = { version = "=1.0.23" } +alloy-sol-types = { version = "1.3" } +alloy-signer-local = { version = "1.0" } anyhow = { version = "=1.0.98" } actix-web = "=4.11.0" bincode = { version = "=1.3.3" } @@ -34,12 +34,12 @@ risc0-build-ethereum = { git = "https://github.com/risc0/risc0-ethereum", tag = risc0-ethereum-contracts = { git = "https://github.com/risc0/risc0-ethereum", tag = "v3.0.0" } risc0-zkvm = { version = "=3.0.3" } risc0-zkp = { version = "=3.0.2", default-features = false } -serde = { version = "=1.0.219", features = ["derive", "std"] } +serde = { version = "1.0", features = ["derive", "std"] } serde_json = "=1.0.141" fhe = { package = "fhe", git = "https://github.com/gnosisguild/fhe.rs" } fhe-traits = { git = "https://github.com/gnosisguild/fhe.rs" } fhe-util = { git = "https://github.com/gnosisguild/fhe.rs" } -e3-compute-provider = { git = "https://github.com/gnosisguild/enclave", rev = "2ca0aa5f47dd962add5d1d0f74900d9bceb957e5" } +e3-compute-provider = { git = "https://github.com/gnosisguild/enclave", rev = "632766e4ed1ceeccdeb023a56f16413a33be6f46" } tokio = { version = "=1.46.1", features = ["full"] } rand = { version = "=0.8.5" } tracing-subscriber = { version = "=0.3.19", features = ["env-filter"] } diff --git a/crates/support/contracts/ImageID.sol b/crates/support/contracts/ImageID.sol index 2522b6d98a..47d74034f6 100644 --- a/crates/support/contracts/ImageID.sol +++ b/crates/support/contracts/ImageID.sol @@ -19,8 +19,5 @@ pragma solidity ^0.8.20; library ImageID { - bytes32 public constant PROGRAM_ID = - bytes32( - 0x23734b77b0f76e85623a88d7a82f24c34c94834f2501964ea123b7a2027013a2 - ); + bytes32 public constant PROGRAM_ID = bytes32(0x3ec51be1b9917603f2c6c82dee266daf822c51dbdca293d491f0c6bdad620cbc); } diff --git a/crates/support/host/Cargo.toml b/crates/support/host/Cargo.toml index 7f309633f0..8b9d1191a5 100644 --- a/crates/support/host/Cargo.toml +++ b/crates/support/host/Cargo.toml @@ -16,7 +16,7 @@ methods = { workspace = true } risc0-ethereum-contracts = { workspace = true } risc0-zkvm = { workspace = true } tokio = { workspace = true } -e3-compute-provider = { git = "https://github.com/gnosisguild/enclave", rev = "2ca0aa5f47dd962add5d1d0f74900d9bceb957e5" } +e3-compute-provider = { git = "https://github.com/gnosisguild/enclave", rev = "632766e4ed1ceeccdeb023a56f16413a33be6f46" } fhe = { workspace = true } fhe-traits = { workspace = true } fhe-util = { workspace = true } diff --git a/crates/support/methods/guest/Cargo.lock b/crates/support/methods/guest/Cargo.lock index f59647c03c..e62e604de3 100644 --- a/crates/support/methods/guest/Cargo.lock +++ b/crates/support/methods/guest/Cargo.lock @@ -16,9 +16,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -69,7 +69,7 @@ dependencies = [ "const-hex", "derive_more", "foldhash", - "hashbrown 0.15.4", + "hashbrown 0.15.5", "indexmap", "itoa", "k256", @@ -96,23 +96,23 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedac07a10d4c2027817a43cc1f038313fc53c7ac866f7363239971fd01f9f18" +checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f9a598f010f048d8b8226492b6401104f5a5c1273c2869b72af29b48bb4ba9" +checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" dependencies = [ "alloy-sol-macro-input", "const-hex", @@ -121,16 +121,16 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f494adf9d60e49aa6ce26dfd42c7417aa6d4343cf2ae621f20e4d92a5ad07d85" +checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" dependencies = [ "const-hex", "dunce", @@ -138,15 +138,15 @@ dependencies = [ "macro-string", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52db32fbd35a9c0c0e538b58b81ebbae08a51be029e7ad60e08b60481c2ec6c3" +checksum = "954d1b2533b9b2c7959652df3076954ecb1122a28cc740aa84e7b0a49f6ac0a9" dependencies = [ "serde", "winnow", @@ -164,6 +164,15 @@ dependencies = [ "serde", ] +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anyhow" version = "1.0.98" @@ -223,7 +232,7 @@ checksum = "e7e89fe77d1f0f4fe5b96dfc940923d88d17b6a773808124f21e764dfb063c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -256,7 +265,7 @@ dependencies = [ "ark-std 0.5.0", "educe", "fnv", - "hashbrown 0.15.4", + "hashbrown 0.15.5", "itertools 0.13.0", "num-bigint", "num-integer", @@ -349,7 +358,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -387,7 +396,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -430,7 +439,7 @@ dependencies = [ "ark-std 0.5.0", "educe", "fnv", - "hashbrown 0.15.4", + "hashbrown 0.15.5", ] [[package]] @@ -516,7 +525,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -561,6 +570,12 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -575,7 +590,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -596,6 +611,17 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +[[package]] +name = "bigint-poly" +version = "0.1.0" +source = "git+https://github.com/gnosisguild/bigint-poly#9eca04d2aa473c5ead1e5a13adc8ad11bf250e4a" +dependencies = [ + "num-bigint", + "num-traits", + "serde", + "thiserror 1.0.69", +] + [[package]] name = "bincode" version = "1.3.3" @@ -628,9 +654,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" [[package]] name = "bitvec" @@ -653,6 +679,19 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "blake3" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block" version = "0.1.6" @@ -688,9 +727,15 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] +[[package]] +name = "bumpalo" +version = "3.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" + [[package]] name = "byte-slice-cast" version = "1.2.3" @@ -699,22 +744,22 @@ checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "bytemuck" -version = "1.23.1" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -725,27 +770,28 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" dependencies = [ "serde", ] [[package]] name = "cc" -version = "1.2.30" +version = "1.2.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7" +checksum = "cd405d82c84ff7f35739f175f67d8b9fb7687a0e84ccdc78bd3568839827cf07" dependencies = [ + "find-msvc-tools", "shlex", ] [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -753,26 +799,39 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chrono" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-link", +] + [[package]] name = "cobs" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.12", + "thiserror 2.0.17", ] [[package]] name = "const-hex" -version = "1.14.1" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e22e0ed40b96a48d3db274f72fd365bd78f67af39b6bbd47e8a15e1c6207ff" +checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", "cpufeatures", - "hex", "proptest", - "serde", + "serde_core", ] [[package]] @@ -783,9 +842,9 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const_format" -version = "0.2.34" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" dependencies = [ "const_format_proc_macros", ] @@ -801,6 +860,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" + [[package]] name = "core-foundation" version = "0.9.4" @@ -928,7 +993,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", "unicode-xid", ] @@ -955,9 +1020,9 @@ dependencies = [ [[package]] name = "doc-comment" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" [[package]] name = "downcast-rs" @@ -973,21 +1038,27 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "e3-bfv-helpers" -version = "0.1.0" -source = "git+https://github.com/gnosisguild/enclave?rev=2ca0aa5f47dd962add5d1d0f74900d9bceb957e5#2ca0aa5f47dd962add5d1d0f74900d9bceb957e5" +version = "0.1.5" +source = "git+https://github.com/gnosisguild/enclave?rev=632766e4ed1ceeccdeb023a56f16413a33be6f46#632766e4ed1ceeccdeb023a56f16413a33be6f46" dependencies = [ "alloy-dyn-abi", "alloy-primitives", "anyhow", "fhe", + "fhe-math", "fhe-traits", + "fhe-util", + "num-bigint", "rand 0.8.5", + "strum", + "thiserror 1.0.69", + "zkfhe-greco", ] [[package]] name = "e3-compute-provider" -version = "0.1.0" -source = "git+https://github.com/gnosisguild/enclave?rev=2ca0aa5f47dd962add5d1d0f74900d9bceb957e5#2ca0aa5f47dd962add5d1d0f74900d9bceb957e5" +version = "0.1.5" +source = "git+https://github.com/gnosisguild/enclave?rev=632766e4ed1ceeccdeb023a56f16413a33be6f46#632766e4ed1ceeccdeb023a56f16413a33be6f46" dependencies = [ "ark-bn254 0.4.0", "ark-ff 0.4.2", @@ -999,6 +1070,7 @@ dependencies = [ "rayon", "serde", "sha3", + "zk-kit-imt", ] [[package]] @@ -1034,7 +1106,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1082,22 +1154,22 @@ checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" [[package]] name = "enum-ordinalize" -version = "4.3.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1108,12 +1180,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys", ] [[package]] @@ -1163,7 +1235,7 @@ dependencies = [ [[package]] name = "fhe" version = "0.1.0-beta.7" -source = "git+https://github.com/gnosisguild/fhe.rs#aa90ff007c1ef7c68eeac951ebbf1988d0f1411c" +source = "git+https://github.com/gnosisguild/fhe.rs#7692b954ce887ee78f0b6baae36447ca1aa74708" dependencies = [ "doc-comment", "fhe-math", @@ -1188,7 +1260,7 @@ dependencies = [ [[package]] name = "fhe-math" version = "0.1.0-beta.7" -source = "git+https://github.com/gnosisguild/fhe.rs#aa90ff007c1ef7c68eeac951ebbf1988d0f1411c" +source = "git+https://github.com/gnosisguild/fhe.rs#7692b954ce887ee78f0b6baae36447ca1aa74708" dependencies = [ "ethnum", "fhe-traits", @@ -1210,7 +1282,7 @@ dependencies = [ [[package]] name = "fhe-traits" version = "0.1.0-beta.7" -source = "git+https://github.com/gnosisguild/fhe.rs#aa90ff007c1ef7c68eeac951ebbf1988d0f1411c" +source = "git+https://github.com/gnosisguild/fhe.rs#7692b954ce887ee78f0b6baae36447ca1aa74708" dependencies = [ "rand 0.8.5", ] @@ -1218,7 +1290,7 @@ dependencies = [ [[package]] name = "fhe-util" version = "0.1.0-beta.7" -source = "git+https://github.com/gnosisguild/fhe.rs#aa90ff007c1ef7c68eeac951ebbf1988d0f1411c" +source = "git+https://github.com/gnosisguild/fhe.rs#7692b954ce887ee78f0b6baae36447ca1aa74708" dependencies = [ "itertools 0.12.1", "num-bigint-dig", @@ -1229,6 +1301,12 @@ dependencies = [ "rayon", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" + [[package]] name = "fixed-hash" version = "0.8.0" @@ -1277,7 +1355,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1294,9 +1372,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "generic-array" -version = "0.14.7" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" dependencies = [ "typenum", "version_check", @@ -1311,19 +1389,19 @@ checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "wasi", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasip2", ] [[package]] @@ -1341,8 +1419,6 @@ dependencies = [ name = "guests" version = "0.1.0" dependencies = [ - "alloy-primitives", - "alloy-sol-types", "anyhow", "bincode", "e3-compute-provider", @@ -1361,9 +1437,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", @@ -1371,6 +1447,12 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + [[package]] name = "heck" version = "0.5.0" @@ -1382,9 +1464,6 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] [[package]] name = "hex-literal" @@ -1401,6 +1480,30 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "iana-time-zone" +version = "0.1.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "impl-codec" version = "0.6.0" @@ -1418,7 +1521,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1429,13 +1532,14 @@ checksum = "4ee796ad498c8d9a1d68e477df8f754ed784ef875de1414ebdaf169f70a6a784" [[package]] name = "indexmap" -version = "2.10.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown 0.15.4", + "hashbrown 0.16.1", "serde", + "serde_core", ] [[package]] @@ -1465,12 +1569,31 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "js-sys" +version = "0.3.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + [[package]] name = "k256" version = "0.13.4" @@ -1518,14 +1641,14 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa2acc6dee32b12409446a76b9c1877e5ba9afb36dfcbe96d0ddaf15ca08f18d" dependencies = [ - "hashbrown 0.15.4", + "hashbrown 0.15.5", ] [[package]] name = "libc" -version = "0.2.174" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libm" @@ -1547,15 +1670,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "macro-string" @@ -1565,7 +1688,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1589,9 +1712,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "merlin" @@ -1611,7 +1734,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "block", "core-graphics-types", "foreign-types", @@ -1668,15 +1791,15 @@ dependencies = [ "num-integer", "num-traits", "rand 0.8.5", + "serde", ] [[package]] name = "num-bigint-dig" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" dependencies = [ - "byteorder", "lazy_static", "libm", "num-integer", @@ -1739,9 +1862,9 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" +checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" dependencies = [ "num_enum_derive", "rustversion", @@ -1749,13 +1872,13 @@ dependencies = [ [[package]] name = "num_enum_derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" +checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1798,7 +1921,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1809,12 +1932,11 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pest" -version = "2.8.1" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" dependencies = [ "memchr", - "thiserror 2.0.12", "ucd-trie", ] @@ -1867,12 +1989,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.36" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -1899,11 +2021,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit", + "toml_edit 0.23.7", ] [[package]] @@ -1925,28 +2047,27 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.1", - "lazy_static", + "bitflags 2.10.0", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -1984,7 +2105,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.104", + "syn 2.0.111", "tempfile", ] @@ -1998,7 +2119,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -2018,9 +2139,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.40" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -2094,7 +2215,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.3", + "getrandom 0.3.4", "serde", ] @@ -2135,9 +2256,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -2145,9 +2266,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" dependencies = [ "aho-corasick", "memchr", @@ -2157,9 +2278,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" dependencies = [ "aho-corasick", "memchr", @@ -2168,9 +2289,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" [[package]] name = "rfc6979" @@ -2184,9 +2305,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c8f97f81bcdead4101bca06469ecef481a2695cd04e7e877b49dea56a7f6f2a" +checksum = "9dca096030bb4c52f99b12abcfe3531ea93b17b95a12a5aeb06fbf8ee588a275" dependencies = [ "anyhow", "borsh", @@ -2199,16 +2320,16 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "ruint", - "semver 1.0.26", + "semver 1.0.27", "serde", "tracing", ] [[package]] name = "risc0-circuit-keccak" -version = "4.0.2" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f195f865ac1afdc21a172d7756fdcc21be18e13eb01d78d3d7f2b128fa881ba" +checksum = "4e1d23ef3648bb85b0bd37bc9f9f7d13f1a4388e5e779e18f7eea82b969e5dbc" dependencies = [ "anyhow", "bytemuck", @@ -2222,9 +2343,9 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" -version = "4.0.2" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dca8f15c8abc0fd8c097aa7459879110334d191c63dd51d4c28881c4a497279e" +checksum = "028cd26e1b1f7bdd964d2f1eac8f812d1872b6b8fd24f10804f07d916b90000e" dependencies = [ "anyhow", "bytemuck", @@ -2237,9 +2358,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "4.0.2" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1b0689f4a270a2f247b04397ebb431b8f64fe5170e98ee4f9d71bd04825205" +checksum = "e7ecd73a71ddce62eab8a28552ee182dc2ea08cdce2a3474a616a80bf2d6e9be" dependencies = [ "anyhow", "bit-vec", @@ -2265,9 +2386,9 @@ dependencies = [ [[package]] name = "risc0-groth16" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "724285dc79604abfb2d40feaefe3e335420a6b293511661f77d6af62f1f5fae9" +checksum = "73ff13f9b427254c5264e01aaa32e33f355525299b6829449295905778f3b1e8" dependencies = [ "anyhow", "ark-bn254 0.5.0", @@ -2286,9 +2407,9 @@ dependencies = [ [[package]] name = "risc0-zkos-v1compat" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840c2228803557a8b7dc035a8f196516b6fd68c9dc6ac092f0c86241b5b1bafb" +checksum = "faf1f35f2ef61d8d86fdd06288c11d2f3bbf08f1af66b24ca0a1976ecbf324a1" dependencies = [ "include_bytes_aligned", "no_std_strings", @@ -2297,9 +2418,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb6bf356f469bb8744f72a07a37134c5812c1d55d6271bba80e87bdb7a58c8e" +checksum = "beb493b3f007f04a11106a001c66bca77338d0fc375766189fd7ca3a1e8c3700" dependencies = [ "anyhow", "blake2", @@ -2341,7 +2462,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", - "semver 1.0.26", + "semver 1.0.27", "serde", "sha2", "stability", @@ -2357,7 +2478,7 @@ dependencies = [ "bytemuck", "cfg-if", "getrandom 0.2.16", - "getrandom 0.3.3", + "getrandom 0.3.4", "libm", "num_enum", "paste", @@ -2386,13 +2507,14 @@ dependencies = [ [[package]] name = "ruint" -version = "1.15.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11256b5fe8c68f56ac6f39ef0720e592f33d2367a4782740d9c9142e889c7fb4" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", "borsh", "bytes", "fastrlp 0.3.1", @@ -2407,7 +2529,7 @@ dependencies = [ "rand 0.9.2", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -2445,33 +2567,33 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.26", + "semver 1.0.27", ] [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.10.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.60.2", + "windows-sys", ] [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" dependencies = [ "fnv", "quick-error", @@ -2510,11 +2632,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -2528,34 +2651,54 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "serde_json" -version = "1.0.141" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", ] [[package]] @@ -2634,7 +2777,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -2643,6 +2786,27 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "subtle" version = "2.6.1" @@ -2662,9 +2826,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.104" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -2673,14 +2837,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a985ff4ffd7373e10e0fb048110fb11a162e5a4c47f92ddb8787a6f766b769" +checksum = "ff790eb176cc81bb8936aed0f7b9f14fc4670069a2d371b3e3b0ecce908b2cb3" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -2691,15 +2855,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.20.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys", ] [[package]] @@ -2713,11 +2877,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.17", ] [[package]] @@ -2728,18 +2892,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -2751,11 +2915,35 @@ dependencies = [ "crunchy", ] +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", +] + [[package]] name = "toml_datetime" version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] [[package]] name = "toml_edit" @@ -2764,10 +2952,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", - "toml_datetime", + "serde", + "serde_spanned", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tracing" version = "0.1.41" @@ -2788,7 +3006,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] @@ -2812,9 +3030,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "ucd-trie" @@ -2842,9 +3060,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-xid" @@ -2880,177 +3098,141 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" +name = "wasip2" +version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] -name = "windows-sys" -version = "0.59.0" +name = "wasm-bindgen" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ - "windows-targets 0.52.6", + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] -name = "windows-sys" -version = "0.60.2" +name = "wasm-bindgen-macro" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ - "windows-targets 0.53.2", + "quote", + "wasm-bindgen-macro-support", ] [[package]] -name = "windows-targets" -version = "0.52.6" +name = "wasm-bindgen-macro-support" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "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", + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.111", + "wasm-bindgen-shared", ] [[package]] -name = "windows-targets" -version = "0.53.2" +name = "wasm-bindgen-shared" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" 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", + "unicode-ident", ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - -[[package]] -name = "windows_aarch64_msvc" -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.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" +name = "windows-core" +version = "0.62.2" 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.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" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] [[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" +name = "windows-implement" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] [[package]] -name = "windows_x86_64_gnu" -version = "0.53.0" +name = "windows-interface" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] [[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" +name = "windows-link" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.0" +name = "windows-result" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] [[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" +name = "windows-strings" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] [[package]] -name = "windows_x86_64_msvc" -version = "0.53.0" +name = "windows-sys" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] [[package]] name = "winnow" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "wyz" @@ -3063,29 +3245,29 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "4ea879c944afe8a2b25fef16bb4ba234f47c694565e97383b36f3a878219065c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "cf955aa904d6040f70dc8e9384444cb1030aed272ba3cb09bbc4ab9e7c1f34f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -3098,5 +3280,58 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.104", + "syn 2.0.111", +] + +[[package]] +name = "zk-kit-imt" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a40d2f9afd345a14a304ad2ced6dbff4c17a0e5c533a3bd5f64fd04dcb2531" +dependencies = [ + "hex", + "tiny-keccak", +] + +[[package]] +name = "zkfhe-greco" +version = "0.1.0" +source = "git+https://github.com/gnosisguild/zkfhe-generator#6b424983347a4aa04c9725941f71ca6a4bed863e" +dependencies = [ + "anyhow", + "bigint-poly", + "blake3", + "fhe", + "fhe-math", + "fhe-traits", + "itertools 0.14.0", + "num-bigint", + "num-traits", + "rand 0.8.5", + "rayon", + "serde", + "serde_json", + "tempfile", + "toml", + "zkfhe-shared", +] + +[[package]] +name = "zkfhe-shared" +version = "0.1.0" +source = "git+https://github.com/gnosisguild/zkfhe-generator#6b424983347a4aa04c9725941f71ca6a4bed863e" +dependencies = [ + "anyhow", + "bigint-poly", + "chrono", + "fhe", + "fhe-math", + "fhe-traits", + "num-bigint", + "num-traits", + "rand 0.8.5", + "serde", + "serde_json", + "thiserror 1.0.69", + "toml", ] diff --git a/crates/support/methods/guest/Cargo.toml b/crates/support/methods/guest/Cargo.toml index c3487c16e3..e0e7fffce5 100644 --- a/crates/support/methods/guest/Cargo.toml +++ b/crates/support/methods/guest/Cargo.toml @@ -12,10 +12,8 @@ name = "program" path = "src/bin/program.rs" [dependencies] -alloy-primitives = { version = "=1.3.0", default-features = false, features = ["rlp", "serde", "std"] } -alloy-sol-types = "=1.3.0" risc0-zkvm = { version = "=3.0.3", default-features = false, features = ['std'] } -e3-compute-provider = { git = "https://github.com/gnosisguild/enclave", rev = "2ca0aa5f47dd962add5d1d0f74900d9bceb957e5" } +e3-compute-provider = { git = "https://github.com/gnosisguild/enclave", rev = "632766e4ed1ceeccdeb023a56f16413a33be6f46" } e3-user-program = { path = "../../program" } bincode = "=1.3.3" anyhow = "=1.0.98" diff --git a/crates/support/program/Cargo.toml b/crates/support/program/Cargo.toml index bb636a4be1..da82159363 100644 --- a/crates/support/program/Cargo.toml +++ b/crates/support/program/Cargo.toml @@ -6,5 +6,5 @@ edition = "2024" [dependencies] fhe = { workspace = true } fhe-traits = { workspace = true } -e3-compute-provider = { git = "https://github.com/gnosisguild/enclave", rev = "2ca0aa5f47dd962add5d1d0f74900d9bceb957e5" } -e3-bfv-helpers = { git = "https://github.com/gnosisguild/enclave", rev = "2ca0aa5f47dd962add5d1d0f74900d9bceb957e5" } +e3-compute-provider = { git = "https://github.com/gnosisguild/enclave", rev = "632766e4ed1ceeccdeb023a56f16413a33be6f46" } +e3-bfv-helpers = { git = "https://github.com/gnosisguild/enclave", rev = "632766e4ed1ceeccdeb023a56f16413a33be6f46" } diff --git a/eslint.config.mjs b/eslint.config.mjs index ec451bee55..62fd64e516 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -21,6 +21,7 @@ export default defineConfig([ '**/.cargo/**', '**/.enclave/**', '**/test-results/**', + '**/playwright-report/**', // Generated WASM bindings '**/pkg/**', ]), diff --git a/examples/CRISP/Cargo.lock b/examples/CRISP/Cargo.lock index 72614a8689..8d0f5ff0ba 100644 --- a/examples/CRISP/Cargo.lock +++ b/examples/CRISP/Cargo.lock @@ -2285,6 +2285,7 @@ dependencies = [ "rayon", "serde", "sha3", + "zk-kit-imt", ] [[package]] @@ -6570,6 +6571,16 @@ dependencies = [ "zkfhe-shared", ] +[[package]] +name = "zk-kit-imt" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a40d2f9afd345a14a304ad2ced6dbff4c17a0e5c533a3bd5f64fd04dcb2531" +dependencies = [ + "hex", + "tiny-keccak", +] + [[package]] name = "zkfhe-greco" version = "0.1.0" diff --git a/examples/CRISP/client/libs/wasm/pkg/crisp_worker.js b/examples/CRISP/client/libs/wasm/pkg/crisp_worker.js index 12f8a32c6d..1016704317 100755 --- a/examples/CRISP/client/libs/wasm/pkg/crisp_worker.js +++ b/examples/CRISP/client/libs/wasm/pkg/crisp_worker.js @@ -49,6 +49,7 @@ self.onmessage = async function (event) { isFirstVote: true, }) + // eslint-disable-next-line @typescript-eslint/no-unused-vars const { proof, returnValue } = await generateProofWithReturnValue(inputs) // TODO: returnValue is the encrypted vote. We need to convert it from Noir format to BFV format diff --git a/examples/CRISP/crates/evm_helpers/src/lib.rs b/examples/CRISP/crates/evm_helpers/src/lib.rs index ca19ebbdbe..724071dc03 100644 --- a/examples/CRISP/crates/evm_helpers/src/lib.rs +++ b/examples/CRISP/crates/evm_helpers/src/lib.rs @@ -25,10 +25,15 @@ sol! { #[derive(Debug)] #[sol(rpc)] contract CRISPProgram { - function setRoundData(uint256 _root, address _token, uint256 _balanceThreshold) external; + function setRoundData(uint256 e3_id, uint256 _root, address _token, uint256 _balanceThreshold) external; } } +sol! { + event InputPublished(uint256 indexed e3Id, bytes vote, uint256 index); +} + + /// Type alias for write provider (same as EnclaveWriteProvider) pub type CRISPWriteProvider = FillProvider< JoinFill< @@ -78,13 +83,14 @@ impl CRISPContract { /// Set round data on the CRISPProgram contract pub async fn set_round_data( &self, + e3_id: U256, merkle_root: U256, token_address: Address, balance_threshold: U256, ) -> Result { let contract = CRISPProgram::new(self.contract_address, self.provider.as_ref()); let receipt = contract - .setRoundData(merkle_root, token_address, balance_threshold) + .setRoundData(e3_id, merkle_root, token_address, balance_threshold) .send() .await? .get_receipt() diff --git a/examples/CRISP/eslint.config.js b/examples/CRISP/eslint.config.js index 17862e549c..7f04cd64b1 100644 --- a/examples/CRISP/eslint.config.js +++ b/examples/CRISP/eslint.config.js @@ -19,6 +19,8 @@ export default defineConfig([ '**/artifacts/**', '**/types/**', '**/.cache-synpress/**', + '**/playwright-report/**', + 'packages/crisp-zk-inputs/pkg/**', ]), { extends: [config], diff --git a/examples/CRISP/packages/crisp-contracts/contracts/CRISPProgram.sol b/examples/CRISP/packages/crisp-contracts/contracts/CRISPProgram.sol index c6f91d6b54..5aa0b0d41e 100644 --- a/examples/CRISP/packages/crisp-contracts/contracts/CRISPProgram.sol +++ b/examples/CRISP/packages/crisp-contracts/contracts/CRISPProgram.sol @@ -5,247 +5,260 @@ // or FITNESS FOR A PARTICULAR PURPOSE. pragma solidity >=0.8.27; -import {IRiscZeroVerifier} from "risc0/IRiscZeroVerifier.sol"; -import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; -import {IE3Program} from "@enclave-e3/contracts/contracts/interfaces/IE3Program.sol"; -import {IEnclave} from "@enclave-e3/contracts/contracts/interfaces/IEnclave.sol"; -import {E3} from "@enclave-e3/contracts/contracts/interfaces/IE3.sol"; -import {HonkVerifier} from "./CRISPVerifier.sol"; +import { IRiscZeroVerifier } from 'risc0/IRiscZeroVerifier.sol'; +import { Ownable } from '@openzeppelin/contracts/access/Ownable.sol'; +import { IE3Program } from '@enclave-e3/contracts/contracts/interfaces/IE3Program.sol'; +import { IEnclave } from '@enclave-e3/contracts/contracts/interfaces/IEnclave.sol'; +import { E3 } from '@enclave-e3/contracts/contracts/interfaces/IE3.sol'; +import { LazyIMTData, InternalLazyIMT, PoseidonT3 } from '@zk-kit/lazy-imt.sol/InternalLazyIMT.sol'; -contract CRISPProgram is IE3Program, Ownable { - /// @notice a structure that holds the round data - struct RoundData { - /// @notice The governance token address. - address token; - /// @notice The minimum balance required to pass the validation. - uint256 balanceThreshold; - /// @notice The Merkle root of the census. - uint256 censusMerkleRoot; - } - - // Constants - bytes32 public constant ENCRYPTION_SCHEME_ID = keccak256("fhe.rs:BFV"); - - // State variables - IEnclave public enclave; - IRiscZeroVerifier public verifier; - HonkVerifier private immutable HONK_VERIFIER; - bytes32 public imageId; - - /// @notice the round data - RoundData public roundData; - /// @notice whether the round data has been set - bool public isDataSet; - - /// @notice Mapping to store votes. Each elegible voter has their own slot - /// to store their vote. - mapping(address => bytes) public voteSlots; - - /// @notice Half of the largest minimum degree used to fit votes - /// inside the plaintext polynomial - uint256 public constant HALF_LARGEST_MINIMUM_DEGREE = 28; - - // Mappings - mapping(address => bool) public authorizedContracts; - mapping(uint256 e3Id => bytes32 paramsHash) public paramsHashes; - - // Errors - error CallerNotAuthorized(); - error E3AlreadyInitialized(); - error E3DoesNotExist(); - error EnclaveAddressZero(); - error VerifierAddressZero(); - - /// @notice The error emitted when the honk verifier address is invalid. - error InvalidHonkVerifier(); - /// @notice The error emitted when the input data is empty. - error EmptyInputData(); - /// @notice The error emitted when the input data is invalid. - error InvalidInputData(bytes reason); - /// @notice The error emitted when the Noir proof is invalid. - error InvalidNoirProof(); - /// @notice The error emitted when the round data is not set. - error RoundDataNotSet(); - /// @notice The error emitted when trying to set the round data more than once. - error RoundDataAlreadySet(); - - /// @notice Initialize the contract, binding it to a specified RISC Zero verifier. - /// @param _enclave The enclave address - /// @param _verifier The RISC Zero verifier address - /// @param _honkVerifier The honk verifier address - /// @param _imageId The image ID for the guest program - constructor(IEnclave _enclave, IRiscZeroVerifier _verifier, HonkVerifier _honkVerifier, bytes32 _imageId) - Ownable(msg.sender) - { - require(address(_enclave) != address(0), EnclaveAddressZero()); - require(address(_verifier) != address(0), VerifierAddressZero()); - require(address(_honkVerifier) != address(0), InvalidHonkVerifier()); - - enclave = _enclave; - verifier = _verifier; - HONK_VERIFIER = _honkVerifier; - authorizedContracts[address(_enclave)] = true; - imageId = _imageId; - } - - /// @notice Sets the Round data. Can only be set once. - /// @param _root The Merkle root to set. - /// @param _token The governance token address. - /// @param _balanceThreshold The minimum balance required. - function setRoundData(uint256 _root, address _token, uint256 _balanceThreshold) - external - onlyOwner - { - if (isDataSet) revert RoundDataAlreadySet(); - - isDataSet = true; - - roundData = RoundData({ - token: _token, - balanceThreshold: _balanceThreshold, - censusMerkleRoot: _root - }); - } - - /// @notice Set the Image ID for the guest program - /// @param _imageId The new image ID. - function setImageId(bytes32 _imageId) external onlyOwner { - imageId = _imageId; - } - - /// @notice Set the RISC Zero verifier address - /// @param _verifier The new RISC Zero verifier address - function setVerifier(IRiscZeroVerifier _verifier) external onlyOwner { - if (address(_verifier) == address(0)) revert VerifierAddressZero(); - verifier = _verifier; - } +import { HonkVerifier } from './CRISPVerifier.sol'; - /// @notice Get the params hash for an E3 program - /// @param e3Id The E3 program ID - /// @return The params hash - function getParamsHash(uint256 e3Id) public view returns (bytes32) { - return paramsHashes[e3Id]; +contract CRISPProgram is IE3Program, Ownable { + using InternalLazyIMT for LazyIMTData; + /// @notice a structure that holds the round data + struct RoundData { + /// @notice The governance token address. + address token; + /// @notice The minimum balance required to pass the validation. + uint256 balanceThreshold; + /// @notice The Merkle root of the census. + uint256 censusMerkleRoot; + } + + // Constants + bytes32 public constant ENCRYPTION_SCHEME_ID = keccak256('fhe.rs:BFV'); + + // The depth of the input merkle tree + uint8 public constant TREE_DEPTH = 20; + + // State variables + IEnclave public enclave; + IRiscZeroVerifier public verifier; + HonkVerifier private immutable HONK_VERIFIER; + bytes32 public imageId; + + /// @notice the round data + mapping(uint256 e3Id => RoundData roundData) public roundsData; + /// @notice whether the round data has been set + mapping(uint256 e3Id => bool isDataSet) public isRoundsDataSet; + + /// @notice Half of the largest minimum degree used to fit votes + /// inside the plaintext polynomial + uint256 public constant HALF_LARGEST_MINIMUM_DEGREE = 28; + + // Mappings + mapping(address => bool) public authorizedContracts; + mapping(uint256 e3Id => bytes32 paramsHash) public paramsHashes; + /// @notice Mapping to store votes slot indices. Each eligible voter has their own slot + /// to store their vote inside the merkle tree. + mapping(uint256 e3Id => mapping(address slot => uint40 index)) public voteSlots; + mapping(uint256 e3Id => LazyIMTData) public votes; + + // Errors + error CallerNotAuthorized(); + error E3AlreadyInitialized(); + error E3DoesNotExist(); + error EnclaveAddressZero(); + error VerifierAddressZero(); + + /// @notice The error emitted when the honk verifier address is invalid. + error InvalidHonkVerifier(); + /// @notice The error emitted when the input data is empty. + error EmptyInputData(); + /// @notice The error emitted when the input data is invalid. + error InvalidInputData(bytes reason); + /// @notice The error emitted when the Noir proof is invalid. + error InvalidNoirProof(); + /// @notice The error emitted when the round data is not set. + error RoundDataNotSet(); + /// @notice The error emitted when trying to set the round data more than once. + error RoundDataAlreadySet(); + + /// @notice The event emitted when an input is published. + event InputPublished(uint256 indexed e3Id, bytes vote, uint256 index); + + /// @notice Initialize the contract, binding it to a specified RISC Zero verifier. + /// @param _enclave The enclave address + /// @param _verifier The RISC Zero verifier address + /// @param _honkVerifier The honk verifier address + /// @param _imageId The image ID for the guest program + constructor(IEnclave _enclave, IRiscZeroVerifier _verifier, HonkVerifier _honkVerifier, bytes32 _imageId) Ownable(msg.sender) { + require(address(_enclave) != address(0), EnclaveAddressZero()); + require(address(_verifier) != address(0), VerifierAddressZero()); + require(address(_honkVerifier) != address(0), InvalidHonkVerifier()); + + enclave = _enclave; + verifier = _verifier; + HONK_VERIFIER = _honkVerifier; + authorizedContracts[address(_enclave)] = true; + imageId = _imageId; + } + + /// @notice Sets the Round data. Can only be set once. + /// @param _root The Merkle root to set. + /// @param _token The governance token address. + /// @param _balanceThreshold The minimum balance required. + function setRoundData(uint256 _e3Id, uint256 _root, address _token, uint256 _balanceThreshold) external onlyOwner { + if (isRoundsDataSet[_e3Id]) revert RoundDataAlreadySet(); + + isRoundsDataSet[_e3Id] = true; + + roundsData[_e3Id] = RoundData({ token: _token, balanceThreshold: _balanceThreshold, censusMerkleRoot: _root }); + } + + /// @notice Set the Image ID for the guest program + /// @param _imageId The new image ID. + function setImageId(bytes32 _imageId) external onlyOwner { + imageId = _imageId; + } + + /// @notice Set the RISC Zero verifier address + /// @param _verifier The new RISC Zero verifier address + function setVerifier(IRiscZeroVerifier _verifier) external onlyOwner { + if (address(_verifier) == address(0)) revert VerifierAddressZero(); + verifier = _verifier; + } + + /// @notice Get the params hash for an E3 program + /// @param e3Id The E3 program ID + /// @return The params hash + function getParamsHash(uint256 e3Id) public view returns (bytes32) { + return paramsHashes[e3Id]; + } + + /// @notice Validate the E3 program parameters + /// @param e3Id The E3 program ID + /// @param e3ProgramParams The E3 program parameters + function validate(uint256 e3Id, uint256, bytes calldata e3ProgramParams, bytes calldata) external returns (bytes32) { + require(authorizedContracts[msg.sender] || msg.sender == owner(), CallerNotAuthorized()); + require(paramsHashes[e3Id] == bytes32(0), E3AlreadyInitialized()); + paramsHashes[e3Id] = keccak256(e3ProgramParams); + + // we need to init the inputs merkle tree for this e3Id + votes[e3Id]._init(TREE_DEPTH); + + return ENCRYPTION_SCHEME_ID; + } + + /// @inheritdoc IE3Program + function validateInput(uint256 e3Id, address, bytes memory data) external returns (bytes memory input) { + // it should only be called via Enclave for now + require(authorizedContracts[msg.sender] || msg.sender == owner(), CallerNotAuthorized()); + // We need to ensure that the CRISP admin set the merkle root of the census. + if (!isRoundsDataSet[e3Id]) revert RoundDataNotSet(); + + if (data.length == 0) revert EmptyInputData(); + + (bytes memory noirProof, bytes memory vote, address slot) = abi.decode(data, (bytes, bytes, address)); + + (uint40 voteIndex, bool isFirstVote) = _processVote(e3Id, slot, vote); + + bytes32[] memory noirPublicInputs = new bytes32[](2); + + // Set public inputs for the proof. Order must match Noir circuit. + noirPublicInputs[0] = bytes32(uint256(uint160(slot))); + // Pass isFirstVote flag to verifier (1 = first vote, 0 = re-vote) + noirPublicInputs[1] = bytes32(uint256(isFirstVote ? 1 : 0)); + + // noirPublicInputs[x] = bytes32(roundData.censusMerkleRoot); + + // Check if the ciphertext was encrypted correctly + if (!HONK_VERIFIER.verify(noirProof, noirPublicInputs)) { + revert InvalidNoirProof(); } - /// @notice Validate the E3 program parameters - /// @param e3Id The E3 program ID - /// @param e3ProgramParams The E3 program parameters - function validate(uint256 e3Id, uint256, bytes calldata e3ProgramParams, bytes calldata) - external - returns (bytes32) - { - require(authorizedContracts[msg.sender] || msg.sender == owner(), CallerNotAuthorized()); - require(paramsHashes[e3Id] == bytes32(0), E3AlreadyInitialized()); - paramsHashes[e3Id] = keccak256(e3ProgramParams); - - return ENCRYPTION_SCHEME_ID; + // return the vote so that it can be stored in Enclave's input merkle tree + input = vote; + + emit InputPublished(e3Id, vote, voteIndex); + } + + /// @notice Process a vote: insert or update in the merkle tree depending + /// on whether it's the first vote or an override. + function _processVote(uint256 e3Id, address slot, bytes memory vote) internal returns (uint40 voteIndex, bool isFirstVote) { + uint40 storedIndexPlusOne = voteSlots[e3Id][slot]; + + // we treat the index 0 as not voted yet + // any valid index will be index + 1 + if (storedIndexPlusOne == 0) { + // FIRST VOTE + isFirstVote = true; + voteIndex = votes[e3Id].numberOfLeaves; + voteSlots[e3Id][slot] = voteIndex + 1; + votes[e3Id]._insert(PoseidonT3.hash([uint256(keccak256(vote)), voteIndex])); + } else { + // RE-VOTE + isFirstVote = false; + voteIndex = storedIndexPlusOne - 1; + votes[e3Id]._update(PoseidonT3.hash([uint256(keccak256(vote)), voteIndex]), voteIndex); } - - function validateInput(address, bytes memory data) external returns (bytes memory input) { - // it should only be called via Enclave for now - require( - authorizedContracts[msg.sender] || msg.sender == owner(), - CallerNotAuthorized() - ); - // We need to ensure that the CRISP admin set the merkle root of the census. - if (!isDataSet) revert RoundDataNotSet(); - - if (data.length == 0) revert EmptyInputData(); - - (bytes memory noirProof, bytes memory vote, address slot) = abi.decode( - data, - (bytes, bytes, address) - ); - - bytes32[] memory noirPublicInputs = new bytes32[](2); - - // Set public inputs for the proof. Order must match Noir circuit. - noirPublicInputs[0] = bytes32(uint256(uint160(slot))); - bool isFirstVote = voteSlots[slot].length == 0; - noirPublicInputs[1] = bytes32(uint256(isFirstVote ? 1 : 0)); - // noirPublicInputs[x] = bytes32(roundData.censusMerkleRoot); - - // Check if the ciphertext was encrypted correctly - if (!HONK_VERIFIER.verify(noirProof, noirPublicInputs)) { - revert InvalidNoirProof(); - } - - /// @notice Store the vote in the correct slot. - voteSlots[slot] = vote; - - // return the vote so that it can be stored in Enclave's input merkle tree - input = vote; + } + + /// @notice Decode the tally from the plaintext output + /// @param e3Id The E3 program ID + /// @return yes The number of yes votes + /// @return no The number of no votes + function decodeTally(uint256 e3Id) public view returns (uint256 yes, uint256 no) { + // fetch from enclave + E3 memory e3 = enclave.getE3(e3Id); + + // abi decode it into an array of uint256 + uint256[] memory tally = abi.decode(e3.plaintextOutput, (uint256[])); + + /// @notice We want to completely ignore anything outside of the coefficients + /// we agreed to store out votes on. + uint256 halfD = tally.length / 2; + uint256 START_INDEX_Y = halfD - HALF_LARGEST_MINIMUM_DEGREE; + uint256 START_INDEX_N = tally.length - HALF_LARGEST_MINIMUM_DEGREE; + + // first weight (we are converting back from bits to integer) + uint256 weight = 2 ** (HALF_LARGEST_MINIMUM_DEGREE - 1); + + // Convert yes votes + for (uint256 i = START_INDEX_Y; i < halfD; i++) { + yes += tally[i] * weight; + weight /= 2; // Right shift equivalent } - /// @notice Decode the tally from the plaintext output - /// @param e3Id The E3 program ID - /// @return yes The number of yes votes - /// @return no The number of no votes - function decodeTally(uint256 e3Id) public view returns (uint256 yes, uint256 no) { - // fetch from enclave - E3 memory e3 = enclave.getE3(e3Id); - - // abi decode it into an array of uint256 - uint256[] memory tally = abi.decode(e3.plaintextOutput, (uint256[])); - - /// @notice We want to completely ignore anything outside of the coefficients - /// we agreed to store out votes on. - uint256 halfD = tally.length / 2; - uint256 START_INDEX_Y = halfD - HALF_LARGEST_MINIMUM_DEGREE; - uint256 START_INDEX_N = tally.length - HALF_LARGEST_MINIMUM_DEGREE; - - // first weight (we are converting back from bits to integer) - uint256 weight = 2 ** (HALF_LARGEST_MINIMUM_DEGREE - 1); - - // Convert yes votes - for (uint256 i = START_INDEX_Y; i < halfD; i++) { - yes += tally[i] * weight; - weight /= 2; // Right shift equivalent - } - - // Reset weight for no votes - weight = 2 ** (HALF_LARGEST_MINIMUM_DEGREE - 1); - - // Convert no votes - for (uint256 i = START_INDEX_N; i < tally.length; i++) { - no += tally[i] * weight; - weight /= 2; - } - - return (yes, no); - } + // Reset weight for no votes + weight = 2 ** (HALF_LARGEST_MINIMUM_DEGREE - 1); - /// @notice Verify the proof - /// @param e3Id The E3 program ID - /// @param ciphertextOutputHash The hash of the ciphertext output - /// @param proof The proof to verify - function verify(uint256 e3Id, bytes32 ciphertextOutputHash, bytes memory proof) - external - view - override - returns (bool) - { - require(paramsHashes[e3Id] != bytes32(0), E3DoesNotExist()); - bytes32 inputRoot = bytes32(enclave.getInputRoot(e3Id)); - bytes memory journal = new bytes(396); // (32 + 1) * 4 * 3 - - encodeLengthPrefixAndHash(journal, 0, ciphertextOutputHash); - encodeLengthPrefixAndHash(journal, 132, paramsHashes[e3Id]); - encodeLengthPrefixAndHash(journal, 264, inputRoot); - - verifier.verify(proof, imageId, sha256(journal)); - return true; + // Convert no votes + for (uint256 i = START_INDEX_N; i < tally.length; i++) { + no += tally[i] * weight; + weight /= 2; } - /// @notice Encode length prefix and hash - /// @param journal The journal to encode into - /// @param startIndex The start index in the journal - /// @param hashVal The hash value to encode - function encodeLengthPrefixAndHash(bytes memory journal, uint256 startIndex, bytes32 hashVal) internal pure { - journal[startIndex] = 0x20; - startIndex += 4; - for (uint256 i = 0; i < 32; i++) { - journal[startIndex + i * 4] = hashVal[i]; - } + return (yes, no); + } + + /// @notice Verify the proof + /// @param e3Id The E3 program ID + /// @param ciphertextOutputHash The hash of the ciphertext output + /// @param proof The proof to verify + function verify(uint256 e3Id, bytes32 ciphertextOutputHash, bytes memory proof) external view override returns (bool) { + require(paramsHashes[e3Id] != bytes32(0), E3DoesNotExist()); + bytes32 inputRoot = bytes32(votes[e3Id]._root(TREE_DEPTH)); + bytes memory journal = new bytes(396); // (32 + 1) * 4 * 3 + + encodeLengthPrefixAndHash(journal, 0, ciphertextOutputHash); + encodeLengthPrefixAndHash(journal, 132, paramsHashes[e3Id]); + encodeLengthPrefixAndHash(journal, 264, inputRoot); + + verifier.verify(proof, imageId, sha256(journal)); + return true; + } + + /// @notice Encode length prefix and hash + /// @param journal The journal to encode into + /// @param startIndex The start index in the journal + /// @param hashVal The hash value to encode + function encodeLengthPrefixAndHash(bytes memory journal, uint256 startIndex, bytes32 hashVal) internal pure { + journal[startIndex] = 0x20; + startIndex += 4; + for (uint256 i = 0; i < 32; i++) { + journal[startIndex + i * 4] = hashVal[i]; } + } } diff --git a/examples/CRISP/packages/crisp-contracts/contracts/Mocks/MockCRISPProgram.sol b/examples/CRISP/packages/crisp-contracts/contracts/Mocks/MockCRISPProgram.sol index 452c4ec13a..9202d28adc 100644 --- a/examples/CRISP/packages/crisp-contracts/contracts/Mocks/MockCRISPProgram.sol +++ b/examples/CRISP/packages/crisp-contracts/contracts/Mocks/MockCRISPProgram.sol @@ -10,17 +10,18 @@ import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {IE3Program} from "@enclave-e3/contracts/contracts/interfaces/IE3Program.sol"; import {IEnclave} from "@enclave-e3/contracts/contracts/interfaces/IEnclave.sol"; import {E3} from "@enclave-e3/contracts/contracts/interfaces/IE3.sol"; +import {LazyIMTData, InternalLazyIMT} from "@zk-kit/lazy-imt.sol/InternalLazyIMT.sol"; + import {HonkVerifier} from "../CRISPVerifier.sol"; contract MockCRISPProgram is IE3Program, Ownable { + using InternalLazyIMT for LazyIMTData; /// @notice a structure that holds the round data struct RoundData { /// @notice The governance token address. address token; /// @notice The minimum balance required to pass the validation. uint256 balanceThreshold; - /// @notice The block number at which the balance will be checked. - uint256 snapshotBlock; /// @notice The Merkle root of the census. uint256 censusMerkleRoot; } @@ -28,6 +29,9 @@ contract MockCRISPProgram is IE3Program, Ownable { // Constants bytes32 public constant ENCRYPTION_SCHEME_ID = keccak256("fhe.rs:BFV"); + // The depth of the input merkle tree + uint8 public constant TREE_DEPTH = 20; + // State variables IEnclave public enclave; IRiscZeroVerifier public verifier; @@ -39,10 +43,6 @@ contract MockCRISPProgram is IE3Program, Ownable { /// @notice whether the round data has been set bool public isDataSet; - /// @notice Mapping to store votes. Each elegible voter has their own slot - /// to store their vote. - mapping(address => bytes) public voteSlots; - /// @notice Half of the largest minimum degree used to fit votes /// inside the plaintext polynomial uint256 public constant HALF_LARGEST_MINIMUM_DEGREE = 28; @@ -50,6 +50,10 @@ contract MockCRISPProgram is IE3Program, Ownable { // Mappings mapping(address => bool) public authorizedContracts; mapping(uint256 e3Id => bytes32 paramsHash) public paramsHashes; + /// @notice Mapping to store votes slot indices. Each eligible voter has their own slot + /// to store their vote inside the merkle tree. + mapping(uint256 e3Id => mapping(address slot => uint40 index)) public voteSlots; + mapping(uint256 e3Id => LazyIMTData) public votes; // Errors error CallerNotAuthorized(); @@ -71,6 +75,9 @@ contract MockCRISPProgram is IE3Program, Ownable { /// @notice The error emitted when trying to set the round data more than once. error RoundDataAlreadySet(); + /// @notice The event emitted when an input is published. + event InputPublished(uint256 indexed e3Id, bytes vote, uint256 index); + /// @notice Initialize the contract, binding it to a specified RISC Zero verifier. /// @param _enclave The enclave address /// @param _verifier The RISC Zero verifier address @@ -90,9 +97,11 @@ contract MockCRISPProgram is IE3Program, Ownable { imageId = _imageId; } - /// @notice Sets the Merkle root of the census. Can only be set once. + /// @notice Sets the Round data. Can only be set once. /// @param _root The Merkle root to set. - function setRoundData(uint256 _root, address _token, uint256 _balanceThreshold, uint256 _snapshotBlock) + /// @param _token The governance token address. + /// @param _balanceThreshold The minimum balance required. + function setRoundData(uint256 _root, address _token, uint256 _balanceThreshold) external onlyOwner { @@ -103,7 +112,6 @@ contract MockCRISPProgram is IE3Program, Ownable { roundData = RoundData({ token: _token, balanceThreshold: _balanceThreshold, - snapshotBlock: _snapshotBlock, censusMerkleRoot: _root }); } @@ -117,6 +125,7 @@ contract MockCRISPProgram is IE3Program, Ownable { /// @notice Set the RISC Zero verifier address /// @param _verifier The new RISC Zero verifier address function setVerifier(IRiscZeroVerifier _verifier) external onlyOwner { + if (address(_verifier) == address(0)) revert VerifierAddressZero(); verifier = _verifier; } @@ -141,7 +150,8 @@ contract MockCRISPProgram is IE3Program, Ownable { return ENCRYPTION_SCHEME_ID; } - function validateInput(address, bytes memory data) external returns (bytes memory input) { + /// @inheritdoc IE3Program + function validateInput(uint256 e3Id, address, bytes memory data) external returns (bytes memory input) { if (data.length == 0) revert EmptyInputData(); (,, bytes memory vote,) = abi.decode(data, (bytes, bytes32[], bytes, address)); @@ -198,7 +208,7 @@ contract MockCRISPProgram is IE3Program, Ownable { returns (bool) { require(paramsHashes[e3Id] != bytes32(0), E3DoesNotExist()); - bytes32 inputRoot = bytes32(enclave.getInputRoot(e3Id)); + bytes32 inputRoot = bytes32(votes[e3Id]._root(TREE_DEPTH)); bytes memory journal = new bytes(396); // (32 + 1) * 4 * 3 encodeLengthPrefixAndHash(journal, 0, ciphertextOutputHash); diff --git a/examples/CRISP/packages/crisp-contracts/deploy/crisp.ts b/examples/CRISP/packages/crisp-contracts/deploy/crisp.ts index b85f61382d..a513c7fefd 100644 --- a/examples/CRISP/packages/crisp-contracts/deploy/crisp.ts +++ b/examples/CRISP/packages/crisp-contracts/deploy/crisp.ts @@ -11,6 +11,8 @@ import { readFileSync } from 'fs' import { ContractFactory } from 'ethers' import hre from 'hardhat' +import { MockCRISPProgram__factory as MockCRISPProgramFactory, CRISPProgram__factory as CRISPProgramFactory } from '../types' + const imageIdContent = readFileSync('../../.enclave/generated/contracts/ImageID.sol', 'utf-8') const match = imageIdContent.match(/bytes32 public constant PROGRAM_ID = bytes32\((0x[a-fA-F0-9]+)\)/) const IMAGE_ID = match ? match[1] : null @@ -38,6 +40,11 @@ export const deployCRISPContracts = async () => { } const enclave = EnclaveFactory.connect(enclaveAddress, owner) + const poseidonT3Address = readDeploymentArgs('PoseidonT3', chain)?.address + if (!poseidonT3Address) { + throw new Error('PoseidonT3 address not found, it must be deployed first') + } + const zkTranscriptLib = await ethers.deployContract('ZKTranscriptLib') await zkTranscriptLib.waitForDeployment() const zkTranscriptLibAddress = await zkTranscriptLib.getAddress() @@ -62,9 +69,21 @@ export const deployCRISPContracts = async () => { if (useMockInputValidator) { console.log('Using MockCRISPProgram') - crispFactory = await ethers.getContractFactory('MockCRISPProgram') + crispFactory = await ethers.getContractFactory( + MockCRISPProgramFactory.abi, + MockCRISPProgramFactory.linkBytecode({ + 'npm/poseidon-solidity@0.0.5/PoseidonT3.sol:PoseidonT3': poseidonT3Address, + }), + owner, + ) } else { - crispFactory = await ethers.getContractFactory('CRISPProgram') + crispFactory = await ethers.getContractFactory( + CRISPProgramFactory.abi, + CRISPProgramFactory.linkBytecode({ + 'npm/poseidon-solidity@0.0.5/PoseidonT3.sol:PoseidonT3': poseidonT3Address, + }), + owner, + ) } const crisp = await crispFactory.deploy(enclaveAddress, verifier, honkVerifierAddress, IMAGE_ID) diff --git a/examples/CRISP/packages/crisp-contracts/deployed_contracts.json b/examples/CRISP/packages/crisp-contracts/deployed_contracts.json index 9d3e9ce8e9..0b5a15cb3e 100644 --- a/examples/CRISP/packages/crisp-contracts/deployed_contracts.json +++ b/examples/CRISP/packages/crisp-contracts/deployed_contracts.json @@ -2,7 +2,7 @@ "sepolia": { "PoseidonT3": { "blockNumber": 9621845, - "address": "0x3333333C0A88F9BE4fd23ed0536F9B6c427e3B93" + "address": "0xB43122Ecb241DD50062641f089876679fd06599a" }, "MockUSDC": { "constructorArgs": { @@ -107,22 +107,7 @@ "address": "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44" }, "MockRISC0Verifier": { - "address": "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F" - }, - "HonkVerifier": { - "address": "0x09635F643e140090A9A8Dcd712eD6285858ceBef" - }, - "CRISPProgram": { - "address": "0xc5a5C42992dECbae36851359345FE25997F5C42d", - "constructorArgs": { - "enclave": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "verifierAddress": "0x7a2088a1bFc9d81c55368AE168C2C02570cB814F", - "honkVerifierAddress": "0x09635F643e140090A9A8Dcd712eD6285858ceBef", - "imageId": "0x23734b77b0f76e85623a88d7a82f24c34c94834f2501964ea123b7a2027013a2" - } - }, - "CRISPInputValidator": { - "address": "0x764364c0e4C3072A7DF777F4037907fdf2f1A89f" + "address": "0xa85233C63b9Ee964Add6F2cffe00Fd84eb32338f" } } } \ No newline at end of file diff --git a/examples/CRISP/packages/crisp-contracts/package.json b/examples/CRISP/packages/crisp-contracts/package.json index 4fc5c49aec..79be2f15c9 100644 --- a/examples/CRISP/packages/crisp-contracts/package.json +++ b/examples/CRISP/packages/crisp-contracts/package.json @@ -41,7 +41,7 @@ "dependencies": { "@enclave-e3/contracts": "workspace:*", "@excubiae/contracts": "^0.4.0", - "@zk-kit/lean-imt.sol": "2.0.0", + "@zk-kit/lazy-imt.sol": "2.0.0-beta.12", "poseidon-solidity": "^0.0.5", "solady": "^0.1.13" }, diff --git a/examples/CRISP/packages/crisp-contracts/remappings.txt b/examples/CRISP/packages/crisp-contracts/remappings.txt index 7b1a592736..e1703d4544 100644 --- a/examples/CRISP/packages/crisp-contracts/remappings.txt +++ b/examples/CRISP/packages/crisp-contracts/remappings.txt @@ -2,6 +2,6 @@ forge-std/=lib/risc0-ethereum/lib/forge-std/src/ risc0/=lib/risc0-ethereum/contracts/src/ @enclave-e3/contracts/=node_modules/@enclave-e3/contracts/ solady/=node_modules/solady/ -@zk-kit/lean-imt.sol=node_modules/@zk-kit/lean-imt.sol +@zk-kit/lazy-imt.sol=node_modules/@zk-kit/lazy-imt.sol poseidon-solidity/=node_modules/poseidon-solidity/ @openzeppelin/=node_modules/@openzeppelin/ \ No newline at end of file diff --git a/examples/CRISP/packages/crisp-contracts/tests/crisp.contracts.test.ts b/examples/CRISP/packages/crisp-contracts/tests/crisp.contracts.test.ts index 64a1013ecc..c662a355d7 100644 --- a/examples/CRISP/packages/crisp-contracts/tests/crisp.contracts.test.ts +++ b/examples/CRISP/packages/crisp-contracts/tests/crisp.contracts.test.ts @@ -20,6 +20,8 @@ import { import { expect } from 'chai' import type { HonkVerifier, MockEnclave } from '../types' +import { CRISPProgram__factory as CRISPProgramFactory } from '../types' + let zkInputsGenerator = ZKInputsGenerator.withDefaults() let publicKey = zkInputsGenerator.generatePublicKey() const previousCiphertext = zkInputsGenerator.encryptVote(publicKey, new BigInt64Array([0n])) @@ -27,16 +29,27 @@ const previousCiphertext = zkInputsGenerator.encryptVote(publicKey, new BigInt64 describe('CRISP Contracts', function () { const nonZeroAddress = '0xc6e7DF5E7b4f2A278906862b61205850344D4e7d' + let poseidonT3Address: string + + before(async () => { + const { ethers } = await network.connect() + + const poseidonT3 = await ethers.deployContract('PoseidonT3') + await poseidonT3.waitForDeployment() + poseidonT3Address = await poseidonT3.getAddress() + }) + describe('deployment', () => { it('should deploy the contracts', async () => { const { ethers } = await network.connect() - /* - IEnclave _enclave, - IRiscZeroVerifier _verifier, - HonkVerifier _honkVerifier, - bytes32 _imageId - */ - const program = await ethers.deployContract('CRISPProgram', [nonZeroAddress, nonZeroAddress, nonZeroAddress, zeroHash]) + + const programFactory = await ethers.getContractFactory( + CRISPProgramFactory.abi, + CRISPProgramFactory.linkBytecode({ + 'npm/poseidon-solidity@0.0.5/PoseidonT3.sol:PoseidonT3': poseidonT3Address, + }), + ) + const program = await programFactory.deploy(nonZeroAddress, nonZeroAddress, nonZeroAddress, zeroHash) expect(await program.getAddress()).to.not.equal(zeroAddress) }) @@ -47,12 +60,14 @@ describe('CRISP Contracts', function () { const { ethers } = await network.connect() const mockEnclave = (await ethers.deployContract('MockEnclave')) as MockEnclave - const program = await ethers.deployContract('CRISPProgram', [ - await mockEnclave.getAddress(), - nonZeroAddress, - nonZeroAddress, - zeroHash, - ]) + const programFactory = await ethers.getContractFactory( + CRISPProgramFactory.abi, + CRISPProgramFactory.linkBytecode({ + 'npm/poseidon-solidity@0.0.5/PoseidonT3.sol:PoseidonT3': poseidonT3Address, + }), + ) + + const program = await programFactory.deploy(await mockEnclave.getAddress(), nonZeroAddress, nonZeroAddress, zeroHash) // 2 * 2 + 1 * 1 = 5 Y // 2 * 1 + 0 * 1 = 2 N diff --git a/examples/CRISP/server/src/server/indexer.rs b/examples/CRISP/server/src/server/indexer.rs index 2e029b5f55..93f0828e93 100644 --- a/examples/CRISP/server/src/server/indexer.rs +++ b/examples/CRISP/server/src/server/indexer.rs @@ -27,9 +27,9 @@ use e3_sdk::{ }, listener::EventListener, }, - indexer::{DataStore, EnclaveIndexer}, + indexer::{DataStore, EnclaveIndexer, SharedStore}, }; -use evm_helpers::CRISPContractFactory; +use evm_helpers::{CRISPContractFactory, InputPublished}; use eyre::Context; use log::info; use num_bigint::BigUint; @@ -144,6 +144,9 @@ pub async fn register_e3_requested( let balance_threshold_bytes = balance_threshold.to_bytes_be(); let balance_threshold_u256 = U256::from_be_slice(&balance_threshold_bytes); + // Convert e3Id from u64 to U256 + let e3_id_u256 = U256::from(e3_id); + info!( "[e3_id={}] Calling setRoundData with root: {}, token: {}, threshold: {}", e3_id, merkle_root_u256, token_address, balance_threshold_u256 @@ -160,7 +163,7 @@ pub async fn register_e3_requested( })?; let receipt = contract - .set_round_data(merkle_root_u256, token_address, balance_threshold_u256) + .set_round_data(e3_id_u256, merkle_root_u256, token_address, balance_threshold_u256) .await .with_context(|| { format!("[e3_id={}] Failed to call setRoundData", e3_id) @@ -221,10 +224,12 @@ pub async fn register_e3_activated( info!("[e3_id={}] Starting computation for E3", e3_id); repo.update_status("Computing").await?; + let votes = repo.get_ciphertext_inputs().await?; + let (id, status) = run_compute( e3_id, e3.e3_params, - e3.ciphertext_inputs, + votes, format!("{}/state/add-result", CONFIG.enclave_server_url), ) .await @@ -394,11 +399,38 @@ pub async fn get_current_timestamp_rpc() -> eyre::Result { Ok(block.header.timestamp) } +pub async fn register_input_published( + mut listener: EventListener, + store: SharedStore +) -> Result { + listener + .add_event_handler(move |event: InputPublished| { + + let e3_id = event.e3Id.to::(); + let mut repo = CrispE3Repository::new(store.clone(), e3_id); + async move { + println!( + "InputPublished: e3_id={}, index={}, data=0x{}...", + event.e3Id, + event.index, + hex::encode(&event.vote[..8.min(event.vote.len())]) + ); + + repo.insert_ciphertext_input(event.vote.to_vec(), event.index.to::()) + .await?; + Ok(()) + } + }) + .await; + Ok(listener) +} + pub async fn start_indexer( ws_url: &str, contract_address: &str, registry_address: &str, - store: impl DataStore, + crisp_address: &str, + store: SharedStore, private_key: &str, ) -> Result<()> { let readonly_contract = EnclaveContractFactory::create_read(ws_url, contract_address).await?; @@ -411,7 +443,7 @@ pub async fn start_indexer( // CRISP indexer let crisp_indexer = - EnclaveIndexer::new(enclave_contract_listener, readonly_contract, store).await?; + EnclaveIndexer::new(enclave_contract_listener, readonly_contract, store.clone()).await?; let crisp_indexer = register_e3_requested(crisp_indexer).await?; let crisp_indexer = register_e3_activated(crisp_indexer).await?; let crisp_indexer = register_ciphertext_output_published(crisp_indexer).await?; @@ -422,8 +454,13 @@ pub async fn start_indexer( let registry_contract_listener = EventListener::create_contract_listener(&ws_url, registry_address).await?; let registry_listener = - register_committee_published(registry_contract_listener, readwrite_contract).await?; + register_committee_published(registry_contract_listener, readwrite_contract.clone()).await?; registry_listener.start(); + // CRISP Listener + let crisp_contract_listener = EventListener::create_contract_listener(ws_url, crisp_address).await?; + let crisp_listener = register_input_published(crisp_contract_listener, store).await?; + crisp_listener.start(); + Ok(()) } diff --git a/examples/CRISP/server/src/server/mod.rs b/examples/CRISP/server/src/server/mod.rs index 7c8be43523..992d577bd3 100644 --- a/examples/CRISP/server/src/server/mod.rs +++ b/examples/CRISP/server/src/server/mod.rs @@ -43,6 +43,7 @@ pub async fn start() -> Result<(), Box> { &CONFIG.ws_rpc_url, &CONFIG.enclave_address, &CONFIG.ciphernode_registry_address, + &CONFIG.e3_program_address, db.clone(), &CONFIG.private_key, ) diff --git a/examples/CRISP/server/src/server/models.rs b/examples/CRISP/server/src/server/models.rs index cb2f3144b7..441a946334 100644 --- a/examples/CRISP/server/src/server/models.rs +++ b/examples/CRISP/server/src/server/models.rs @@ -170,9 +170,6 @@ pub struct E3 { pub ciphertext_output: Vec, pub plaintext_output: Vec, - // Ciphertext Inputs - pub ciphertext_inputs: Vec<(Vec, u64)>, - // Emojis pub emojis: [String; 2], @@ -191,6 +188,7 @@ pub struct E3Crisp { pub token_holder_hashes: Vec, pub token_address: String, pub balance_threshold: String, + pub ciphertext_inputs: Vec<(Vec, u64)>, } impl From for WebResultRequest { diff --git a/examples/CRISP/server/src/server/repo.rs b/examples/CRISP/server/src/server/repo.rs index 3336e44948..1c417092d3 100644 --- a/examples/CRISP/server/src/server/repo.rs +++ b/examples/CRISP/server/src/server/repo.rs @@ -91,6 +91,21 @@ impl CrispE3Repository { self.set_crisp(e3_crisp).await } + pub async fn insert_ciphertext_input(&mut self, vote: Vec, index: u64) -> Result<()> { + let key = self.crisp_key(); + + self.store.modify(&key, |e3_obj: Option| { + e3_obj.map(|mut e| { + e.ciphertext_inputs.push((vote.clone(), index)); + e + }) + }) + .await + .map_err(|_| eyre::eyre!("Could not append ciphertext_input for '{key}'"))?; + + Ok(()) + } + pub async fn initialize_round( &mut self, token_address: String, @@ -106,6 +121,7 @@ impl CrispE3Repository { token_holder_hashes: vec![], token_address, balance_threshold, + ciphertext_inputs: vec![], }) .await } @@ -120,8 +136,8 @@ impl CrispE3Repository { } pub async fn get_vote_count(&self) -> Result { - let e3 = self.get_e3().await?; - Ok(u64::try_from(e3.ciphertext_inputs.len())?) + let e3_crisp = self.get_crisp().await?; + Ok(u64::try_from(e3_crisp.ciphertext_inputs.len())?) } pub async fn update_status(&mut self, value: &str) -> Result<()> { @@ -189,7 +205,7 @@ impl CrispE3Repository { status: e3_crisp.status, chain_id: e3.chain_id, duration: e3.duration, - vote_count: u64::try_from(e3.ciphertext_inputs.len())?, + vote_count: u64::try_from(e3_crisp.ciphertext_inputs.len())?, start_time: e3_crisp.start_time, start_block: e3.request_block, enclave_address: e3.enclave_address, @@ -199,6 +215,11 @@ impl CrispE3Repository { }) } + pub async fn get_ciphertext_inputs(&self) -> Result, u64)>> { + let e3_crisp = self.get_crisp().await?; + Ok(e3_crisp.ciphertext_inputs) + } + pub async fn set_ciphertext_output(&mut self, data: Vec) -> Result<()> { self.get_e3_repo().set_ciphertext_output(data).await?; Ok(()) diff --git a/package.json b/package.json index fed02430e4..32335a4052 100644 --- a/package.json +++ b/package.json @@ -55,8 +55,9 @@ "npm:release": "pnpm build && pnpm config:release && pnpm evm:release && pnpm wasm:release && pnpm sdk:release && pnpm react:release", "support:build": "cd crates/support && ./scripts/build.sh", "build": "pnpm compile", - "wasm:build": "cd crates/wasm && pnpm build", - "build:ts": "pnpm evm:build && pnpm sdk:build && pnpm react:build" + "wasm:build": "cd ./crates/wasm && pnpm build", + "build:ts": "pnpm evm:build && pnpm sdk:build && pnpm react:build", + "template:build": "cd templates/default && pnpm compile" }, "packageManager": "pnpm@10.7.1+sha512.2d92c86b7928dc8284f53494fb4201f983da65f0fb4f0d40baafa5cf628fa31dae3e5968f12466f17df7e97310e30f343a648baea1b9b350685dafafffdf5808", "devDependencies": { diff --git a/packages/enclave-contracts/artifacts/contracts/interfaces/IBondingRegistry.sol/IBondingRegistry.json b/packages/enclave-contracts/artifacts/contracts/interfaces/IBondingRegistry.sol/IBondingRegistry.json index fad57ed6bf..13b2190bfe 100644 --- a/packages/enclave-contracts/artifacts/contracts/interfaces/IBondingRegistry.sol/IBondingRegistry.json +++ b/packages/enclave-contracts/artifacts/contracts/interfaces/IBondingRegistry.sol/IBondingRegistry.json @@ -851,5 +851,5 @@ "deployedLinkReferences": {}, "immutableReferences": {}, "inputSourceName": "project/contracts/interfaces/IBondingRegistry.sol", - "buildInfoId": "solc-0_8_28-47e0db0804e3f0de0bf2198d3ad75eb1054de690" + "buildInfoId": "solc-0_8_28-16cb5d9b415ecf0909fb7f9bf39bab654b7f0bfc" } \ No newline at end of file diff --git a/packages/enclave-contracts/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/ICiphernodeRegistry.json b/packages/enclave-contracts/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/ICiphernodeRegistry.json index 80bb8bea50..5b8fa32f11 100644 --- a/packages/enclave-contracts/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/ICiphernodeRegistry.json +++ b/packages/enclave-contracts/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/ICiphernodeRegistry.json @@ -535,5 +535,5 @@ "deployedLinkReferences": {}, "immutableReferences": {}, "inputSourceName": "project/contracts/interfaces/ICiphernodeRegistry.sol", - "buildInfoId": "solc-0_8_28-47e0db0804e3f0de0bf2198d3ad75eb1054de690" + "buildInfoId": "solc-0_8_28-16cb5d9b415ecf0909fb7f9bf39bab654b7f0bfc" } \ No newline at end of file diff --git a/packages/enclave-contracts/artifacts/contracts/interfaces/IEnclave.sol/IEnclave.json b/packages/enclave-contracts/artifacts/contracts/interfaces/IEnclave.sol/IEnclave.json index b6491bcf45..ca902b2e54 100644 --- a/packages/enclave-contracts/artifacts/contracts/interfaces/IEnclave.sol/IEnclave.json +++ b/packages/enclave-contracts/artifacts/contracts/interfaces/IEnclave.sol/IEnclave.json @@ -583,44 +583,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "e3Id", - "type": "uint256" - } - ], - "name": "getInputRoot", - "outputs": [ - { - "internalType": "uint256", - "name": "root", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "e3Id", - "type": "uint256" - } - ], - "name": "getInputsLength", - "outputs": [ - { - "internalType": "uint256", - "name": "length", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -962,5 +924,5 @@ "deployedLinkReferences": {}, "immutableReferences": {}, "inputSourceName": "project/contracts/interfaces/IEnclave.sol", - "buildInfoId": "solc-0_8_28-e5cbacc29cffac21a8890a9017b7aa0e2311220f" + "buildInfoId": "solc-0_8_28-16cb5d9b415ecf0909fb7f9bf39bab654b7f0bfc" } \ No newline at end of file diff --git a/packages/enclave-contracts/contracts/Enclave.sol b/packages/enclave-contracts/contracts/Enclave.sol index d69ed0c614..12c7176b12 100644 --- a/packages/enclave-contracts/contracts/Enclave.sol +++ b/packages/enclave-contracts/contracts/Enclave.sol @@ -16,11 +16,6 @@ import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; -import { - InternalLeanIMT, - LeanIMTData, - PoseidonT3 -} from "@zk-kit/lean-imt.sol/InternalLeanIMT.sol"; /** * @title Enclave @@ -28,7 +23,6 @@ import { * @dev Coordinates E3 lifecycle including request, activation, input publishing, and output verification */ contract Enclave is IEnclave, OwnableUpgradeable { - using InternalLeanIMT for LeanIMTData; using SafeERC20 for IERC20; //////////////////////////////////////////////////////////// @@ -65,14 +59,6 @@ contract Enclave is IEnclave, OwnableUpgradeable { /// @dev Contains the full state and configuration of each E3. mapping(uint256 e3Id => E3 e3) public e3s; - /// @notice Mapping of input merkle trees for each E3. - /// @dev Uses Lean IMT for efficient incremental merkle tree operations. - mapping(uint256 e3Id => LeanIMTData imt) public inputs; - - /// @notice Counter tracking the number of inputs published for each E3. - /// @dev Used as the index when inserting new inputs into the merkle tree. - mapping(uint256 e3Id => uint256 inputCount) public inputCounts; - /// @notice Mapping of enabled encryption schemes to their decryption verifiers. /// @dev Each encryption scheme ID maps to a contract that can verify decrypted outputs. mapping(bytes32 encryptionSchemeId => IDecryptionVerifier decryptionVerifier) @@ -349,18 +335,9 @@ contract Enclave is IEnclave, OwnableUpgradeable { InputDeadlinePassed(e3Id, e3.expiration) ); - uint256 inputIndex = inputCounts[e3Id]; - inputCounts[e3Id] = inputIndex + 1; - - bytes memory input = e3.e3Program.validateInput(msg.sender, data); + e3.e3Program.validateInput(e3Id, msg.sender, data); - uint256 inputHash = PoseidonT3.hash( - [uint256(keccak256(input)), inputIndex] - ); - inputs[e3Id]._insert(inputHash); success = true; - - emit InputPublished(e3Id, input, inputHash, inputIndex); } /// @inheritdoc IEnclave @@ -600,15 +577,6 @@ contract Enclave is IEnclave, OwnableUpgradeable { require(e3.e3Program != IE3Program(address(0)), E3DoesNotExist(e3Id)); } - /// @inheritdoc IEnclave - function getInputRoot(uint256 e3Id) public view returns (uint256) { - require( - e3s[e3Id].e3Program != IE3Program(address(0)), - E3DoesNotExist(e3Id) - ); - return InternalLeanIMT._root(inputs[e3Id]); - } - /// @inheritdoc IEnclave function getE3Quote( E3RequestParams calldata @@ -623,13 +591,4 @@ contract Enclave is IEnclave, OwnableUpgradeable { ) public view returns (IDecryptionVerifier) { return decryptionVerifiers[encryptionSchemeId]; } - - /// @inheritdoc IEnclave - function getInputsLength(uint256 e3Id) public view returns (uint256) { - require( - e3s[e3Id].e3Program != IE3Program(address(0)), - E3DoesNotExist(e3Id) - ); - return inputCounts[e3Id]; - } } diff --git a/packages/enclave-contracts/contracts/interfaces/IE3Program.sol b/packages/enclave-contracts/contracts/interfaces/IE3Program.sol index 9bfd17396a..4ea7a82943 100644 --- a/packages/enclave-contracts/contracts/interfaces/IE3Program.sol +++ b/packages/enclave-contracts/contracts/interfaces/IE3Program.sol @@ -39,10 +39,12 @@ interface IE3Program { /// @notice Validate and process input data for a computation /// @dev This function is called by the Enclave contract when input is published + /// @param e3Id ID of the E3 computation /// @param sender The account that is submitting the input /// @param data The input data to be validated /// @return input The decoded, policy-approved application payload function validateInput( + uint256 e3Id, address sender, bytes memory data ) external returns (bytes memory input); diff --git a/packages/enclave-contracts/contracts/interfaces/IEnclave.sol b/packages/enclave-contracts/contracts/interfaces/IEnclave.sol index f8b926a4d9..bebb1688ad 100644 --- a/packages/enclave-contracts/contracts/interfaces/IEnclave.sol +++ b/packages/enclave-contracts/contracts/interfaces/IEnclave.sol @@ -280,20 +280,6 @@ interface IEnclave { /// @return e3 The struct representing the requested E3. function getE3(uint256 e3Id) external view returns (E3 memory e3); - /// @notice This function returns root of the input merkle tree for a given E3. - /// @dev This function MUST revert if the E3 does not exist. - /// @param e3Id ID of the E3. - /// @return root The root of the input merkle tree. - function getInputRoot(uint256 e3Id) external view returns (uint256 root); - - /// @notice This function returns the number of inputs published for a given E3. - /// @dev This function MUST revert if the E3 does not exist. - /// @param e3Id ID of the E3. - /// @return length The number of inputs published. - function getInputsLength( - uint256 e3Id - ) external view returns (uint256 length); - /// @notice This function returns the fee of an E3 /// @dev This function MUST revert if the E3 parameters are invalid. /// @param e3Params the struct representing the E3 request parameters diff --git a/packages/enclave-contracts/contracts/test/MockE3Program.sol b/packages/enclave-contracts/contracts/test/MockE3Program.sol index 533e7a4ae2..27902dccfc 100644 --- a/packages/enclave-contracts/contracts/test/MockE3Program.sol +++ b/packages/enclave-contracts/contracts/test/MockE3Program.sol @@ -34,6 +34,7 @@ contract MockE3Program is IE3Program { } function validateInput( + uint256, address sender, bytes memory data ) external pure returns (bytes memory input) { diff --git a/packages/enclave-contracts/ignition/modules/enclave.ts b/packages/enclave-contracts/ignition/modules/enclave.ts index e9dc07c846..330c790dfc 100644 --- a/packages/enclave-contracts/ignition/modules/enclave.ts +++ b/packages/enclave-contracts/ignition/modules/enclave.ts @@ -13,13 +13,7 @@ export default buildModule("Enclave", (m) => { const bondingRegistry = m.getParameter("bondingRegistry"); const feeToken = m.getParameter("feeToken"); - const poseidonT3 = m.library("PoseidonT3"); - - const enclaveImpl = m.contract("Enclave", [], { - libraries: { - PoseidonT3: poseidonT3, - }, - }); + const enclaveImpl = m.contract("Enclave", []); const initData = m.encodeFunctionCall(enclaveImpl, "initialize", [ owner, diff --git a/packages/enclave-contracts/package.json b/packages/enclave-contracts/package.json index 87371127a5..58ab0461cb 100644 --- a/packages/enclave-contracts/package.json +++ b/packages/enclave-contracts/package.json @@ -91,7 +91,8 @@ "@types/js-yaml": "^4.0.9", "@types/mocha": "^10.0.10", "@types/node": "^22.18.0", - "@zk-kit/lean-imt": "2.2.4", + "@typescript-eslint/eslint-plugin": "^7.11.0", + "@typescript-eslint/parser": "^7.11.0", "chai": "^5.3.3", "cross-env": "^7.0.3", "dotenv": "^16.4.5", @@ -169,6 +170,7 @@ "dependencies": { "@openzeppelin/contracts-upgradeable": "^5.0.2", "@zk-kit/lean-imt.sol": "2.0.1", + "@zk-kit/lean-imt": "2.2.4", "js-yaml": "^4.1.1", "poseidon-solidity": "0.0.5" }, diff --git a/packages/enclave-contracts/scripts/deployAndSave/enclave.ts b/packages/enclave-contracts/scripts/deployAndSave/enclave.ts index 4b7826665a..139c79e303 100644 --- a/packages/enclave-contracts/scripts/deployAndSave/enclave.ts +++ b/packages/enclave-contracts/scripts/deployAndSave/enclave.ts @@ -23,7 +23,6 @@ export interface EnclaveArgs { registry?: string; bondingRegistry?: string; feeToken?: string; - poseidonT3Address: string; hre: HardhatRuntimeEnvironment; } @@ -39,7 +38,6 @@ export const deployAndSaveEnclave = async ({ registry, bondingRegistry, feeToken, - poseidonT3Address, hre, }: EnclaveArgs): Promise<{ enclave: Enclave }> => { const { ethers } = await hre.network.connect(); @@ -76,14 +74,7 @@ export const deployAndSaveEnclave = async ({ return { enclave: enclaveContract }; } - const enclaveFactory = await ethers.getContractFactory( - EnclaveFactory.abi, - EnclaveFactory.linkBytecode({ - "npm/poseidon-solidity@0.0.5/PoseidonT3.sol:PoseidonT3": - poseidonT3Address, - }), - signer, - ); + const enclaveFactory = await ethers.getContractFactory("Enclave", signer); const enclave = await enclaveFactory.deploy(); await enclave.waitForDeployment(); @@ -143,11 +134,9 @@ export const deployAndSaveEnclave = async ({ * @returns The upgraded Enclave contract (same proxy address) */ export const upgradeAndSaveEnclave = async ({ - poseidonT3Address, ownerAddress, hre, }: { - poseidonT3Address: string; ownerAddress: string; hre: HardhatRuntimeEnvironment; }): Promise<{ enclave: Enclave; implementationAddress: string }> => { @@ -168,14 +157,7 @@ export const upgradeAndSaveEnclave = async ({ ); console.log("Auto-deployed ProxyAdmin address:", autoProxyAdminAddress); - const enclaveFactory = await ethers.getContractFactory( - EnclaveFactory.abi, - EnclaveFactory.linkBytecode({ - "npm/poseidon-solidity@0.0.5/PoseidonT3.sol:PoseidonT3": - poseidonT3Address, - }), - signer, - ); + const enclaveFactory = await ethers.getContractFactory("Enclave", signer); const newImplementation = await enclaveFactory.deploy(); await newImplementation.waitForDeployment(); diff --git a/packages/enclave-contracts/scripts/deployEnclave.ts b/packages/enclave-contracts/scripts/deployEnclave.ts index e6779b5f83..d1787b88f9 100644 --- a/packages/enclave-contracts/scripts/deployEnclave.ts +++ b/packages/enclave-contracts/scripts/deployEnclave.ts @@ -124,7 +124,6 @@ export const deployEnclave = async (withMocks?: boolean) => { registry: ciphernodeRegistryAddress, bondingRegistry: bondingRegistryAddress, feeToken: feeTokenAddress, - poseidonT3Address: poseidonT3, hre, }); const enclaveAddress = await enclave.getAddress(); diff --git a/packages/enclave-contracts/scripts/upgrade/enclave.ts b/packages/enclave-contracts/scripts/upgrade/enclave.ts index fd291c598c..0e5fa3e2a0 100644 --- a/packages/enclave-contracts/scripts/upgrade/enclave.ts +++ b/packages/enclave-contracts/scripts/upgrade/enclave.ts @@ -6,7 +6,6 @@ import hre from "hardhat"; import { upgradeAndSaveEnclave } from "../deployAndSave/enclave"; -import { deployAndSavePoseidonT3 } from "../deployAndSave/poseidonT3"; import { readDeploymentArgs } from "../utils"; /** @@ -20,7 +19,6 @@ export const upgradeEnclave = async () => { const chain = (await signer.provider?.getNetwork())?.name ?? "localhost"; console.log("Signer:", signerAddress); - const poseidonT3 = await deployAndSavePoseidonT3({ hre }); const preDeployedArgs = readDeploymentArgs("Enclave", chain); if (!preDeployedArgs?.address) { throw new Error("Enclave proxy not found. Deploy first before upgrading."); @@ -46,7 +44,6 @@ export const upgradeEnclave = async () => { console.log("Proxy contract exists on-chain"); const { enclave, implementationAddress } = await upgradeAndSaveEnclave({ - poseidonT3Address: poseidonT3, ownerAddress: signerAddress, hre, }); diff --git a/packages/enclave-contracts/tasks/enclave.ts b/packages/enclave-contracts/tasks/enclave.ts index cf37cc2e9a..d301db9971 100644 --- a/packages/enclave-contracts/tasks/enclave.ts +++ b/packages/enclave-contracts/tasks/enclave.ts @@ -99,14 +99,8 @@ export const requestCommittee = task( "../scripts/deployAndSave/mockStableToken" ); - const { deployAndSavePoseidonT3 } = await import( - "../scripts/deployAndSave/poseidonT3" - ); - const poseidonT3 = await deployAndSavePoseidonT3({ hre }); - const { enclave } = await deployAndSaveEnclave({ hre, - poseidonT3Address: poseidonT3, }); const { mockStableToken: mockUSDC } = await deployAndSaveMockStableToken({ @@ -224,14 +218,9 @@ export const enableE3 = task("enclave:enableE3", "Enable an E3 program") const { deployAndSaveEnclave } = await import( "../scripts/deployAndSave/enclave" ); - const { deployAndSavePoseidonT3 } = await import( - "../scripts/deployAndSave/poseidonT3" - ); - const poseidonT3 = await deployAndSavePoseidonT3({ hre }); const { enclave } = await deployAndSaveEnclave({ hre, - poseidonT3Address: poseidonT3, }); const tx = await enclave.enableE3Program(e3Address); @@ -337,14 +326,8 @@ export const activateE3 = task("e3:activate", "Activate an E3 program") "../scripts/deployAndSave/enclave" ); - const { deployAndSavePoseidonT3 } = await import( - "../scripts/deployAndSave/poseidonT3" - ); - const poseidonT3 = await deployAndSavePoseidonT3({ hre }); - const { enclave } = await deployAndSaveEnclave({ hre, - poseidonT3Address: poseidonT3, }); const tx = await enclave.activate(e3Id, publicKey); @@ -385,14 +368,8 @@ export const publishInput = task( "../scripts/deployAndSave/enclave" ); - const { deployAndSavePoseidonT3 } = await import( - "../scripts/deployAndSave/poseidonT3" - ); - const poseidonT3 = await deployAndSavePoseidonT3({ hre }); - const { enclave } = await deployAndSaveEnclave({ hre, - poseidonT3Address: poseidonT3, }); let dataToSend = data; @@ -451,14 +428,9 @@ export const publishCiphertext = task( const { deployAndSaveEnclave } = await import( "../scripts/deployAndSave/enclave" ); - const { deployAndSavePoseidonT3 } = await import( - "../scripts/deployAndSave/poseidonT3" - ); - const poseidonT3 = await deployAndSavePoseidonT3({ hre }); const { enclave } = await deployAndSaveEnclave({ hre, - poseidonT3Address: poseidonT3, }); let dataToSend = data; @@ -529,14 +501,8 @@ export const publishPlaintext = task( "../scripts/deployAndSave/enclave" ); - const { deployAndSavePoseidonT3 } = await import( - "../scripts/deployAndSave/poseidonT3" - ); - const poseidonT3 = await deployAndSavePoseidonT3({ hre }); - const { enclave } = await deployAndSaveEnclave({ hre, - poseidonT3Address: poseidonT3, }); let dataToSend = data; diff --git a/packages/enclave-contracts/test/Enclave.spec.ts b/packages/enclave-contracts/test/Enclave.spec.ts index 6648593512..517d668693 100644 --- a/packages/enclave-contracts/test/Enclave.spec.ts +++ b/packages/enclave-contracts/test/Enclave.spec.ts @@ -1432,124 +1432,6 @@ describe("Enclave", function () { true, ); }); - - it("adds inputHash to merkle tree", async function () { - const { - enclave, - request, - usdcToken, - ciphernodeRegistryContract, - operator1, - operator2, - } = await loadFixture(setup); - const inputData = abiCoder.encode(["bytes"], ["0xaabbccddeeff"]); - - const tree = new LeanIMT(hash); - - await makeRequest(enclave, usdcToken, { - threshold: request.threshold, - startWindow: request.startWindow, - duration: request.duration, - e3Program: request.e3Program, - e3ProgramParams: request.e3ProgramParams, - computeProviderParams: request.computeProviderParams, - customParams: request.customParams, - }); - - const e3Id = 0; - - await setupAndPublishCommittee( - ciphernodeRegistryContract, - e3Id, - [await operator1.getAddress(), await operator2.getAddress()], - data, - operator1, - operator2, - ); - await enclave.activate(e3Id, data); - - tree.insert(hash(BigInt(ethers.keccak256(inputData)), BigInt(0))); - - await enclave.publishInput(e3Id, inputData); - expect(await enclave.getInputRoot(e3Id)).to.equal(tree.root); - - const secondInputData = abiCoder.encode(["bytes"], ["0x112233445566"]); - tree.insert(hash(BigInt(ethers.keccak256(secondInputData)), BigInt(1))); - await enclave.publishInput(e3Id, secondInputData); - expect(await enclave.getInputRoot(e3Id)).to.equal(tree.root); - }); - it("emits InputPublished event", async function () { - const { - enclave, - request, - usdcToken, - ciphernodeRegistryContract, - operator1, - operator2, - } = await loadFixture(setup); - - await makeRequest(enclave, usdcToken, { - threshold: request.threshold, - startWindow: request.startWindow, - duration: request.duration, - e3Program: request.e3Program, - e3ProgramParams: request.e3ProgramParams, - computeProviderParams: request.computeProviderParams, - customParams: request.customParams, - }); - - const e3Id = 0; - - const inputData = abiCoder.encode(["bytes"], ["0xaabbccddeeff"]); - await setupAndPublishCommittee( - ciphernodeRegistryContract, - e3Id, - [await operator1.getAddress(), await operator2.getAddress()], - data, - operator1, - operator2, - ); - await enclave.activate(e3Id, data); - const expectedHash = hash(BigInt(ethers.keccak256(inputData)), BigInt(0)); - - await expect(enclave.publishInput(e3Id, inputData)) - .to.emit(enclave, "InputPublished") - .withArgs(e3Id, inputData, expectedHash, 0); - }); - it("increases the input count", async function () { - const { - enclave, - request, - usdcToken, - ciphernodeRegistryContract, - operator1, - operator2, - } = await loadFixture(setup); - const inputData = "0x12345678"; - - await makeRequest(enclave, usdcToken, { - threshold: request.threshold, - startWindow: request.startWindow, - duration: request.duration, - e3Program: request.e3Program, - e3ProgramParams: request.e3ProgramParams, - computeProviderParams: request.computeProviderParams, - customParams: request.customParams, - }); - - await setupAndPublishCommittee( - ciphernodeRegistryContract, - 0, - [await operator1.getAddress(), await operator2.getAddress()], - data, - operator1, - operator2, - ); - await enclave.activate(0, data); - await enclave.publishInput(0, inputData); - - expect(await enclave.getInputsLength(0)).to.equal(1n); - }); }); describe("publishCiphertextOutput()", function () { diff --git a/packages/enclave-react/src/index.ts b/packages/enclave-react/src/index.ts index 98c4ec9e9c..f6b4969d3a 100644 --- a/packages/enclave-react/src/index.ts +++ b/packages/enclave-react/src/index.ts @@ -20,7 +20,6 @@ export type { EnclaveEvent, E3RequestedData, E3ActivatedData, - InputPublishedData, CiphertextOutputPublishedData, PlaintextOutputPublishedData, CiphernodeAddedData, diff --git a/packages/enclave-sdk/src/enclave-sdk.ts b/packages/enclave-sdk/src/enclave-sdk.ts index 1b1089670c..b3c2dbc681 100644 --- a/packages/enclave-sdk/src/enclave-sdk.ts +++ b/packages/enclave-sdk/src/enclave-sdk.ts @@ -4,7 +4,7 @@ // without even the implied warranty of MERCHANTABILITY // or FITNESS FOR A PARTICULAR PURPOSE. -import { type Abi, type Hash, type Log, WalletClient, createPublicClient, createWalletClient, http, webSocket } from 'viem' +import { type Abi, type Hash, type Log, PublicClient, WalletClient, createPublicClient, createWalletClient, http, webSocket } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { hardhat, mainnet, monadTestnet, sepolia } from 'viem/chains' import initializeWasm from '@enclave-e3/wasm/init' @@ -48,6 +48,7 @@ export class EnclaveSDK { private initialized = false private protocol: FheProtocol private protocolParams?: ProtocolParams + private publicClient: PublicClient // TODO: use zod for config validation constructor(private config: SDKConfig) { @@ -79,6 +80,8 @@ export class EnclaveSDK { if (config.protocolParams) { this.protocolParams = config.protocolParams } + + this.publicClient = config.publicClient } /** @@ -96,6 +99,14 @@ export class EnclaveSDK { } } + /** + * Get the public client used by the SDK + * @returns The public client + */ + public getPublicClient = (): PublicClient => { + return this.publicClient + } + public async getBfvParamsSet(name: ProtocolParamsName): Promise { await initializeWasm() let params = get_bfv_params(name as string) diff --git a/packages/enclave-sdk/src/index.ts b/packages/enclave-sdk/src/index.ts index 28913a7547..5f353d3253 100644 --- a/packages/enclave-sdk/src/index.ts +++ b/packages/enclave-sdk/src/index.ts @@ -25,7 +25,6 @@ export type { // Event data types E3RequestedData, E3ActivatedData, - InputPublishedData, CiphertextOutputPublishedData, PlaintextOutputPublishedData, CiphernodeAddedData, diff --git a/packages/enclave-sdk/src/types.ts b/packages/enclave-sdk/src/types.ts index b424a1ed5b..a6979d21ee 100644 --- a/packages/enclave-sdk/src/types.ts +++ b/packages/enclave-sdk/src/types.ts @@ -78,7 +78,6 @@ export enum EnclaveEventType { // E3 Lifecycle Events E3_REQUESTED = 'E3Requested', E3_ACTIVATED = 'E3Activated', - INPUT_PUBLISHED = 'InputPublished', CIPHERTEXT_OUTPUT_PUBLISHED = 'CiphertextOutputPublished', PLAINTEXT_OUTPUT_PUBLISHED = 'PlaintextOutputPublished', @@ -147,13 +146,6 @@ export interface E3ActivatedData { committeePublicKey: string } -export interface InputPublishedData { - e3Id: bigint - data: string - inputHash: bigint - index: bigint -} - export interface CiphertextOutputPublishedData { e3Id: bigint ciphertextOutput: string @@ -200,7 +192,6 @@ export interface CommitteeFinalizedData { export interface EnclaveEventData { [EnclaveEventType.E3_REQUESTED]: E3RequestedData [EnclaveEventType.E3_ACTIVATED]: E3ActivatedData - [EnclaveEventType.INPUT_PUBLISHED]: InputPublishedData [EnclaveEventType.CIPHERTEXT_OUTPUT_PUBLISHED]: CiphertextOutputPublishedData [EnclaveEventType.PLAINTEXT_OUTPUT_PUBLISHED]: PlaintextOutputPublishedData [EnclaveEventType.E3_PROGRAM_ENABLED]: { e3Program: string } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c5607b8cf8..954e6334db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -248,9 +248,9 @@ importers: '@excubiae/contracts': specifier: ^0.4.0 version: 0.4.0 - '@zk-kit/lean-imt.sol': - specifier: 2.0.0 - version: 2.0.0 + '@zk-kit/lazy-imt.sol': + specifier: 2.0.0-beta.12 + version: 2.0.0-beta.12 poseidon-solidity: specifier: ^0.0.5 version: 0.0.5 @@ -436,6 +436,9 @@ importers: '@openzeppelin/contracts-upgradeable': specifier: ^5.0.2 version: 5.4.0(@openzeppelin/contracts@5.3.0) + '@zk-kit/lean-imt': + specifier: 2.2.4 + version: 2.2.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@zk-kit/lean-imt.sol': specifier: 2.0.1 version: 2.0.1 @@ -500,9 +503,12 @@ importers: '@types/node': specifier: 22.7.5 version: 22.7.5 - '@zk-kit/lean-imt': - specifier: 2.2.4 - version: 2.2.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@typescript-eslint/eslint-plugin': + specifier: ^7.11.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/parser': + specifier: ^7.11.0 + version: 7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3) chai: specifier: ^5.3.3 version: 5.3.3 @@ -658,6 +664,9 @@ importers: '@types/yargs': specifier: ^17.0.33 version: 17.0.34 + '@zk-kit/lazy-imt.sol': + specifier: 2.0.0-beta.12 + version: 2.0.0-beta.12 dotenv: specifier: ^16.4.5 version: 16.6.1 @@ -4048,6 +4057,17 @@ packages: '@types/yargs@17.0.34': resolution: {integrity: sha512-KExbHVa92aJpw9WDQvzBaGVE2/Pz+pLZQloT2hjL8IqsZnV62rlPOYvNnLmf/L2dyllfVUOVBj64M0z/46eR2A==} + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/eslint-plugin@8.47.0': resolution: {integrity: sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4056,6 +4076,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.3 + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/parser@8.47.0': resolution: {integrity: sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4069,6 +4099,10 @@ packages: peerDependencies: typescript: 5.8.3 + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/scope-manager@8.47.0': resolution: {integrity: sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4079,6 +4113,16 @@ packages: peerDependencies: typescript: 5.8.3 + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/type-utils@8.47.0': resolution: {integrity: sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4086,16 +4130,35 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.3 + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/types@8.47.0': resolution: {integrity: sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/typescript-estree@8.47.0': resolution: {integrity: sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: 5.8.3 + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + '@typescript-eslint/utils@8.47.0': resolution: {integrity: sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4103,6 +4166,10 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: 5.8.3 + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@8.47.0': resolution: {integrity: sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4278,6 +4345,9 @@ packages: '@walletconnect/window-metadata@1.0.1': resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + '@zk-kit/lazy-imt.sol@2.0.0-beta.12': + resolution: {integrity: sha512-9kiCM0hrO3EKl+Zkbl6l9616UwbF9snLgcMqDPhuLozZtwXnn6PE8vMIwgfuYGea4X5weH4O2VjnUFpIm/CIkg==} + '@zk-kit/lean-imt.sol@2.0.0': resolution: {integrity: sha512-e9pAm+IXveLPy7b1h05ipIo6U44vp8g/2E+Ocx3PIloMu7lgTXFkIeZj/qZ/iLgEMsF74T0dsg7aVIT0B0nsDA==} @@ -9329,6 +9399,12 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: 5.8.3 + ts-api-utils@2.1.0: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} @@ -14470,6 +14546,24 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 9.39.1(jiti@1.21.7) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.4.3(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/eslint-plugin@8.47.0(@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3))(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -14487,6 +14581,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.1(jiti@1.21.7) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.47.0 @@ -14508,6 +14615,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/scope-manager@8.47.0': dependencies: '@typescript-eslint/types': 8.47.0 @@ -14517,6 +14629,18 @@ snapshots: dependencies: typescript: 5.8.3 + '@typescript-eslint/type-utils@7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.1(jiti@1.21.7) + ts-api-utils: 1.4.3(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/type-utils@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@typescript-eslint/types': 8.47.0 @@ -14529,8 +14653,25 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/types@7.18.0': {} + '@typescript-eslint/types@8.47.0': {} + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.4.3(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.3 + ts-api-utils: 1.4.3(typescript@5.8.3) + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@8.47.0(typescript@5.8.3)': dependencies: '@typescript-eslint/project-service': 8.47.0(typescript@5.8.3) @@ -14547,6 +14688,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@7.18.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.3) + eslint: 9.39.1(jiti@1.21.7) + transitivePeerDependencies: + - supports-color + - typescript + '@typescript-eslint/utils@8.47.0(eslint@9.39.1(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@1.21.7)) @@ -14558,6 +14710,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@8.47.0': dependencies: '@typescript-eslint/types': 8.47.0 @@ -15322,6 +15479,10 @@ snapshots: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 + '@zk-kit/lazy-imt.sol@2.0.0-beta.12': + dependencies: + poseidon-solidity: 0.0.5 + '@zk-kit/lean-imt.sol@2.0.0': dependencies: poseidon-solidity: 0.0.5 @@ -21590,6 +21751,10 @@ snapshots: trough@2.2.0: {} + ts-api-utils@1.4.3(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + ts-api-utils@2.1.0(typescript@5.8.3): dependencies: typescript: 5.8.3 diff --git a/templates/default/Cargo.lock b/templates/default/Cargo.lock index 17af742aab..163c7df0ab 100644 --- a/templates/default/Cargo.lock +++ b/templates/default/Cargo.lock @@ -1126,6 +1126,7 @@ dependencies = [ "rayon", "serde", "sha3", + "zk-kit-imt", ] [[package]] @@ -4322,6 +4323,16 @@ dependencies = [ "syn 2.0.110", ] +[[package]] +name = "zk-kit-imt" +version = "0.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a40d2f9afd345a14a304ad2ced6dbff4c17a0e5c533a3bd5f64fd04dcb2531" +dependencies = [ + "hex", + "tiny-keccak", +] + [[package]] name = "zkfhe-greco" version = "0.1.0" diff --git a/templates/default/contracts/MyProgram.sol b/templates/default/contracts/MyProgram.sol index 9a80591156..3cb1d2d2a7 100755 --- a/templates/default/contracts/MyProgram.sol +++ b/templates/default/contracts/MyProgram.sol @@ -9,11 +9,15 @@ import {IRiscZeroVerifier} from "@risc0/ethereum/contracts/IRiscZeroVerifier.sol import {IE3Program} from "@enclave-e3/contracts/contracts/interfaces/IE3Program.sol"; import {IEnclave} from "@enclave-e3/contracts/contracts/interfaces/IEnclave.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {LazyIMTData, InternalLazyIMT, PoseidonT3} from "@zk-kit/lazy-imt.sol/InternalLazyIMT.sol"; contract MyProgram is IE3Program, Ownable { + using InternalLazyIMT for LazyIMTData; // Constants bytes32 public constant ENCRYPTION_SCHEME_ID = keccak256("fhe.rs:BFV"); + uint8 public constant TREE_DEPTH = 20; + // State variables IEnclave public enclave; IRiscZeroVerifier public verifier; @@ -22,6 +26,7 @@ contract MyProgram is IE3Program, Ownable { // Mappings mapping(address => bool) public authorizedContracts; mapping(uint256 e3Id => bytes32 paramsHash) public paramsHashes; + mapping(uint256 e3Id => LazyIMTData) public inputs; // Errors error CallerNotAuthorized(); @@ -31,6 +36,8 @@ contract MyProgram is IE3Program, Ownable { error AlreadyRegistered(); error EmptyInputData(); + event InputPublished(uint256 indexed e3Id, bytes data, uint256 index); + /// @notice Initialize the contract, binding it to a specified RISC Zero verifier. /// @param _enclave The Enclave contract address /// @param _verifier The RISC Zero verifier address @@ -64,6 +71,8 @@ contract MyProgram is IE3Program, Ownable { require(paramsHashes[e3Id] == bytes32(0), E3AlreadyInitialized()); paramsHashes[e3Id] = keccak256(e3ProgramParams); + inputs[e3Id]._init(TREE_DEPTH); + return ENCRYPTION_SCHEME_ID; } @@ -72,6 +81,7 @@ contract MyProgram is IE3Program, Ownable { /// @param data The input to be verified. /// @return input The input data. function validateInput( + uint256 e3Id, address sender, bytes memory data ) external returns (bytes memory input) { @@ -81,6 +91,11 @@ contract MyProgram is IE3Program, Ownable { // EXAMPLE: https://github.com/gnosisguild/enclave/blob/main/examples/CRISP/packages/crisp-contracts/contracts/CRISPProgram.sol input = data; + + uint256 index = inputs[e3Id].numberOfLeaves; + inputs[e3Id]._insert(PoseidonT3.hash([uint256(keccak256(data)), index])); + + emit InputPublished(e3Id, data, index); } /// @notice Verify the proof @@ -93,7 +108,7 @@ contract MyProgram is IE3Program, Ownable { bytes memory proof ) external view override returns (bool) { require(paramsHashes[e3Id] != bytes32(0), E3DoesNotExist()); - bytes32 inputRoot = bytes32(enclave.getInputRoot(e3Id)); + bytes32 inputRoot = bytes32(inputs[e3Id]._root()); bytes memory journal = new bytes(396); // (32 + 1) * 4 * 3 encodeLengthPrefixAndHash(journal, 0, ciphertextOutputHash); diff --git a/templates/default/deploy/default.ts b/templates/default/deploy/default.ts index ec063d8053..ff98cc8b8a 100644 --- a/templates/default/deploy/default.ts +++ b/templates/default/deploy/default.ts @@ -6,6 +6,7 @@ import { readDeploymentArgs, storeDeploymentArgs } from '@enclave-e3/contracts/scripts' import { Enclave__factory as EnclaveFactory } from '@enclave-e3/contracts/types' +import { MyProgram__factory as MyProgramFactory } from '../types/factories/contracts' import hre from 'hardhat' export const deployTemplate = async () => { @@ -20,17 +21,14 @@ export const deployTemplate = async () => { } const enclave = EnclaveFactory.connect(enclaveAddress, owner) + const poseidonT3Address = readDeploymentArgs('PoseidonT3', chain)?.address + if (!poseidonT3Address) { + throw new Error('PoseidonT3 address not found, it must be deployed first') + } + const verifier = await ethers.deployContract('MockRISC0Verifier') await verifier.waitForDeployment() - storeDeploymentArgs( - { - address: await verifier.getAddress(), - }, - 'MockRISC0Verifier', - chain, - ) - const imageId = await ethers.deployContract('ImageID') await imageId.waitForDeployment() @@ -44,25 +42,26 @@ export const deployTemplate = async () => { const programId = await imageId.PROGRAM_ID() - const e3Program = await ethers.deployContract('MyProgram', [await enclave.getAddress(), await verifier.getAddress(), programId]) - await e3Program.waitForDeployment() - - storeDeploymentArgs( - { - address: await e3Program.getAddress(), - constructorArgs: { - enclave: await enclave.getAddress(), - verifier: await verifier.getAddress(), - programId, - }, - }, - 'MyProgram', - chain, + const e3ProgramFactory = await ethers.getContractFactory( + MyProgramFactory.abi, + MyProgramFactory.linkBytecode({ + 'npm/poseidon-solidity@0.0.5/PoseidonT3.sol:PoseidonT3': poseidonT3Address, + }), + owner, ) + const e3Program = await e3ProgramFactory.deploy(await enclave.getAddress(), await verifier.getAddress(), programId) + await e3Program.waitForDeployment() const tx = await enclave.enableE3Program(await e3Program.getAddress()) await tx.wait() console.log("E3 Program enabled for Enclave's template") + + console.log( + ` + Deployed MyProgram at address: ${await e3Program.getAddress()} + Deployed MockRISC0Verifier at address: ${await verifier.getAddress()} + `, + ) } diff --git a/templates/default/deployed_contracts.json b/templates/default/deployed_contracts.json index 385beea440..791ac0276c 100644 --- a/templates/default/deployed_contracts.json +++ b/templates/default/deployed_contracts.json @@ -67,9 +67,15 @@ "minTicketBalance": "1", "exitDelay": "604800" }, + "proxyRecords": { + "initData": "0x7333fa82000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000005fc8d32690cc91d4c39d9d3abcbd16989f875707000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc90000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000009896800000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000093a80", + "initialOwner": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "proxyAddress": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", + "proxyAdminAddress": "0x94099942864EA81cCF197E9D71ac53310b1468D8", + "implementationAddress": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" + }, "blockNumber": 8, - "address": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", - "implementationAddress": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" + "address": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" }, "CiphernodeRegistryOwnable": { "constructorArgs": { @@ -77,9 +83,15 @@ "enclaveAddress": "0x0000000000000000000000000000000000000001", "submissionWindow": "10" }, + "proxyRecords": { + "initData": "0x1794bb3c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000a", + "initialOwner": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "proxyAddress": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", + "proxyAdminAddress": "0x6F1216D1BFe15c98520CA1434FC1d9D57AC95321", + "implementationAddress": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" + }, "blockNumber": 11, - "address": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "implementationAddress": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" + "address": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788" }, "Enclave": { "constructorArgs": { @@ -92,9 +104,15 @@ "0x000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000fc00100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000003fffffff000001" ] }, + "proxyRecords": { + "initData": "0xefe0308b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000610178da211fef7d417bc0e6fed39f05609ad7880000000000000000000000002279b7a0a67db372996a5fab50d91eaa73d2ebe60000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000278d0000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000fc00100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000003fffffff000001", + "initialOwner": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "proxyAddress": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", + "proxyAdminAddress": "0x1F708C24a0D3A740cD47cC0444E9480899f3dA7D", + "implementationAddress": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" + }, "blockNumber": 13, - "address": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0", - "implementationAddress": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e" + "address": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0" }, "MockComputeProvider": { "blockNumber": 23, @@ -114,15 +132,6 @@ "ImageID": { "address": "0x09635F643e140090A9A8Dcd712eD6285858ceBef" }, - "MockRISC0Verifier": { - "address": "0x09635F643e140090A9A8Dcd712eD6285858ceBef" - }, - "ImageID": { - "address": "0xc5a5C42992dECbae36851359345FE25997F5C42d" - }, - "InputValidator": { - "address": "0x67d269191c92Caf3cD7723F116c85e6E9bf55933" - }, "MyProgram": { "address": "0xc5a5C42992dECbae36851359345FE25997F5C42d", "constructorArgs": { diff --git a/templates/default/package.json b/templates/default/package.json index e270682603..9f6d90b9bf 100644 --- a/templates/default/package.json +++ b/templates/default/package.json @@ -23,6 +23,7 @@ "@enclave-e3/contracts": "workspace:*", "@enclave-e3/sdk": "workspace:*", "@types/yargs": "^17.0.33", + "@zk-kit/lazy-imt.sol": "2.0.0-beta.12", "dotenv": "^16.4.5", "viem": "2.38.1", "yargs": "^18.0.0" diff --git a/templates/default/server/index.ts b/templates/default/server/index.ts index ce9eaca08c..4a7f20a662 100644 --- a/templates/default/server/index.ts +++ b/templates/default/server/index.ts @@ -5,10 +5,13 @@ // or FITNESS FOR A PARTICULAR PURPOSE. import express, { Request, Response } from 'express' -import { EnclaveSDK, EnclaveEventType, type E3ActivatedData, type InputPublishedData, FheProtocol } from '@enclave-e3/sdk' +import { EnclaveSDK, EnclaveEventType, type E3ActivatedData, FheProtocol } from '@enclave-e3/sdk' +import { Log, PublicClient } from 'viem' import { handleTestInteraction } from './testHandler' import { getCheckedEnvVars } from './utils' import { callFheRunner } from './runner' +import { ProgramEventType, RawInputPublishedEvent } from './types' +import { MyProgram__factory } from '../types/factories/contracts' interface E3Session { e3Id: bigint @@ -157,11 +160,10 @@ async function handleE3ActivatedEvent(event: any) { } } -async function handleInputPublishedEvent(event: any) { - const data = event.data as InputPublishedData - const e3Id = data.e3Id +async function handleInputPublishedEvent(event: RawInputPublishedEvent) { + const e3Id = event.args.e3Id - console.log(`📝 Input Published for E3 ${e3Id}: index ${data.index}`) + console.log(`📝 Input Published for E3 ${e3Id}: index ${event.args.index}`) const sessionKey = e3Id.toString() @@ -172,8 +174,8 @@ async function handleInputPublishedEvent(event: any) { if (session) { session.inputs.push({ - data: data.data, - index: data.index, + data: event.args.data, + index: event.args.index, }) console.log(`📊 E3 ${e3Id} now has ${session.inputs.length} inputs`) } else { @@ -181,13 +183,35 @@ async function handleInputPublishedEvent(event: any) { } } +async function listenToInputPublishedEvents(publicClient: PublicClient, address: `0x${string}`, fromBlock: bigint) { + publicClient.watchContractEvent({ + address, + abi: MyProgram__factory.abi, + eventName: ProgramEventType.INPUT_PUBLISHED, + fromBlock, + async onLogs(logs: Log[]) { + for (let i = 0; i < logs.length; i++) { + const log = logs[i] + if (!log) { + console.log('warning: Log was falsy when a log was expected!') + break + } + const eventData = log as unknown as RawInputPublishedEvent + await handleInputPublishedEvent(eventData) + } + }, + }) +} + async function setupEventListeners() { const sdk = await createPrivateSDK() + const { E3_PROGRAM_ADDRESS: PROGRAM_ADDRESS } = getCheckedEnvVars() + console.log('📡 Setting up event listeners...') sdk.onEnclaveEvent(EnclaveEventType.E3_ACTIVATED, handleE3ActivatedEvent) - sdk.onEnclaveEvent(EnclaveEventType.INPUT_PUBLISHED, handleInputPublishedEvent) + await listenToInputPublishedEvents(sdk.getPublicClient(), PROGRAM_ADDRESS as `0x${string}`, 0n) console.log('✅ Event listeners set up successfully') } diff --git a/templates/default/server/types.ts b/templates/default/server/types.ts new file mode 100644 index 0000000000..b40c156349 --- /dev/null +++ b/templates/default/server/types.ts @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: LGPL-3.0-only +// +// This file is provided WITHOUT ANY WARRANTY; +// without even the implied warranty of MERCHANTABILITY +// or FITNESS FOR A PARTICULAR PURPOSE. + +import { AllEventTypes } from '@enclave-e3/sdk' + +export enum ProgramEventType { + INPUT_PUBLISHED = 'InputPublished', +} + +export type ProgramEvents = ProgramEventType | AllEventTypes + +export interface InputPublishedEvent { + e3Id: bigint + data: string + index: bigint +} + +export interface RawInputPublishedEvent { + eventName: string + args: InputPublishedEvent +} diff --git a/templates/default/server/utils.ts b/templates/default/server/utils.ts index d58fc9381c..ebc3809cc8 100644 --- a/templates/default/server/utils.ts +++ b/templates/default/server/utils.ts @@ -17,6 +17,7 @@ export function getCheckedEnvVars() { RPC_URL: ensureEnv('RPC_URL'), ENCLAVE_CONTRACT: ensureEnv('ENCLAVE_ADDRESS'), CIPHERNODE_REGISTRY_CONTRACT: ensureEnv('REGISTRY_ADDRESS'), + E3_PROGRAM_ADDRESS: ensureEnv('E3_PROGRAM_ADDRESS'), FEE_TOKEN_CONTRACT: ensureEnv('FEE_TOKEN_ADDRESS'), PRIVATE_KEY: ensureEnv('PRIVATE_KEY'), CHAIN_ID: parseInt(ensureEnv('CHAIN_ID')), diff --git a/templates/default/tests/integration.spec.ts b/templates/default/tests/integration.spec.ts index e49979b428..c9c6abe08b 100644 --- a/templates/default/tests/integration.spec.ts +++ b/templates/default/tests/integration.spec.ts @@ -238,12 +238,8 @@ describe('Integration', () => { const enc1 = await sdk.encryptNumber(num1, publicKeyBytes) const enc2 = await sdk.encryptNumber(num2, publicKeyBytes) - await waitForEvent(EnclaveEventType.INPUT_PUBLISHED, async () => { - await sdk.publishInput(e3Id, `0x${Array.from(enc1, (b) => b.toString(16).padStart(2, '0')).join('')}` as `0x${string}`) - }) - await waitForEvent(EnclaveEventType.INPUT_PUBLISHED, async () => { - await sdk.publishInput(e3Id, `0x${Array.from(enc2, (b) => b.toString(16).padStart(2, '0')).join('')}` as `0x${string}`) - }) + await sdk.publishInput(e3Id, `0x${Array.from(enc1, (b) => b.toString(16).padStart(2, '0')).join('')}` as `0x${string}`) + await sdk.publishInput(e3Id, `0x${Array.from(enc2, (b) => b.toString(16).padStart(2, '0')).join('')}` as `0x${string}`) const plaintextEvent = await waitForEvent(EnclaveEventType.PLAINTEXT_OUTPUT_PUBLISHED)