From e9a9b5b4104dd8e0cbe52ccfcf4e086e60a41b65 Mon Sep 17 00:00:00 2001 From: Petar Ivanov <29689712+dartdart26@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:44:55 +0200 Subject: [PATCH] feat: introduce txn sender --- .github/workflows/cargo-tests.yml | 5 + fhevm-engine/Cargo.lock | 2297 +++++++++++++++-- fhevm-engine/Cargo.toml | 6 +- fhevm-engine/coprocessor/Cargo.toml | 4 +- fhevm-engine/coprocessor/Dockerfile | 2 +- fhevm-engine/fhevm-db/Dockerfile | 2 +- fhevm-engine/listener/Cargo.toml | 2 +- fhevm-engine/rust-toolchain.toml | 2 +- fhevm-engine/sns-executor/Cargo.toml | 6 +- fhevm-engine/transaction-sender/.gitignore | 2 + fhevm-engine/transaction-sender/Cargo.toml | 23 + fhevm-engine/transaction-sender/build.rs | 16 + .../contracts/CiphertextStorage.sol | 11 + .../contracts/ZKPoKManager.sol | 14 + .../src/bin/transaction-sender.rs | 69 + fhevm-engine/transaction-sender/src/lib.rs | 122 + .../tests/integration_test.rs | 56 + 17 files changed, 2355 insertions(+), 284 deletions(-) create mode 100644 fhevm-engine/transaction-sender/.gitignore create mode 100644 fhevm-engine/transaction-sender/Cargo.toml create mode 100644 fhevm-engine/transaction-sender/build.rs create mode 100644 fhevm-engine/transaction-sender/contracts/CiphertextStorage.sol create mode 100644 fhevm-engine/transaction-sender/contracts/ZKPoKManager.sol create mode 100644 fhevm-engine/transaction-sender/src/bin/transaction-sender.rs create mode 100644 fhevm-engine/transaction-sender/src/lib.rs create mode 100644 fhevm-engine/transaction-sender/tests/integration_test.rs diff --git a/.github/workflows/cargo-tests.yml b/.github/workflows/cargo-tests.yml index 798a8ba1..6b27af34 100644 --- a/.github/workflows/cargo-tests.yml +++ b/.github/workflows/cargo-tests.yml @@ -41,6 +41,11 @@ jobs: sudo apt-get install -y protobuf-compiler && \ cargo install sqlx-cli + - name: Install foundry + run: | + curl -L --proto '=https' --tlsv1.2 -sSf https://foundry.paradigm.xyz | bash && \ + foundryup + - name: Cache cargo uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2 with: diff --git a/fhevm-engine/Cargo.lock b/fhevm-engine/Cargo.lock index 2555917c..c4e838bd 100644 --- a/fhevm-engine/Cargo.lock +++ b/fhevm-engine/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "actix-codec" @@ -65,7 +65,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -182,7 +182,7 @@ dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -269,19 +269,67 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b87410cf02aeaeca18efe1f807893509ed716be9d1514ae1e6aadc60660a49a6" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.3.2", "alloy-core", - "alloy-eips", - "alloy-genesis", - "alloy-provider", - "alloy-rpc-client", - "alloy-serde", - "alloy-signer", + "alloy-eips 0.3.2", + "alloy-genesis 0.3.2", + "alloy-provider 0.3.2", + "alloy-rpc-client 0.3.2", + "alloy-serde 0.3.2", + "alloy-signer 0.3.2", "alloy-signer-aws", "alloy-signer-gcp", "alloy-signer-ledger", - "alloy-signer-local", - "alloy-transport-http", + "alloy-signer-local 0.3.2", + "alloy-transport-http 0.3.2", +] + +[[package]] +name = "alloy" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbcc41e8a11a4975b18ec6afba2cc48d591fa63336a4c526dacb50479a8d6b35" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-contract 0.9.2", + "alloy-core", + "alloy-eips 0.9.2", + "alloy-genesis 0.9.2", + "alloy-network 0.9.2", + "alloy-provider 0.9.2", + "alloy-pubsub 0.9.2", + "alloy-rpc-client 0.9.2", + "alloy-rpc-types 0.9.2", + "alloy-serde 0.9.2", + "alloy-transport 0.9.2", + "alloy-transport-http 0.9.2", + "alloy-transport-ws 0.9.2", +] + +[[package]] +name = "alloy" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5295219c9bc87cfa2497131423921e8ea136ee7e2ab338967078995168431d5" +dependencies = [ + "alloy-consensus 0.11.0", + "alloy-contract 0.11.0", + "alloy-core", + "alloy-eips 0.11.0", + "alloy-genesis 0.11.0", + "alloy-network 0.11.0", + "alloy-node-bindings", + "alloy-provider 0.11.0", + "alloy-pubsub 0.11.0", + "alloy-rpc-client 0.11.0", + "alloy-rpc-types 0.11.0", + "alloy-serde 0.11.0", + "alloy-signer 0.11.0", + "alloy-signer-local 0.11.0", + "alloy-transport 0.11.0", + "alloy-transport-http 0.11.0", + "alloy-transport-ipc", + "alloy-transport-ws 0.11.0", ] [[package]] @@ -300,31 +348,137 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40a70d19a83dfee0cd4b16d28d2fc1c822a9a55935c672259dd8165e342c4147" dependencies = [ - "alloy-eips", + "alloy-eips 0.3.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.3.2", + "c-kzg", + "serde", +] + +[[package]] +name = "alloy-consensus" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4138dc275554afa6f18c4217262ac9388790b2fc393c2dfe03c51d357abf013" +dependencies = [ + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", + "alloy-trie", + "auto_impl", + "c-kzg", + "derive_more 1.0.0", + "serde", +] + +[[package]] +name = "alloy-consensus" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce20c85f6b24a5da40b2350a748e348417f0465dedbb523a4d149143bc4a41ce" +dependencies = [ + "alloy-eips 0.11.0", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.11.0", + "alloy-trie", + "auto_impl", "c-kzg", + "derive_more 1.0.0", + "k256", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa04e1882c31288ce1028fdf31b6ea94cfa9eafa2e497f903ded631c8c6a42c" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", + "serde", +] + +[[package]] +name = "alloy-consensus-any" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e23af02ccded0031ef2b70df4fe9965b1c742c5d5384c8c767ae0311f7e62b9" +dependencies = [ + "alloy-consensus 0.11.0", + "alloy-eips 0.11.0", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.11.0", "serde", ] +[[package]] +name = "alloy-contract" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f21886c1fea0626f755a49b2ac653b396fb345233f6170db2da3d0ada31560c" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network 0.9.2", + "alloy-network-primitives 0.9.2", + "alloy-primitives", + "alloy-provider 0.9.2", + "alloy-pubsub 0.9.2", + "alloy-rpc-types-eth 0.9.2", + "alloy-sol-types", + "alloy-transport 0.9.2", + "futures", + "futures-util", + "thiserror 2.0.11", +] + +[[package]] +name = "alloy-contract" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71c7a59f261333db00fa10a3de9480f31121bb919ad38487040d7833d5982203" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network 0.11.0", + "alloy-network-primitives 0.11.0", + "alloy-primitives", + "alloy-provider 0.11.0", + "alloy-pubsub 0.11.0", + "alloy-rpc-types-eth 0.11.0", + "alloy-sol-types", + "alloy-transport 0.11.0", + "futures", + "futures-util", + "thiserror 2.0.11", +] + [[package]] name = "alloy-core" -version = "0.8.3" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b095eb0533144b4497e84a9cc3e44a5c2e3754a3983c0376a55a2f9183a53e" +checksum = "648275bb59110f88cc5fa9a176845e52a554ebfebac2d21220bcda8c9220f797" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", "alloy-primitives", + "alloy-rlp", "alloy-sol-types", ] [[package]] name = "alloy-dyn-abi" -version = "0.8.3" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4004925bff5ba0a11739ae84dbb6601a981ea692f3bd45b626935ee90a6b8471" +checksum = "bc9138f4f0912793642d453523c3116bd5d9e11de73b70177aa7cb3e94b98ad2" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -335,7 +489,19 @@ dependencies = [ "itoa", "serde", "serde_json", - "winnow", + "winnow 0.6.18", +] + +[[package]] +name = "alloy-eip2124" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "675264c957689f0fd75f5993a73123c2cc3b5c235a38f5b9037fe6c826bfb2c0" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "crc", + "thiserror 2.0.11", ] [[package]] @@ -360,6 +526,19 @@ dependencies = [ "serde", ] +[[package]] +name = "alloy-eip7702" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cabf647eb4650c91a9d38cb6f972bb320009e7e9d61765fb688a86f1563b33e8" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "derive_more 1.0.0", + "k256", + "serde", +] + [[package]] name = "alloy-eips" version = "0.3.2" @@ -367,10 +546,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ecd43a1ce87109f4d64efeff2b6fd0d7ff06afe93c4ffeb4e23bbb34d77ce84" dependencies = [ "alloy-eip2930", - "alloy-eip7702", + "alloy-eip7702 0.1.0", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.3.2", + "c-kzg", + "derive_more 1.0.0", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-eips" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52dd5869ed09e399003e0e0ec6903d981b2a92e74c5d37e6b40890bad2517526" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702 0.5.0", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", + "c-kzg", + "derive_more 1.0.0", + "once_cell", + "serde", + "sha2", +] + +[[package]] +name = "alloy-eips" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7149e011edbd588f6df6564b369c75f6b538d76db14053d95e0b43b2d92e4266" +dependencies = [ + "alloy-eip2124", + "alloy-eip2930", + "alloy-eip7702 0.5.0", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.11.0", + "auto_impl", "c-kzg", "derive_more 1.0.0", "once_cell", @@ -385,15 +602,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91d8c017799918fe4c742fcd3d19a7c7b5839aea818f02e15e1bb37292b8a513" dependencies = [ "alloy-primitives", - "alloy-serde", + "alloy-serde 0.3.2", + "serde", +] + +[[package]] +name = "alloy-genesis" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7d2a7fe5c1a9bd6793829ea21a636f30fc2b3f5d2e7418ba86d96e41dd1f460" +dependencies = [ + "alloy-eips 0.9.2", + "alloy-primitives", + "alloy-serde 0.9.2", + "alloy-trie", + "serde", +] + +[[package]] +name = "alloy-genesis" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acaec0cc4c1489d61d6f33d0c3dd522c750025f4b5c8f59cd546221e4df660e5" +dependencies = [ + "alloy-eips 0.11.0", + "alloy-primitives", + "alloy-serde 0.11.0", + "alloy-trie", "serde", ] [[package]] name = "alloy-json-abi" -version = "0.8.3" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9996daf962fd0a90d3c93b388033228865953b92de7bb1959b891d78750a4091" +checksum = "24acd2f5ba97c7a320e67217274bc81fe3c3174b8e6144ec875d9d54e760e278" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -411,7 +654,35 @@ dependencies = [ "alloy-sol-types", "serde", "serde_json", - "thiserror", + "thiserror 1.0.63", + "tracing", +] + +[[package]] +name = "alloy-json-rpc" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2008bedb8159a255b46b7c8614516eda06679ea82f620913679afbd8031fea72" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror 2.0.11", + "tracing", +] + +[[package]] +name = "alloy-json-rpc" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0c5c9651fd20a2fd4a57606b6a570d1c17ab86e686b962b2f1ecac68b51e020" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "serde", + "serde_json", + "thiserror 2.0.11", "tracing", ] @@ -421,19 +692,69 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da63445b84f4cd2c5b5b62b7ebf57125e4b9ce233d45db4d2b4a0f329f5fe5a" dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network-primitives", + "alloy-consensus 0.3.2", + "alloy-eips 0.3.2", + "alloy-json-rpc 0.3.2", + "alloy-network-primitives 0.3.2", + "alloy-primitives", + "alloy-rpc-types-eth 0.3.2", + "alloy-serde 0.3.2", + "alloy-signer 0.3.2", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "thiserror 1.0.63", +] + +[[package]] +name = "alloy-network" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4556f01fe41d0677495df10a648ddcf7ce118b0e8aa9642a0e2b6dd1fb7259de" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-consensus-any 0.9.2", + "alloy-eips 0.9.2", + "alloy-json-rpc 0.9.2", + "alloy-network-primitives 0.9.2", + "alloy-primitives", + "alloy-rpc-types-any 0.9.2", + "alloy-rpc-types-eth 0.9.2", + "alloy-serde 0.9.2", + "alloy-signer 0.9.2", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.11", +] + +[[package]] +name = "alloy-network" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b02ed56783fb2c086a4ac8961175dd6d3ad163e6cf6125f0b83f7de03379b607" +dependencies = [ + "alloy-consensus 0.11.0", + "alloy-consensus-any 0.11.0", + "alloy-eips 0.11.0", + "alloy-json-rpc 0.11.0", + "alloy-network-primitives 0.11.0", "alloy-primitives", - "alloy-rpc-types-eth", - "alloy-serde", - "alloy-signer", + "alloy-rpc-types-any 0.11.0", + "alloy-rpc-types-eth 0.11.0", + "alloy-serde 0.11.0", + "alloy-signer 0.11.0", "alloy-sol-types", "async-trait", "auto_impl", "futures-utils-wasm", - "thiserror", + "serde", + "serde_json", + "thiserror 2.0.11", ] [[package]] @@ -442,31 +763,80 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb528a622b49b51c79d4ba61e3ff2567b31bd339571e8e06e36b94494cc49a" dependencies = [ - "alloy-eips", + "alloy-eips 0.3.2", + "alloy-primitives", + "alloy-serde 0.3.2", + "serde", +] + +[[package]] +name = "alloy-network-primitives" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31c3c6b71340a1d076831823f09cb6e02de01de5c6630a9631bdb36f947ff80" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-eips 0.9.2", "alloy-primitives", - "alloy-serde", + "alloy-serde 0.9.2", "serde", ] +[[package]] +name = "alloy-network-primitives" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0624cfa9311aa8283cd3bf5eed883d0d1e823e2a4d57b30e1b49af4b3678a6b" +dependencies = [ + "alloy-consensus 0.11.0", + "alloy-eips 0.11.0", + "alloy-primitives", + "alloy-serde 0.11.0", + "serde", +] + +[[package]] +name = "alloy-node-bindings" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96f1a87e3b2842d6a35bbebedf2bd48a49ee757ec63d0cfc1f3cb86338e972c" +dependencies = [ + "alloy-genesis 0.11.0", + "alloy-primitives", + "k256", + "rand", + "serde_json", + "tempfile", + "thiserror 2.0.11", + "tracing", + "url", +] + [[package]] name = "alloy-primitives" -version = "0.8.3" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "411aff151f2a73124ee473708e82ed51b2535f68928b6a1caa8bc1246ae6f7cd" +checksum = "ec878088ec6283ce1e90d280316aadd3d6ce3de06ff63d68953c855e7e447e92" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", "derive_more 1.0.0", - "hex-literal", + "foldhash", + "getrandom", + "hashbrown 0.15.2", + "indexmap 2.7.1", "itoa", "k256", "keccak-asm", + "paste", "proptest", "rand", "ruint", + "rustc-hash 2.1.0", "serde", + "sha3", "tiny-keccak", ] @@ -477,53 +847,173 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b624bfbfa145b64571650ce951eba3ec1d38b781e4fe2b5a8e7410f99f73336" dependencies = [ "alloy-chains", - "alloy-consensus", - "alloy-eips", - "alloy-json-rpc", - "alloy-network", - "alloy-network-primitives", + "alloy-consensus 0.3.2", + "alloy-eips 0.3.2", + "alloy-json-rpc 0.3.2", + "alloy-network 0.3.2", + "alloy-network-primitives 0.3.2", "alloy-primitives", - "alloy-rpc-client", - "alloy-rpc-types-eth", - "alloy-transport", - "alloy-transport-http", + "alloy-rpc-client 0.3.2", + "alloy-rpc-types-eth 0.3.2", + "alloy-transport 0.3.2", + "alloy-transport-http 0.3.2", "async-stream", "async-trait", "auto_impl", "dashmap", "futures", "futures-utils-wasm", - "lru", + "lru 0.12.4", "pin-project 1.1.5", "reqwest", "serde", "serde_json", - "thiserror", + "thiserror 1.0.63", "tokio", "tracing", "url", ] [[package]] -name = "alloy-rlp" -version = "0.3.8" +name = "alloy-provider" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26154390b1d205a4a7ac7352aa2eb4f81f391399d4e2f546fb81a2f8bb383f62" +checksum = "5a22c4441b3ebe2d77fa9cf629ba68c3f713eb91779cff84275393db97eddd82" dependencies = [ - "alloy-rlp-derive", - "arrayvec", - "bytes", + "alloy-chains", + "alloy-consensus 0.9.2", + "alloy-eips 0.9.2", + "alloy-json-rpc 0.9.2", + "alloy-network 0.9.2", + "alloy-network-primitives 0.9.2", + "alloy-primitives", + "alloy-pubsub 0.9.2", + "alloy-rpc-client 0.9.2", + "alloy-rpc-types-eth 0.9.2", + "alloy-transport 0.9.2", + "alloy-transport-http 0.9.2", + "alloy-transport-ws 0.9.2", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "futures", + "futures-utils-wasm", + "lru 0.12.4", + "parking_lot", + "pin-project 1.1.5", + "reqwest", + "schnellru", + "serde", + "serde_json", + "thiserror 2.0.11", + "tokio", + "tracing", + "url", + "wasmtimer", ] [[package]] -name = "alloy-rlp-derive" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" +name = "alloy-provider" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07c68df5354225da542efeb6d9388b65773b3304309b437416146e9d1e2bc1bd" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.11.0", + "alloy-eips 0.11.0", + "alloy-json-rpc 0.11.0", + "alloy-network 0.11.0", + "alloy-network-primitives 0.11.0", + "alloy-node-bindings", + "alloy-primitives", + "alloy-pubsub 0.11.0", + "alloy-rpc-client 0.11.0", + "alloy-rpc-types-anvil", + "alloy-rpc-types-eth 0.11.0", + "alloy-signer 0.11.0", + "alloy-signer-local 0.11.0", + "alloy-transport 0.11.0", + "alloy-transport-http 0.11.0", + "alloy-transport-ipc", + "alloy-transport-ws 0.11.0", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "futures", + "futures-utils-wasm", + "lru 0.13.0", + "parking_lot", + "pin-project 1.1.5", + "reqwest", + "serde", + "serde_json", + "thiserror 2.0.11", + "tokio", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-pubsub" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2269fd635f7b505f27c63a3cb293148cd02301efce4c8bdd9ff54fbfc4a20e23" +dependencies = [ + "alloy-json-rpc 0.9.2", + "alloy-primitives", + "alloy-transport 0.9.2", + "bimap", + "futures", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.1", + "tracing", +] + +[[package]] +name = "alloy-pubsub" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef6ef167ea24e7aac569dfd90b668c1f7dca0e48214e70364586d5341a89431" +dependencies = [ + "alloy-json-rpc 0.11.0", + "alloy-primitives", + "alloy-transport 0.11.0", + "bimap", + "futures", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.1", + "tracing", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6c1d995bff8d011f7cd6c81820d51825e6e06d6db73914c1630ecf544d83d6" +dependencies = [ + "alloy-rlp-derive", + "arrayvec", + "bytes", +] + +[[package]] +name = "alloy-rlp-derive" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a40e1ef334153322fd878d07e86af7a529bcb86b2439525920a88eba87bcf943" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -532,9 +1022,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "02af2846b186e4ae25eb448dd78aebdb82f55668bdc360a3a7bf4c7754cb8251" dependencies = [ - "alloy-json-rpc", - "alloy-transport", - "alloy-transport-http", + "alloy-json-rpc 0.3.2", + "alloy-transport 0.3.2", + "alloy-transport-http 0.3.2", "futures", "pin-project 1.1.5", "reqwest", @@ -547,23 +1037,192 @@ dependencies = [ "url", ] +[[package]] +name = "alloy-rpc-client" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d06a292b37e182e514903ede6e623b9de96420e8109ce300da288a96d88b7e4b" +dependencies = [ + "alloy-json-rpc 0.9.2", + "alloy-primitives", + "alloy-pubsub 0.9.2", + "alloy-transport 0.9.2", + "alloy-transport-http 0.9.2", + "alloy-transport-ws 0.9.2", + "futures", + "pin-project 1.1.5", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.1", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0371aae9b44a35e374c94c7e1df5cbccf0f52b2ef7c782291ed56e86d88ec106" +dependencies = [ + "alloy-json-rpc 0.11.0", + "alloy-primitives", + "alloy-pubsub 0.11.0", + "alloy-transport 0.11.0", + "alloy-transport-http 0.11.0", + "alloy-transport-ipc", + "alloy-transport-ws 0.11.0", + "futures", + "pin-project 1.1.5", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower 0.5.1", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-rpc-types" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9383845dd924939e7ab0298bbfe231505e20928907d7905aa3bf112287305e06" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth 0.9.2", + "alloy-serde 0.9.2", + "serde", +] + +[[package]] +name = "alloy-rpc-types" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1428d64569961b00373c503a3de306656e94ef1f2a474e93fd41a6daae0d6ac7" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-anvil", + "alloy-rpc-types-engine", + "alloy-rpc-types-eth 0.11.0", + "alloy-serde 0.11.0", + "serde", +] + +[[package]] +name = "alloy-rpc-types-anvil" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d721727cc493a58bd197a3ebbd42b88c0393c1f30da905bb7a31686c820f4c2d" +dependencies = [ + "alloy-primitives", + "alloy-rpc-types-eth 0.11.0", + "alloy-serde 0.11.0", + "serde", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca445cef0eb6c2cf51cfb4e214fbf1ebd00893ae2e6f3b944c8101b07990f988" +dependencies = [ + "alloy-consensus-any 0.9.2", + "alloy-rpc-types-eth 0.9.2", + "alloy-serde 0.9.2", +] + +[[package]] +name = "alloy-rpc-types-any" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66e119337400d8b0348e1576ab37ffa56d1a04cbc977a84d4fa0a527d7cb0c21" +dependencies = [ + "alloy-consensus-any 0.11.0", + "alloy-rpc-types-eth 0.11.0", + "alloy-serde 0.11.0", +] + +[[package]] +name = "alloy-rpc-types-engine" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b582c59b6f493d9b15bea32f44f662fa6749e5464ef5305d8429a864ace60684" +dependencies = [ + "alloy-consensus 0.11.0", + "alloy-eips 0.11.0", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.11.0", + "derive_more 1.0.0", + "jsonwebtoken", + "rand", + "serde", + "strum", +] + [[package]] name = "alloy-rpc-types-eth" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48cc832ec2ad270ac9859cc5056117890af943686d432a2c478eafef5102e8eb" dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-network-primitives", + "alloy-consensus 0.3.2", + "alloy-eips 0.3.2", + "alloy-network-primitives 0.3.2", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.3.2", "alloy-sol-types", "itertools 0.13.0", "serde", "serde_json", - "thiserror", + "thiserror 1.0.63", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0938bc615c02421bd86c1733ca7205cc3d99a122d9f9bff05726bd604b76a5c2" +dependencies = [ + "alloy-consensus 0.9.2", + "alloy-consensus-any 0.9.2", + "alloy-eips 0.9.2", + "alloy-network-primitives 0.9.2", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.9.2", + "alloy-sol-types", + "itertools 0.13.0", + "serde", + "serde_json", + "thiserror 2.0.11", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a4a43d8b1344e3ef115ed7a2cee934876e4a64d2b9d9bee8738f9806900757e" +dependencies = [ + "alloy-consensus 0.11.0", + "alloy-consensus-any 0.11.0", + "alloy-eips 0.11.0", + "alloy-network-primitives 0.11.0", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.11.0", + "alloy-sol-types", + "itertools 0.13.0", + "serde", + "serde_json", + "thiserror 2.0.11", ] [[package]] @@ -577,6 +1236,28 @@ dependencies = [ "serde_json", ] +[[package]] +name = "alloy-serde" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae0465c71d4dced7525f408d84873aeebb71faf807d22d74c4a426430ccd9b55" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-serde" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86aa42c36e3c0db5bd9a7314e98aa261a61d5e3d6a0bd7e51fb8b0a3d6438481" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + [[package]] name = "alloy-signer" version = "0.3.2" @@ -590,7 +1271,35 @@ dependencies = [ "auto_impl", "elliptic-curve", "k256", - "thiserror", + "thiserror 1.0.63", +] + +[[package]] +name = "alloy-signer" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bfa395ad5cc952c82358d31e4c68b27bf4a89a5456d9b27e226e77dac50e4ff" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "elliptic-curve", + "k256", + "thiserror 2.0.11", +] + +[[package]] +name = "alloy-signer" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c613222abd016e03ba548f41db938a2c99108b59c0c66ca105eab1b7a2e6b40a" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "elliptic-curve", + "k256", + "thiserror 2.0.11", ] [[package]] @@ -599,15 +1308,15 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ed53f2c97549c39867269d7c0b8794cbebd8d3bbe4fa388d0bf11630da2c5cb" dependencies = [ - "alloy-consensus", - "alloy-network", + "alloy-consensus 0.3.2", + "alloy-network 0.3.2", "alloy-primitives", - "alloy-signer", + "alloy-signer 0.3.2", "async-trait", "aws-sdk-kms", "k256", "spki", - "thiserror", + "thiserror 1.0.63", "tracing", ] @@ -617,15 +1326,15 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e1eb4a9fc6841335956a69f1fbeed354a73e24ac8fbf6c844b8346eb8dfc4f5" dependencies = [ - "alloy-consensus", - "alloy-network", + "alloy-consensus 0.3.2", + "alloy-network 0.3.2", "alloy-primitives", - "alloy-signer", + "alloy-signer 0.3.2", "async-trait", "gcloud-sdk", "k256", "spki", - "thiserror", + "thiserror 1.0.63", "tracing", ] @@ -635,17 +1344,17 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef96ce29bd4011a9be151fbb836dfa53984a044ec8c125a9df25d18402215e3b" dependencies = [ - "alloy-consensus", + "alloy-consensus 0.3.2", "alloy-dyn-abi", - "alloy-network", + "alloy-network 0.3.2", "alloy-primitives", - "alloy-signer", + "alloy-signer 0.3.2", "alloy-sol-types", "async-trait", "coins-ledger", "futures-util", "semver 1.0.23", - "thiserror", + "thiserror 1.0.63", "tracing", ] @@ -655,118 +1364,278 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffe99cf91f7079a38823f95a47807e11424dbdd01199781fa61b335178d70b90" dependencies = [ - "alloy-consensus", - "alloy-network", + "alloy-consensus 0.3.2", + "alloy-network 0.3.2", "alloy-primitives", - "alloy-signer", + "alloy-signer 0.3.2", "async-trait", "k256", "rand", - "thiserror", + "thiserror 1.0.63", +] + +[[package]] +name = "alloy-signer-local" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39163b956c81e8fd9605194d6b5b92dd93b0e0252810e69f9a4cebe3a8614f46" +dependencies = [ + "alloy-consensus 0.11.0", + "alloy-network 0.11.0", + "alloy-primitives", + "alloy-signer 0.11.0", + "async-trait", + "k256", + "rand", + "thiserror 2.0.11", ] [[package]] name = "alloy-sol-macro" -version = "0.8.3" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0458ccb02a564228fcd76efb8eb5a520521a8347becde37b402afec9a1b83859" +checksum = "8d039d267aa5cbb7732fa6ce1fd9b5e9e29368f580f80ba9d7a8450c794de4b2" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.3" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "620ae5eee30ee7216a38027dec34e0585c55099f827f92f50d11e3d2d3a4a954" +dependencies = [ + "alloy-json-abi", + "alloy-sol-macro-input", + "const-hex", + "heck 0.5.0", + "indexmap 2.7.1", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.87", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad9f7d057e00f8c5994e4ff4492b76532c51ead39353aa2ed63f8c50c0f4d52e" +dependencies = [ + "alloy-json-abi", + "const-hex", + "dunce", + "heck 0.5.0", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.87", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74e60b084fe1aef8acecda2743ff2d93c18ff3eb67a2d3b12f62582a1e66ef5e" +dependencies = [ + "serde", + "winnow 0.6.18", +] + +[[package]] +name = "alloy-sol-types" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1382302752cd751efd275f4d6ef65877ddf61e0e6f5ac84ef4302b79a33a31a" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", + "const-hex", + "serde", +] + +[[package]] +name = "alloy-transport" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98b7bf2a9e0671a1e914e89854e74c89e62a549da548184c6d93c2be828a575" +dependencies = [ + "alloy-json-rpc 0.3.2", + "base64 0.22.1", + "futures-util", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 1.0.63", + "tokio", + "tower 0.5.1", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d17722a198f33bbd25337660787aea8b8f57814febb7c746bc30407bdfc39448" +dependencies = [ + "alloy-json-rpc 0.9.2", + "base64 0.22.1", + "futures-util", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.11", + "tokio", + "tower 0.5.1", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40e2f34fcd849676c8fe274a6e72f0664dfede7ce06d12daa728d2e72f1b4393" +dependencies = [ + "alloy-json-rpc 0.11.0", + "base64 0.22.1", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror 2.0.11", + "tokio", + "tower 0.5.1", + "tracing", + "url", + "wasmtimer", +] + +[[package]] +name = "alloy-transport-http" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85d928f36065b0f548782ec2acf4b54a5cf8b297a22ca18d2c8fe165af90561f" +dependencies = [ + "alloy-json-rpc 0.3.2", + "alloy-transport 0.3.2", + "reqwest", + "serde_json", + "tower 0.5.1", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-http" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc65475025fc1e84bf86fc840f04f63fcccdcf3cf12053c99918e4054dfbc69" +checksum = "6e1509599021330a31c4a6816b655e34bf67acb1cc03c564e09fd8754ff6c5de" dependencies = [ - "alloy-sol-macro-input", - "const-hex", - "heck 0.5.0", - "indexmap 2.4.0", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.75", - "syn-solidity", - "tiny-keccak", + "alloy-json-rpc 0.9.2", + "alloy-transport 0.9.2", + "reqwest", + "serde_json", + "tower 0.5.1", + "tracing", + "url", ] [[package]] -name = "alloy-sol-macro-input" -version = "0.8.3" +name = "alloy-transport-http" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed10f0715a0b69fde3236ff3b9ae5f6f7c97db5a387747100070d3016b9266b" +checksum = "6e291c97c3c0ebb5d03c34e3a55c0f7c5bfa307536a2efaaa6fae4b3a4d09851" dependencies = [ - "const-hex", - "dunce", - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.75", - "syn-solidity", + "alloy-json-rpc 0.11.0", + "alloy-transport 0.11.0", + "reqwest", + "serde_json", + "tower 0.5.1", + "tracing", + "url", ] [[package]] -name = "alloy-sol-type-parser" -version = "0.8.3" +name = "alloy-transport-ipc" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3edae8ea1de519ccba896b6834dec874230f72fe695ff3c9c118e90ec7cff783" +checksum = "8d3e991f40d2d81c6ee036a34d81127bfec5fadf7e649791b5225181126c1959" dependencies = [ + "alloy-json-rpc 0.11.0", + "alloy-pubsub 0.11.0", + "alloy-transport 0.11.0", + "bytes", + "futures", + "interprocess", + "pin-project 1.1.5", "serde", - "winnow", + "serde_json", + "tokio", + "tokio-util", + "tracing", ] [[package]] -name = "alloy-sol-types" -version = "0.8.3" +name = "alloy-transport-ws" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eb88e4da0a1b697ed6a9f811fdba223cf4d5c21410804fd1707836af73a462b" +checksum = "58011745b2f17b334db40df9077d75b181f78360a5bc5c35519e15d4bfce15e2" dependencies = [ - "alloy-json-abi", - "alloy-primitives", - "alloy-sol-macro", - "const-hex", - "serde", + "alloy-pubsub 0.9.2", + "alloy-transport 0.9.2", + "futures", + "http 1.1.0", + "rustls 0.23.12", + "serde_json", + "tokio", + "tokio-tungstenite 0.24.0", + "tracing", + "ws_stream_wasm", ] [[package]] -name = "alloy-transport" -version = "0.3.2" +name = "alloy-transport-ws" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a98b7bf2a9e0671a1e914e89854e74c89e62a549da548184c6d93c2be828a575" +checksum = "fc8c544f7dc764735664756805f8b8b770020cc295a0b96b09cbefd099c172c7" dependencies = [ - "alloy-json-rpc", - "base64 0.22.1", - "futures-util", - "futures-utils-wasm", - "serde", + "alloy-pubsub 0.11.0", + "alloy-transport 0.11.0", + "futures", + "http 1.1.0", + "rustls 0.23.12", "serde_json", - "thiserror", "tokio", - "tower 0.5.1", + "tokio-tungstenite 0.26.1", "tracing", - "url", + "ws_stream_wasm", ] [[package]] -name = "alloy-transport-http" -version = "0.3.2" +name = "alloy-trie" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85d928f36065b0f548782ec2acf4b54a5cf8b297a22ca18d2c8fe165af90561f" +checksum = "6917c79e837aa7b77b7a6dae9f89cbe15313ac161c4d3cfaf8909ef21f3d22d8" dependencies = [ - "alloy-json-rpc", - "alloy-transport", - "reqwest", - "serde_json", - "tower 0.5.1", + "alloy-primitives", + "alloy-rlp", + "arrayvec", + "derive_more 1.0.0", + "nybbles", + "serde", + "smallvec", "tracing", - "url", ] [[package]] @@ -784,11 +1653,22 @@ dependencies = [ "libc", ] +[[package]] +name = "annotate-snippets" +version = "0.11.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4" +dependencies = [ + "anstyle", + "memchr", + "unicode-width", +] + [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -825,12 +1705,13 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] @@ -839,6 +1720,15 @@ version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "ark-ff" version = "0.3.0" @@ -981,6 +1871,9 @@ name = "arrayvec" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +dependencies = [ + "serde", +] [[package]] name = "async-compression" @@ -1014,7 +1907,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -1025,7 +1918,18 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.1", ] [[package]] @@ -1051,7 +1955,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -1365,6 +2269,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "bimap" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" + [[package]] name = "bincode" version = "1.3.3" @@ -1468,7 +2378,7 @@ dependencies = [ "serde_json", "serde_repr", "serde_urlencoded", - "thiserror", + "thiserror 1.0.63", "tokio", "tokio-util", "tower-service", @@ -1508,6 +2418,12 @@ dependencies = [ "alloc-stdlib", ] +[[package]] +name = "build_const" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" + [[package]] name = "bumpalo" version = "3.16.0" @@ -1534,9 +2450,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" dependencies = [ "serde", ] @@ -1646,7 +2562,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -1671,7 +2587,7 @@ dependencies = [ "log", "nix", "once_cell", - "thiserror", + "thiserror 1.0.63", "tokio", "tracing", "wasm-bindgen", @@ -1722,9 +2638,9 @@ dependencies = [ [[package]] name = "const-hex" -version = "1.12.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8a24a26d37e1ffd45343323dc9fe6654ceea44c12f2fcb3d7ac29e610bc6" +checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" dependencies = [ "cfg-if", "cpufeatures", @@ -1761,7 +2677,7 @@ name = "coprocessor" version = "0.6.1" dependencies = [ "actix-web", - "alloy", + "alloy 0.3.2", "bigdecimal", "bincode", "clap", @@ -1769,7 +2685,7 @@ dependencies = [ "hex", "itertools 0.13.0", "lazy_static", - "lru", + "lru 0.12.4", "opentelemetry", "opentelemetry-otlp", "opentelemetry-semantic-conventions", @@ -1938,7 +2854,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -1949,7 +2865,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -1966,6 +2882,12 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "data-encoding" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e60eed09d8c01d3cee5b7d30acb059b76614c918fa0f992e0dd6eeb10daad6f" + [[package]] name = "der" version = "0.7.9" @@ -1998,6 +2920,48 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.87", +] + [[package]] name = "derive_more" version = "0.99.18" @@ -2008,7 +2972,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -2028,7 +2992,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", "unicode-xid", ] @@ -2059,7 +3023,16 @@ version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ - "dirs-sys", + "dirs-sys 0.4.1", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys 0.5.0", ] [[package]] @@ -2070,10 +3043,33 @@ checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", "option-ext", - "redox_users", + "redox_users 0.4.6", "windows-sys 0.48.0", ] +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users 0.5.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "docker_credential" version = "1.3.1" @@ -2085,6 +3081,12 @@ dependencies = [ "serde_json", ] +[[package]] +name = "doctest-file" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac81fa3e28d21450aa4d2ac065992ba96a1d7303efbce51a95f4fd175b67562" + [[package]] name = "dotenvy" version = "0.15.7" @@ -2097,6 +3099,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" +[[package]] +name = "dyn-clone" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" + [[package]] name = "dyn-stack" version = "0.10.0" @@ -2303,6 +3311,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + [[package]] name = "foreign-types" version = "0.3.2" @@ -2327,6 +3341,115 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "foundry-compilers" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "203e96bd596350ec8d9aedfca7eff573e9347e2b2fe50eedfbf78532dabe418e" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "auto_impl", + "derive_more 1.0.0", + "dirs 6.0.0", + "dyn-clone", + "foundry-compilers-artifacts", + "foundry-compilers-core", + "home", + "itertools 0.13.0", + "md-5", + "path-slash", + "rayon", + "semver 1.0.23", + "serde", + "serde_json", + "sha2", + "solar-parse", + "svm-rs", + "svm-rs-builds", + "thiserror 2.0.11", + "tracing", + "winnow 0.7.1", + "yansi", +] + +[[package]] +name = "foundry-compilers-artifacts" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be8ba2ccf8a4bf7730b2ad2815984c1af8e5b8c492420f1cf1d26a8be29cc9e4" +dependencies = [ + "foundry-compilers-artifacts-solc", + "foundry-compilers-artifacts-vyper", +] + +[[package]] +name = "foundry-compilers-artifacts-solc" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5889eeb7d6729afbbbb1313b22e8f58aa909fcf38aa6b2f9c9b2443ca0765c59" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "foundry-compilers-core", + "md-5", + "path-slash", + "rayon", + "semver 1.0.23", + "serde", + "serde_json", + "serde_repr", + "thiserror 2.0.11", + "tracing", + "walkdir", + "yansi", +] + +[[package]] +name = "foundry-compilers-artifacts-vyper" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b01048f354b4e98bf5fb4810e0607c87d4b8cc7fe6305a42103ce192e33b2da7" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "foundry-compilers-artifacts-solc", + "foundry-compilers-core", + "path-slash", + "semver 1.0.23", + "serde", +] + +[[package]] +name = "foundry-compilers-core" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "079b80a4f188af9c273b081547d1a95a0a33f782851a99e21aa4eba06e47fa34" +dependencies = [ + "alloy-primitives", + "cfg-if", + "dunce", + "path-slash", + "regex", + "semver 1.0.23", + "serde", + "serde_json", + "svm-rs", + "thiserror 2.0.11", + "tokio", + "walkdir", +] + +[[package]] +name = "fs4" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c29c30684418547d476f0b48e84f4821639119c483b1eccd566c8cd0cd05f521" +dependencies = [ + "rustix", + "windows-sys 0.52.0", +] + [[package]] name = "funty" version = "2.0.0" @@ -2350,9 +3473,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -2360,9 +3483,9 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" @@ -2388,38 +3511,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -2526,7 +3649,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.4.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", @@ -2545,7 +3668,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.4.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", @@ -2558,6 +3681,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" + [[package]] name = "hashbrown" version = "0.14.5" @@ -2568,6 +3697,18 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "serde", +] + [[package]] name = "hashlink" version = "0.8.4" @@ -2607,12 +3748,6 @@ dependencies = [ "serde", ] -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - [[package]] name = "hidapi-rusb" version = "1.3.3" @@ -2772,6 +3907,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", + "webpki-roots 0.26.8", ] [[package]] @@ -2903,6 +4039,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "index_vec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44faf5bb8861a9c72e20d3fb0fdbd59233e43056e2b80475ab0aacdc2e781355" + [[package]] name = "indexmap" version = "1.9.3" @@ -2916,12 +4058,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.4.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "serde", ] @@ -2934,6 +4076,21 @@ dependencies = [ "generic-array", ] +[[package]] +name = "interprocess" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "894148491d817cb36b6f778017b8ac46b17408d522dd90f539d677ea938362eb" +dependencies = [ + "doctest-file", + "futures-core", + "libc", + "recvmsg", + "tokio", + "widestring", + "windows-sys 0.52.0", +] + [[package]] name = "ipnet" version = "2.10.0" @@ -3059,6 +4216,16 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" +[[package]] +name = "lasso" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e14eda50a3494b3bf7b9ce51c52434a761e383d7238ce1dd5dcec2fbc13e9fb" +dependencies = [ + "dashmap", + "hashbrown 0.14.5", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -3119,6 +4286,21 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "listener" +version = "0.0.1" +dependencies = [ + "alloy 0.9.2", + "alloy-primitives", + "alloy-provider 0.11.0", + "alloy-rpc-types 0.11.0", + "alloy-sol-types", + "clap", + "futures-util", + "serde", + "tokio", +] + [[package]] name = "local-channel" version = "0.1.5" @@ -3146,6 +4328,12 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "lockfree-object-pool" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" + [[package]] name = "log" version = "0.4.22" @@ -3161,6 +4349,21 @@ dependencies = [ "hashbrown 0.14.5", ] +[[package]] +name = "lru" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "227748d55f2f0ab4735d87fd623798cb6b664512fe979705f829c9f81c934465" +dependencies = [ + "hashbrown 0.15.2", +] + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + [[package]] name = "matchit" version = "0.7.3" @@ -3293,6 +4496,12 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "normalize-path" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5438dd2b2ff4c6df6e1ce22d825ed2fa93ee2922235cc45186991717f0a892d" + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -3367,6 +4576,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -3404,7 +4624,20 @@ checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", +] + +[[package]] +name = "nybbles" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" +dependencies = [ + "alloy-rlp", + "const-hex", + "proptest", + "serde", + "smallvec", ] [[package]] @@ -3418,9 +4651,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "openssl" @@ -3445,7 +4678,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -3477,7 +4710,7 @@ dependencies = [ "js-sys", "once_cell", "pin-project-lite", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -3493,7 +4726,7 @@ dependencies = [ "opentelemetry-proto", "opentelemetry_sdk", "prost", - "thiserror", + "thiserror 1.0.63", "tokio", "tonic", ] @@ -3532,7 +4765,7 @@ dependencies = [ "percent-encoding", "rand", "serde_json", - "thiserror", + "thiserror 1.0.63", "tokio", "tokio-stream", ] @@ -3626,7 +4859,7 @@ dependencies = [ "regex", "regex-syntax", "structmeta", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -3635,6 +4868,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + [[package]] name = "pem" version = "3.0.4" @@ -3667,7 +4906,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c73c26c01b8c87956cea613c907c9d6ecffd8d18a2a5908e5de0adfaa185cea" dependencies = [ "memchr", - "thiserror", + "thiserror 1.0.63", "ucd-trie", ] @@ -3678,7 +4917,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.4.0", + "indexmap 2.7.1", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.1", ] [[package]] @@ -3718,7 +4967,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -3782,7 +5031,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" dependencies = [ "proc-macro2", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -3824,7 +5073,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -3848,7 +5097,7 @@ dependencies = [ "memchr", "parking_lot", "protobuf", - "thiserror", + "thiserror 1.0.63", ] [[package]] @@ -3898,7 +5147,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.75", + "syn 2.0.87", "tempfile", ] @@ -3912,7 +5161,7 @@ dependencies = [ "itertools 0.13.0", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -3958,9 +5207,9 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash", + "rustc-hash 1.1.0", "rustls 0.23.12", - "thiserror", + "thiserror 1.0.63", "tokio", "tracing", ] @@ -3974,10 +5223,10 @@ dependencies = [ "bytes", "rand", "ring", - "rustc-hash", + "rustc-hash 1.1.0", "rustls 0.23.12", "slab", - "thiserror", + "thiserror 1.0.63", "tinyvec", "tracing", ] @@ -4019,6 +5268,7 @@ dependencies = [ "libc", "rand_chacha", "rand_core", + "serde", ] [[package]] @@ -4075,6 +5325,12 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03251193000f4bd3b042892be858ee50e8b3719f2b08e5833ac4353724632430" +[[package]] +name = "recvmsg" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" + [[package]] name = "redox_syscall" version = "0.5.3" @@ -4092,7 +5348,18 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.63", +] + +[[package]] +name = "redox_users" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +dependencies = [ + "getrandom", + "libredox", + "thiserror 2.0.11", ] [[package]] @@ -4139,6 +5406,7 @@ dependencies = [ "async-compression", "base64 0.22.1", "bytes", + "futures-channel", "futures-core", "futures-util", "http 1.1.0", @@ -4169,6 +5437,7 @@ dependencies = [ "tokio", "tokio-native-tls", "tokio-rustls", + "tokio-socks", "tokio-util", "tower-service", "url", @@ -4176,6 +5445,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", + "webpki-roots 0.26.8", "windows-registry", ] @@ -4286,6 +5556,15 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +dependencies = [ + "rand", +] + [[package]] name = "rustc-hex" version = "2.1.0" @@ -4432,6 +5711,24 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scc" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28e1c91382686d21b5ac7959341fcb9780fa7c03773646995a87c950fa7be640" +dependencies = [ + "sdd", +] + [[package]] name = "schannel" version = "0.1.23" @@ -4453,6 +5750,23 @@ dependencies = [ "tokio", ] +[[package]] +name = "schnellru" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "356285bbf17bea63d9e52e96bd18f039672ac92b55b8cb997d6162a2a37d1649" +dependencies = [ + "ahash", + "cfg-if", + "hashbrown 0.13.2", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -4469,6 +5783,12 @@ dependencies = [ "untrusted", ] +[[package]] +name = "sdd" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478f121bb72bbf63c52c93011ea1791dca40140dfe13f8336c4c5ac952c33aa9" + [[package]] name = "sec1" version = "0.7.3" @@ -4533,6 +5853,9 @@ name = "semver" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] [[package]] name = "semver-parser" @@ -4543,6 +5866,12 @@ dependencies = [ "pest", ] +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + [[package]] name = "serde" version = "1.0.210" @@ -4560,7 +5889,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -4583,7 +5912,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -4608,7 +5937,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.4.0", + "indexmap 2.7.1", "serde", "serde_derive", "serde_json", @@ -4625,7 +5954,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -4686,59 +6015,196 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] -name = "signal-hook-registry" -version = "1.4.2" +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest 0.10.7", + "rand_core", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror 1.0.63", + "time", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] + +[[package]] +name = "sns-executor" +version = "0.1.0" +dependencies = [ + "aligned-vec", + "anyhow", + "bincode", + "clap", + "fhevm-engine-common", + "hex", + "num-traits", + "prometheus", + "prost", + "rayon", + "serde", + "serde_json", + "sha3", + "sqlx", + "tfhe", + "tokio", + "tonic", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "solar-ast" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d3f6c4a476a16dcd36933a70ecdb0a807f8949cc5f3c4c1984e3748666bd714" +dependencies = [ + "alloy-primitives", + "bumpalo", + "either", + "num-bigint", + "num-rational", + "semver 1.0.23", + "solar-data-structures", + "solar-interface", + "solar-macros", + "strum", + "typed-arena", +] + +[[package]] +name = "solar-config" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "d40434a61f2c14a9e3777fbc478167bddee9828532fc26c57e416e9277916b09" dependencies = [ - "libc", + "strum", ] [[package]] -name = "signature" -version = "2.2.0" +name = "solar-data-structures" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "71d07263243b313296eca18f18eda3a190902dc3284bf67ceff29b8b54dac3e6" dependencies = [ - "digest 0.10.7", - "rand_core", + "bumpalo", + "index_vec", + "indexmap 2.7.1", + "parking_lot", + "rayon", + "rustc-hash 2.1.0", + "smallvec", ] [[package]] -name = "simple_asn1" -version = "0.6.2" +name = "solar-interface" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "9a87009b6989b2cc44d8381e3b86ff3b90280d54a60321919b6416214cd602f3" dependencies = [ - "num-bigint", - "num-traits", - "thiserror", - "time", + "annotate-snippets", + "anstream", + "anstyle", + "const-hex", + "derive_builder", + "dunce", + "itertools 0.13.0", + "itoa", + "lasso", + "match_cfg", + "normalize-path", + "rayon", + "scc", + "scoped-tls", + "solar-config", + "solar-data-structures", + "solar-macros", + "thiserror 2.0.11", + "tracing", + "unicode-width", ] [[package]] -name = "slab" -version = "0.4.9" +name = "solar-macros" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +checksum = "970d7c774741f786d62cab78290e47d845b0b9c0c9d094a1642aced1d7946036" dependencies = [ - "autocfg", + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "socket2" -version = "0.5.7" +name = "solar-parse" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "2e1e2d07fae218aca1b4cca81216e5c9ad7822516d48a28f11e2eaa8ffa5b249" dependencies = [ - "libc", - "windows-sys 0.52.0", + "alloy-primitives", + "bitflags 2.6.0", + "bumpalo", + "itertools 0.13.0", + "memchr", + "num-bigint", + "num-rational", + "num-traits", + "smallvec", + "solar-ast", + "solar-data-structures", + "solar-interface", + "tracing", ] [[package]] @@ -4804,7 +6270,7 @@ dependencies = [ "futures-util", "hashlink", "hex", - "indexmap 2.4.0", + "indexmap 2.7.1", "log", "memchr", "once_cell", @@ -4817,13 +6283,13 @@ dependencies = [ "sha2", "smallvec", "sqlformat", - "thiserror", + "thiserror 1.0.63", "tokio", "tokio-stream", "tracing", "url", "uuid", - "webpki-roots", + "webpki-roots 0.25.4", ] [[package]] @@ -4902,7 +6368,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror", + "thiserror 1.0.63", "tracing", "uuid", "whoami", @@ -4941,7 +6407,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror", + "thiserror 1.0.63", "tracing", "uuid", "whoami", @@ -5003,7 +6469,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -5014,7 +6480,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -5036,7 +6502,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -5045,6 +6511,39 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "svm-rs" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4197826bb07b996788b9860a95a1fe2c1307b2404a8c66f5ba825c42532b7c3c" +dependencies = [ + "const-hex", + "dirs 5.0.1", + "fs4", + "reqwest", + "semver 1.0.23", + "serde", + "serde_json", + "sha2", + "tempfile", + "thiserror 2.0.11", + "url", + "zip", +] + +[[package]] +name = "svm-rs-builds" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "074faea21171905847a96135b3896e2e0b74373758ca07b96a41c646cc04a8e5" +dependencies = [ + "build_const", + "const-hex", + "semver 1.0.23", + "serde_json", + "svm-rs", +] + [[package]] name = "syn" version = "1.0.109" @@ -5058,9 +6557,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.75" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6af063034fc1935ede7be0122941bafa9bacb949334d090b77ca98b5817c7d9" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -5069,14 +6568,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.3" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b95156f8b577cb59dc0b1df15c6f29a10afc5f8a7ac9786b0b5c68c19149278" +checksum = "b84e4d83a0a6704561302b917a932484e1cae2d8c6354c64be8b7bac1c1fe057" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -5123,7 +6622,7 @@ dependencies = [ "bollard", "bollard-stubs", "bytes", - "dirs", + "dirs 5.0.1", "docker_credential", "either", "futures", @@ -5134,7 +6633,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror", + "thiserror 1.0.63", "tokio", "tokio-stream", "tokio-util", @@ -5252,7 +6751,7 @@ checksum = "a463428890873548472daba5bdcecfe34b89c98518b4bd6cbd8595ac48fc0771" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -5280,7 +6779,16 @@ version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.63", +] + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", ] [[package]] @@ -5291,7 +6799,18 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] @@ -5395,7 +6914,7 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -5419,6 +6938,18 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-socks" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d4770b8024672c1101b3f6733eab95b18007dbe0847a8afe341fcf79e06043f" +dependencies = [ + "either", + "futures-util", + "thiserror 1.0.63", + "tokio", +] + [[package]] name = "tokio-stream" version = "0.1.15" @@ -5431,6 +6962,38 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "tokio-tungstenite" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" +dependencies = [ + "futures-util", + "log", + "rustls 0.23.12", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite 0.24.0", + "webpki-roots 0.26.8", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4bf6fecd69fcdede0ec680aaf474cdab988f9de6bc73d3758f0160e3b7025a" +dependencies = [ + "futures-util", + "log", + "rustls 0.23.12", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite 0.26.1", + "webpki-roots 0.26.8", +] + [[package]] name = "tokio-util" version = "0.7.11" @@ -5456,9 +7019,9 @@ version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.4.0", + "indexmap 2.7.1", "toml_datetime", - "winnow", + "winnow 0.6.18", ] [[package]] @@ -5504,7 +7067,7 @@ dependencies = [ "proc-macro2", "prost-build", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -5645,7 +7208,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -5696,12 +7259,73 @@ dependencies = [ "tracing-serde", ] +[[package]] +name = "transaction-sender" +version = "0.6.1" +dependencies = [ + "alloy 0.11.0", + "anyhow", + "clap", + "foundry-compilers", + "futures-util", + "sqlx", + "tokio", + "tokio-util", + "tracing-subscriber", +] + [[package]] name = "try-lock" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tungstenite" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.1.0", + "httparse", + "log", + "rand", + "rustls 0.23.12", + "rustls-pki-types", + "sha1", + "thiserror 1.0.63", + "utf-8", +] + +[[package]] +name = "tungstenite" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413083a99c579593656008130e29255e54dcaae495be556cc26888f211648c24" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http 1.1.0", + "httparse", + "log", + "rand", + "rustls 0.23.12", + "rustls-pki-types", + "sha1", + "thiserror 2.0.11", + "utf-8", +] + +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + [[package]] name = "typenum" version = "1.17.0" @@ -5774,6 +7398,12 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + [[package]] name = "unicode-xid" version = "0.2.5" @@ -5810,6 +7440,12 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + [[package]] name = "utf8parse" version = "0.2.2" @@ -5855,6 +7491,16 @@ dependencies = [ "libc", ] +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "want" version = "0.3.1" @@ -5898,7 +7544,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -5932,7 +7578,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5956,6 +7602,20 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasmtimer" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + [[package]] name = "web-sys" version = "0.3.70" @@ -5972,6 +7632,15 @@ version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +[[package]] +name = "webpki-roots" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "whoami" version = "1.5.2" @@ -5982,6 +7651,12 @@ dependencies = [ "wasite", ] +[[package]] +name = "widestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + [[package]] name = "winapi" version = "0.3.9" @@ -5998,6 +7673,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -6200,6 +7884,34 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f" +dependencies = [ + "memchr", +] + +[[package]] +name = "ws_stream_wasm" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.1", + "send_wrapper", + "thiserror 1.0.63", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wyz" version = "0.5.1" @@ -6209,6 +7921,12 @@ dependencies = [ "tap", ] +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "zerocopy" version = "0.7.35" @@ -6227,7 +7945,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", ] [[package]] @@ -6247,7 +7965,38 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.75", + "syn 2.0.87", +] + +[[package]] +name = "zip" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae9c1ea7b3a5e1f4b922ff856a129881167511563dc219869afe3787fc0c1a45" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap 2.7.1", + "memchr", + "thiserror 2.0.11", + "zopfli", +] + +[[package]] +name = "zopfli" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5019f391bac5cf252e93bbcc53d039ffd62c7bfb7c150414d61369afe57e946" +dependencies = [ + "bumpalo", + "crc32fast", + "lockfree-object-pool", + "log", + "once_cell", + "simd-adler32", ] [[package]] diff --git a/fhevm-engine/Cargo.toml b/fhevm-engine/Cargo.toml index 0e7bc11b..6b8d8f73 100644 --- a/fhevm-engine/Cargo.toml +++ b/fhevm-engine/Cargo.toml @@ -1,7 +1,6 @@ [workspace] resolver = "2" -members = ["coprocessor", "executor", "fhevm-engine-common", "listener", "sns-executor"] - +members = ["coprocessor", "executor", "fhevm-engine-common", "listener", "sns-executor", "transaction-sender"] [workspace.package] authors = ["Zama"] @@ -13,13 +12,16 @@ anyhow = "1.0.86" bincode = "1.3.3" clap = { version = "4.5", features = ["derive"] } daggy = "0.8.0" +futures-util = "0.3.31" prometheus = "0.13.4" prost = "0.13" rayon = "1.10.0" serde = "1.0.210" sha3 = "0.10.8" +sqlx = { version = "0.7", features = ["runtime-tokio", "tls-rustls", "postgres", "uuid"] } tfhe = { version = "0.10.0", features = ["boolean", "shortint", "integer", "zk-pok", "experimental-force_fft_algo_dif4"] } tokio = { version = "1.38.0", features = ["full"] } +tokio-util = "0.7" tonic = { version = "0.12", features = ["server"] } tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", features = ["fmt", "json"] } diff --git a/fhevm-engine/coprocessor/Cargo.toml b/fhevm-engine/coprocessor/Cargo.toml index da43dac7..b4e4e107 100644 --- a/fhevm-engine/coprocessor/Cargo.toml +++ b/fhevm-engine/coprocessor/Cargo.toml @@ -14,7 +14,9 @@ prometheus = { workspace = true } prost = { workspace = true } rayon = { workspace = true } sha3 = { workspace = true } +sqlx = { workspace = true } tokio = { workspace = true } +tokio-util = { workspace = true } tonic = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } @@ -34,10 +36,8 @@ opentelemetry-semantic-conventions = "0.27.0" regex = "1.10.5" serde_json = "1.0" strum = { version = "0.26", features = ["derive"] } -sqlx = { version = "0.7", features = ["runtime-tokio", "tls-rustls", "postgres", "uuid"] } tonic-health = "0.12" tonic-types = "0.12" -tokio-util = "0.7" tonic-web = "0.12" rand = "0.8.5" diff --git a/fhevm-engine/coprocessor/Dockerfile b/fhevm-engine/coprocessor/Dockerfile index 5afcd530..66224ace 100644 --- a/fhevm-engine/coprocessor/Dockerfile +++ b/fhevm-engine/coprocessor/Dockerfile @@ -1,5 +1,5 @@ # Stage 1: Build -FROM rust:1.82.0-bullseye AS build +FROM rust:1.84.1-bullseye AS build WORKDIR /app diff --git a/fhevm-engine/fhevm-db/Dockerfile b/fhevm-engine/fhevm-db/Dockerfile index e01c8127..a3e90e31 100644 --- a/fhevm-engine/fhevm-db/Dockerfile +++ b/fhevm-engine/fhevm-db/Dockerfile @@ -1,5 +1,5 @@ # Use the Rust image as the base -FROM rust:1.83.0-slim +FROM rust:1.84.1-slim # Install dependencies and tools RUN apt-get update && \ diff --git a/fhevm-engine/listener/Cargo.toml b/fhevm-engine/listener/Cargo.toml index a8da677f..3deed401 100644 --- a/fhevm-engine/listener/Cargo.toml +++ b/fhevm-engine/listener/Cargo.toml @@ -17,6 +17,6 @@ alloy-sol-types = "0.8" alloy-primitives = "0.8" alloy-provider = "0.11" clap = { workspace = true } -futures-util = "=0.3" +futures-util = { workspace = true } serde = { workspace = true } tokio = { workspace = true } diff --git a/fhevm-engine/rust-toolchain.toml b/fhevm-engine/rust-toolchain.toml index 2e2b8c85..fcb78ec5 100644 --- a/fhevm-engine/rust-toolchain.toml +++ b/fhevm-engine/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "1.82.0" +channel = "1.84.1" diff --git a/fhevm-engine/sns-executor/Cargo.toml b/fhevm-engine/sns-executor/Cargo.toml index e54d5a01..216d1d78 100644 --- a/fhevm-engine/sns-executor/Cargo.toml +++ b/fhevm-engine/sns-executor/Cargo.toml @@ -19,11 +19,13 @@ tracing = { workspace = true } tracing-subscriber = { workspace = true } anyhow = { workspace = true } serde = { workspace = true } -hex = "0.4" +sqlx = { workspace = true } +# crates.io dependencies +hex = "0.4" aligned-vec = "0.5.0" num-traits = "=0.2.19" -sqlx = { version = "0.7", features = ["runtime-tokio", "tls-rustls", "postgres", "uuid"] } + serde_json = "=1.0" diff --git a/fhevm-engine/transaction-sender/.gitignore b/fhevm-engine/transaction-sender/.gitignore new file mode 100644 index 00000000..dc2c85de --- /dev/null +++ b/fhevm-engine/transaction-sender/.gitignore @@ -0,0 +1,2 @@ +artifacts +cache diff --git a/fhevm-engine/transaction-sender/Cargo.toml b/fhevm-engine/transaction-sender/Cargo.toml new file mode 100644 index 00000000..3574b422 --- /dev/null +++ b/fhevm-engine/transaction-sender/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "transaction-sender" +version = "0.6.1" +authors.workspace = true +edition.workspace = true +license.workspace = true + +[dependencies] +# workspace dependencies +anyhow = { workspace = true } +clap = { workspace = true } +futures-util = { workspace = true } +sqlx = { workspace = true } +tokio = { workspace = true } +tokio-util = { workspace = true } +tracing-subscriber = { workspace = true } + +# crates.io dependencies +alloy = { version = "0.11.0", features = ["full", "provider-anvil-api", "provider-anvil-node"] } + +[build-dependencies] +# crates.io dependencies +foundry-compilers = { version = "0.13.0", features = ["svm-solc"] } diff --git a/fhevm-engine/transaction-sender/build.rs b/fhevm-engine/transaction-sender/build.rs new file mode 100644 index 00000000..0dca63ed --- /dev/null +++ b/fhevm-engine/transaction-sender/build.rs @@ -0,0 +1,16 @@ +use std::path::Path; + +use foundry_compilers::{Project, ProjectPathsConfig}; + +fn main() { + let paths = ProjectPathsConfig::hardhat(Path::new(env!("CARGO_MANIFEST_DIR"))).unwrap(); + let project = Project::builder() + .paths(paths) + .build(Default::default()) + .unwrap(); + + let output = project.compile().unwrap(); + assert_eq!(output.has_compiler_errors(), false); + + project.rerun_if_sources_changed(); +} diff --git a/fhevm-engine/transaction-sender/contracts/CiphertextStorage.sol b/fhevm-engine/transaction-sender/contracts/CiphertextStorage.sol new file mode 100644 index 00000000..2aa17076 --- /dev/null +++ b/fhevm-engine/transaction-sender/contracts/CiphertextStorage.sol @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.28; + +contract CiphertextStorage { + function addCiphertext( + uint256 ctHandle, + uint256 keyId, + bytes calldata ciphertext64, + bytes calldata ciphertext128 + ) external {} +} diff --git a/fhevm-engine/transaction-sender/contracts/ZKPoKManager.sol b/fhevm-engine/transaction-sender/contracts/ZKPoKManager.sol new file mode 100644 index 00000000..75e3e35f --- /dev/null +++ b/fhevm-engine/transaction-sender/contracts/ZKPoKManager.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.28; + +contract ZKPoKManager { + event VerifyProofResponseCalled(uint256, bytes32[], bytes); + + function verifyProofResponse( + uint256 zkProofId, + bytes32[] calldata handles, + bytes calldata signature + ) public { + emit VerifyProofResponseCalled(zkProofId, handles, signature); + } +} diff --git a/fhevm-engine/transaction-sender/src/bin/transaction-sender.rs b/fhevm-engine/transaction-sender/src/bin/transaction-sender.rs new file mode 100644 index 00000000..68d05a99 --- /dev/null +++ b/fhevm-engine/transaction-sender/src/bin/transaction-sender.rs @@ -0,0 +1,69 @@ +use std::{str::FromStr, sync::Arc}; + +use alloy::{ + network::EthereumWallet, primitives::Address, providers::ProviderBuilder, + signers::local::PrivateKeySigner, transports::http::reqwest::Url, +}; +use clap::Parser; +use tokio::signal::unix::{signal, SignalKind}; +use tokio_util::sync::CancellationToken; +use transaction_sender::{DatabaseConfig, TransactionSender}; + +#[derive(Parser, Debug, Clone)] +#[command(version, about, long_about = None)] +struct Conf { + #[arg(short, long)] + zkpok_manager_address: Address, + + #[arg(short, long)] + ciphertext_storage_address: Address, + + #[arg(short, long)] + gateway_url: Url, + + #[arg(short, long)] + private_key: String, + + #[arg(short, long)] + database_url: Option, +} + +fn install_signal_handlers(cancel_token: CancellationToken) -> anyhow::Result<()> { + let mut sigint = signal(SignalKind::interrupt())?; + let mut sigterm = signal(SignalKind::terminate())?; + tokio::spawn(async move { + tokio::select! { + _ = sigint.recv() => (), + _ = sigterm.recv() => () + } + cancel_token.cancel(); + }); + Ok(()) +} + +#[tokio::main] +async fn main() -> anyhow::Result<()> { + let conf = Conf::parse(); + let signer = PrivateKeySigner::from_str(&conf.private_key.trim())?; + let provider = Arc::new( + ProviderBuilder::new() + .wallet(EthereumWallet::new(signer)) + .on_http(conf.gateway_url.clone()), + ); + let database_url = conf + .database_url + .clone() + .unwrap_or_else(|| std::env::var("DATABASE_URL").expect("DATABASE_URL is undefined")); + let cancel_token = CancellationToken::new(); + let sender = TransactionSender::new( + &conf.zkpok_manager_address, + &conf.ciphertext_storage_address, + provider, + cancel_token.clone(), + DatabaseConfig { url: database_url }, + ); + + install_signal_handlers(cancel_token)?; + + sender.run().await +} diff --git a/fhevm-engine/transaction-sender/src/lib.rs b/fhevm-engine/transaction-sender/src/lib.rs new file mode 100644 index 00000000..b097e735 --- /dev/null +++ b/fhevm-engine/transaction-sender/src/lib.rs @@ -0,0 +1,122 @@ +use std::{sync::Arc, time::Duration}; + +use alloy::{ + network::Ethereum, + primitives::{Address, U256}, + providers::Provider, + sol, +}; +use sqlx::{Pool, Postgres}; +use tokio::time::sleep; +use tokio_util::sync::CancellationToken; + +sol!( + #[sol(rpc)] + ZKPoKManager, + "artifacts/ZKPoKManager.sol/ZKPoKManager.json" +); + +sol!( + #[sol(rpc)] + CiphertextStorage, + "artifacts/CiphertextStorage.sol/CiphertextStorage.json" +); + +#[derive(Clone)] +pub struct DatabaseConfig { + pub url: String, +} + +#[derive(Clone)] +pub struct TransactionSender + Clone + 'static> { + zkpok_manager_address: Address, + ciphertext_storage_address: Address, + provider: Arc

, + cancel_token: CancellationToken, + database_conf: DatabaseConfig, +} + +impl + Clone + 'static> TransactionSender

{ + pub fn new( + zkpok_manager_address: &Address, + ciphertext_storage_address: &Address, + provider: Arc

, + cancel_token: CancellationToken, + database_conf: DatabaseConfig, + ) -> Self { + TransactionSender { + zkpok_manager_address: zkpok_manager_address.clone(), + ciphertext_storage_address: ciphertext_storage_address.clone(), + provider, + cancel_token, + database_conf, + } + } + + pub async fn run(&self) -> anyhow::Result<()> { + let db_pool = sqlx::postgres::PgPoolOptions::new() + .max_connections(2) + .connect(&self.database_conf.url) + .await?; + + let verify_proofs = { + let sender = (*self).clone(); + let db_pool = db_pool.clone(); + tokio::spawn(async move { + let ret = sender.verify_proofs_run(db_pool).await; + sender.cancel_token.cancel(); + ret + }) + }; + + let add_ciphertexts = { + let sender = (*self).clone(); + let db_pool = db_pool.clone(); + tokio::spawn(async move { + let ret = sender.add_ciphertexts_run(db_pool).await; + sender.cancel_token.cancel(); + ret + }) + }; + + let (verify_proofs, add_ciphetexts) = tokio::join!(verify_proofs, add_ciphertexts); + verify_proofs??; + add_ciphetexts??; + Ok(()) + } + + async fn verify_proofs_run(&self, db_pool: Pool) -> anyhow::Result<()> { + let zkpok_manager = ZKPoKManager::new(self.zkpok_manager_address, &self.provider); + loop { + if self.cancel_token.is_cancelled() { + break; + } + + let txn = zkpok_manager + .verifyProofResponse(U256::from(42), [].into(), (&[]).into()) + .into_transaction_request(); + self.provider + .send_transaction(txn) + .await? + .with_required_confirmations(1) + .get_receipt() + .await?; + + sleep(Duration::from_millis(300)).await; + } + Ok(()) + } + + async fn add_ciphertexts_run(&self, db_pool: Pool) -> anyhow::Result<()> { + let ciphertext_storage = + CiphertextStorage::new(self.ciphertext_storage_address, &self.provider); + loop { + if self.cancel_token.is_cancelled() { + break; + } + + sleep(Duration::from_millis(300)).await; + } + Ok(()) + } +} diff --git a/fhevm-engine/transaction-sender/tests/integration_test.rs b/fhevm-engine/transaction-sender/tests/integration_test.rs new file mode 100644 index 00000000..85ccf83b --- /dev/null +++ b/fhevm-engine/transaction-sender/tests/integration_test.rs @@ -0,0 +1,56 @@ +use std::sync::Arc; + +use alloy::{providers::ProviderBuilder, sol}; +use futures_util::StreamExt; +use tokio_util::sync::CancellationToken; +use transaction_sender::{DatabaseConfig, TransactionSender}; + +sol!( + #[sol(rpc)] + ZKPoKManager, + "artifacts/ZKPoKManager.sol/ZKPoKManager.json" +); + +sol!( + #[sol(rpc)] + CiphertextStorage, + "artifacts/CiphertextStorage.sol/CiphertextStorage.json" +); + +#[tokio::test] +async fn verify_proof_response() -> anyhow::Result<()> { + let provider = Arc::new(ProviderBuilder::new().on_anvil_with_wallet()); + let zkpok_manager = ZKPoKManager::deploy(&provider).await?; + let ciphertext_storage = CiphertextStorage::deploy(&provider).await?; + let cancel_token = CancellationToken::new(); + let txn_sender = TransactionSender::new( + &zkpok_manager.address(), + &ciphertext_storage.address(), + provider.clone(), + cancel_token.clone(), + DatabaseConfig { + url: std::env::var("DATABASE_URL").expect("DATABASE_URL is undefined"), + }, + ); + + let event_filter = zkpok_manager + .VerifyProofResponseCalled_filter() + .watch() + .await?; + + let run_handle = tokio::spawn(async move { txn_sender.run().await }); + + let event = event_filter + .into_stream() + .take(1) + .collect::>() + .await + .first() + .unwrap() + .clone() + .unwrap(); + + cancel_token.cancel(); + run_handle.await??; + Ok(()) +}