diff --git a/Cargo.lock b/Cargo.lock index 3edfcc7..b5c7d2e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,16 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "Inflector" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" -dependencies = [ - "lazy_static", - "regex", -] - [[package]] name = "addchain" version = "0.2.1" @@ -38,17 +28,6 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures 0.2.17", -] - [[package]] name = "ahash" version = "0.8.12" @@ -274,7 +253,7 @@ dependencies = [ "alloy-rpc-types-any", "alloy-rpc-types-eth", "alloy-serde", - "alloy-signer 1.0.41", + "alloy-signer", "alloy-sol-types", "async-trait", "auto_impl", @@ -329,7 +308,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "1.4.1" -source = "git+https://github.com/ziren-patches/core.git?tag=patch-alloy-primitives-1.4.1-ziren-1.2.7#0d034202c9977acd601399efdd9c30fd1c1a08a0" +source = "git+https://github.com/ziren-patches/core.git?branch=patch-alloy-primitives-1.4.1#59313700f710f1373a5b4cdc05c51dc3227d8064" dependencies = [ "alloy-rlp", "bytes", @@ -370,7 +349,7 @@ dependencies = [ "alloy-rpc-types-debug", "alloy-rpc-types-eth", "alloy-rpc-types-trace", - "alloy-signer 1.0.41", + "alloy-signer", "alloy-sol-types", "alloy-transport", "alloy-transport-http", @@ -382,7 +361,7 @@ dependencies = [ "either", "futures", "futures-utils-wasm", - "lru 0.13.0", + "lru", "parking_lot 0.12.5", "pin-project", "reqwest 0.12.28", @@ -564,21 +543,6 @@ dependencies = [ "thiserror 2.0.18", ] -[[package]] -name = "alloy-signer" -version = "1.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2425c6f314522c78e8198979c8cbf6769362be4da381d4152ea8eefce383535d" -dependencies = [ - "alloy-primitives", - "async-trait", - "auto_impl", - "either", - "elliptic-curve", - "k256", - "thiserror 2.0.18", -] - [[package]] name = "alloy-sol-macro" version = "1.5.7" @@ -601,7 +565,7 @@ checksum = "489f1620bb7e2483fb5819ed01ab6edc1d2f93939dce35a5695085a1afd1d699" dependencies = [ "alloy-sol-macro-input", "const-hex", - "heck 0.5.0", + "heck", "indexmap 2.13.0", "proc-macro-error2", "proc-macro2", @@ -619,7 +583,7 @@ checksum = "56cef806ad22d4392c5fc83cf8f2089f988eb99c7067b4e0c6f1971fc1cca318" dependencies = [ "const-hex", "dunce", - "heck 0.5.0", + "heck", "macro-string", "proc-macro2", "quote", @@ -698,7 +662,7 @@ dependencies = [ "rustls 0.23.37", "serde_json", "tokio", - "tokio-tungstenite 0.26.2", + "tokio-tungstenite", "tracing", "ws_stream_wasm", ] @@ -1093,15 +1057,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "ascii-canvas" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" -dependencies = [ - "term", -] - [[package]] name = "async-stream" version = "0.3.6" @@ -1301,12 +1256,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - [[package]] name = "base64" version = "0.21.7" @@ -1325,12 +1274,6 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" -[[package]] -name = "bech32" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" - [[package]] name = "bimap" version = "0.6.3" @@ -1357,7 +1300,7 @@ dependencies = [ "clang-sys", "itertools 0.13.0", "log", - "prettyplease 0.2.37", + "prettyplease", "proc-macro2", "quote", "regex", @@ -1366,30 +1309,15 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec 0.6.3", -] - [[package]] name = "bit-set" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "bit-vec 0.8.0", + "bit-vec", ] -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - [[package]] name = "bit-vec" version = "0.8.0" @@ -1457,7 +1385,20 @@ checksum = "b79834656f71332577234b50bfc009996f7449e0c056884e6a02492ded0ca2f3" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq 0.4.2", + "constant_time_eq", +] + +[[package]] +name = "blake3" +version = "1.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9e454fc11f76977dc803893aff6304ed33d6a26efae8696573bea74baa27ae" +dependencies = [ + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures 0.3.0", ] [[package]] @@ -1494,7 +1435,7 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/ziren-patches/bls12_381?tag=patch-0.8.0-ziren-1.2.7#97b215f80e9bfab9ad6641e41b005b6d8e58f748" +source = "git+https://github.com/ziren-patches/bls12_381?branch=patch-0.8.0#bcf9397426410acc171ad625416b508dc913be8e" dependencies = [ "cfg-if", "ff 0.13.1", @@ -1541,16 +1482,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "sha2", - "tinyvec", -] - [[package]] name = "bumpalo" version = "3.20.2" @@ -1598,26 +1529,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bzip2" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" -dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" -dependencies = [ - "cc", - "pkg-config", -] - [[package]] name = "c-kzg" version = "2.1.7" @@ -1736,16 +1647,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - [[package]] name = "clang-sys" version = "1.8.1" @@ -1785,7 +1686,7 @@ version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1110bd8a634a1ab8cb04345d8d878267d57c3cf1b38d91b71af6686408bbca6a" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.117", @@ -1806,58 +1707,6 @@ dependencies = [ "encoding_rs", ] -[[package]] -name = "coins-bip32" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b6be4a5df2098cd811f3194f64ddb96c267606bffd9689ac7b0160097b01ad3" -dependencies = [ - "bs58", - "coins-core", - "digest 0.10.7", - "hmac", - "k256", - "serde", - "sha2", - "thiserror 1.0.69", -] - -[[package]] -name = "coins-bip39" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db8fba409ce3dc04f7d804074039eb68b960b0829161f8e06c95fea3f122528" -dependencies = [ - "bitvec", - "coins-bip32", - "hmac", - "once_cell", - "pbkdf2 0.12.2", - "rand 0.8.5", - "sha2", - "thiserror 1.0.69", -] - -[[package]] -name = "coins-core" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5286a0843c21f8367f7be734f89df9b822e0321d8bcce8d6e735aadff7d74979" -dependencies = [ - "base64 0.21.7", - "bech32", - "bs58", - "digest 0.10.7", - "generic-array 0.14.7", - "hex", - "ripemd", - "serde", - "serde_derive", - "sha2", - "sha3", - "thiserror 1.0.69", -] - [[package]] name = "colorchoice" version = "1.0.5" @@ -1915,12 +1764,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "constant_time_eq" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" - [[package]] name = "constant_time_eq" version = "0.4.2" @@ -2125,15 +1968,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "ctr" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" -dependencies = [ - "cipher", -] - [[package]] name = "ctrlc" version = "3.5.2" @@ -2339,37 +2173,6 @@ version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" -[[package]] -name = "defmt" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" -dependencies = [ - "bitflags 1.3.2", - "defmt-macros", -] - -[[package]] -name = "defmt-macros" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" -dependencies = [ - "defmt-parser", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "defmt-parser" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" -dependencies = [ - "thiserror 2.0.18", -] - [[package]] name = "der" version = "0.7.10" @@ -2486,16 +2289,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.4.1" @@ -2508,17 +2301,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "dispatch2" version = "0.3.1" @@ -2572,6 +2354,33 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" +[[package]] +name = "dynasm" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33dc03612f42465a8ed7f5e354bc2b79ba54cedefa81d5bd3a064f1835adaba8" +dependencies = [ + "bitflags 1.3.2", + "byteorder", + "lazy_static", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "dynasmrt" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7dccc31a678058996aef614f6bd418ced384da70f284e83e2b7bf29b27b6a28" +dependencies = [ + "byteorder", + "dynasm", + "fnv", + "memmap2 0.5.10", +] + [[package]] name = "ecdsa" version = "0.16.9" @@ -2635,15 +2444,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "ena" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1" -dependencies = [ - "log", -] - [[package]] name = "encode_unicode" version = "1.0.0" @@ -2659,31 +2459,13 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "enr" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" -dependencies = [ - "base64 0.21.7", - "bytes", - "hex", - "k256", - "log", - "rand 0.8.5", - "rlp", - "serde", - "sha3", - "zeroize", -] - [[package]] name = "enum-as-inner" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.117", @@ -2730,29 +2512,6 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "env_filter" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900d271a03799a1ee8d1ca9b19893b48ca674a9284fefcfb85f05e74ed314217" -dependencies = [ - "log", - "regex", -] - -[[package]] -name = "env_logger" -version = "0.11.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de671bd27a75a797dc9ae289ba1e77276e75e2026408aab65185384e2d5cd3f6" -dependencies = [ - "anstream", - "anstyle", - "env_filter", - "jiff", - "log", -] - [[package]] name = "equivalent" version = "1.0.2" @@ -2769,28 +2528,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "eth-keystore" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" -dependencies = [ - "aes", - "ctr", - "digest 0.10.7", - "hex", - "hmac", - "pbkdf2 0.11.0", - "rand 0.8.5", - "scrypt", - "serde", - "serde_json", - "sha2", - "sha3", - "thiserror 1.0.69", - "uuid 0.8.2", -] - [[package]] name = "eth-proofs" version = "0.1.0" @@ -2824,308 +2561,12 @@ dependencies = [ ] [[package]] -name = "ethabi" -version = "18.0.0" +name = "eyre" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" dependencies = [ - "ethereum-types", - "hex", - "once_cell", - "regex", - "serde", - "serde_json", - "sha3", - "thiserror 1.0.69", - "uint", -] - -[[package]] -name = "ethbloom" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "primitive-types", - "scale-info", - "uint", -] - -[[package]] -name = "ethers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" -dependencies = [ - "ethers-addressbook", - "ethers-contract", - "ethers-core", - "ethers-etherscan", - "ethers-middleware", - "ethers-providers", - "ethers-signers", - "ethers-solc", -] - -[[package]] -name = "ethers-addressbook" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" -dependencies = [ - "ethers-core", - "once_cell", - "serde", - "serde_json", -] - -[[package]] -name = "ethers-contract" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" -dependencies = [ - "const-hex", - "ethers-contract-abigen", - "ethers-contract-derive", - "ethers-core", - "ethers-providers", - "futures-util", - "once_cell", - "pin-project", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "ethers-contract-abigen" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" -dependencies = [ - "Inflector", - "const-hex", - "dunce", - "ethers-core", - "ethers-etherscan", - "eyre", - "prettyplease 0.2.37", - "proc-macro2", - "quote", - "regex", - "reqwest 0.11.27", - "serde", - "serde_json", - "syn 2.0.117", - "toml", - "walkdir", -] - -[[package]] -name = "ethers-contract-derive" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" -dependencies = [ - "Inflector", - "const-hex", - "ethers-contract-abigen", - "ethers-core", - "proc-macro2", - "quote", - "serde_json", - "syn 2.0.117", -] - -[[package]] -name = "ethers-core" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" -dependencies = [ - "arrayvec", - "bytes", - "cargo_metadata", - "chrono", - "const-hex", - "elliptic-curve", - "ethabi", - "generic-array 0.14.7", - "k256", - "num_enum", - "once_cell", - "open-fastrlp", - "rand 0.8.5", - "rlp", - "serde", - "serde_json", - "strum 0.26.3", - "syn 2.0.117", - "tempfile", - "thiserror 1.0.69", - "tiny-keccak", - "unicode-xid", -] - -[[package]] -name = "ethers-etherscan" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" -dependencies = [ - "chrono", - "ethers-core", - "reqwest 0.11.27", - "semver 1.0.27", - "serde", - "serde_json", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "ethers-middleware" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" -dependencies = [ - "async-trait", - "auto_impl", - "ethers-contract", - "ethers-core", - "ethers-etherscan", - "ethers-providers", - "ethers-signers", - "futures-channel", - "futures-locks", - "futures-util", - "instant", - "reqwest 0.11.27", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tracing", - "tracing-futures", - "url", -] - -[[package]] -name = "ethers-providers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" -dependencies = [ - "async-trait", - "auto_impl", - "base64 0.21.7", - "bytes", - "const-hex", - "enr", - "ethers-core", - "futures-core", - "futures-timer", - "futures-util", - "hashers", - "http 0.2.12", - "instant", - "jsonwebtoken", - "once_cell", - "pin-project", - "reqwest 0.11.27", - "serde", - "serde_json", - "thiserror 1.0.69", - "tokio", - "tokio-tungstenite 0.20.1", - "tracing", - "tracing-futures", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "ws_stream_wasm", -] - -[[package]] -name = "ethers-signers" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" -dependencies = [ - "async-trait", - "coins-bip32", - "coins-bip39", - "const-hex", - "elliptic-curve", - "eth-keystore", - "ethers-core", - "rand 0.8.5", - "sha2", - "thiserror 1.0.69", - "tracing", -] - -[[package]] -name = "ethers-solc" -version = "2.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" -dependencies = [ - "cfg-if", - "const-hex", - "dirs", - "dunce", - "ethers-core", - "glob", - "home", - "md-5", - "num_cpus", - "once_cell", - "path-slash", - "rayon", - "regex", - "semver 1.0.27", - "serde", - "serde_json", - "solang-parser", - "svm-rs", - "thiserror 1.0.69", - "tiny-keccak", - "tokio", - "tracing", - "walkdir", - "yansi", -] - -[[package]] -name = "eyre" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" -dependencies = [ - "indenter", + "indenter", "once_cell", ] @@ -3202,6 +2643,16 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "filetime" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" +dependencies = [ + "cfg-if", + "libc", +] + [[package]] name = "find-msvc-tools" version = "0.1.9" @@ -3284,16 +2735,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fs2" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "funty" version = "2.0.0" @@ -3348,16 +2789,6 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" -[[package]] -name = "futures-locks" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" -dependencies = [ - "futures-channel", - "futures-task", -] - [[package]] name = "futures-macro" version = "0.3.32" @@ -3381,16 +2812,6 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" -dependencies = [ - "gloo-timers", - "send_wrapper 0.4.0", -] - [[package]] name = "futures-util" version = "0.3.32" @@ -3414,21 +2835,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" -[[package]] -name = "fxhash" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" -dependencies = [ - "byteorder", -] - -[[package]] -name = "gcd" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" - [[package]] name = "generic-array" version = "0.14.7" @@ -3517,18 +2923,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" -[[package]] -name = "gloo-timers" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" -dependencies = [ - "futures-channel", - "futures-core", - "js-sys", - "wasm-bindgen", -] - [[package]] name = "group" version = "0.12.1" @@ -3652,50 +3046,6 @@ dependencies = [ "rayon", ] -[[package]] -name = "halo2curves" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d380afeef3f1d4d3245b76895172018cfb087d9976a7cabcd5597775b2933e07" -dependencies = [ - "blake2", - "digest 0.10.7", - "ff 0.13.1", - "group 0.13.0", - "halo2derive", - "hex", - "lazy_static", - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "pairing 0.23.0", - "pasta_curves 0.5.1", - "paste", - "rand 0.8.5", - "rand_core 0.6.4", - "rayon", - "serde", - "serde_arrays 0.1.0", - "sha2", - "static_assertions", - "subtle", - "unroll", -] - -[[package]] -name = "halo2derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb99e7492b4f5ff469d238db464131b86c2eaac814a78715acba369f64d2c76" -dependencies = [ - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -3735,21 +3085,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "hashers" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" -dependencies = [ - "fxhash", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -3767,9 +3102,6 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] [[package]] name = "hex-conservative" @@ -3849,15 +3181,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "home" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" -dependencies = [ - "windows-sys 0.61.2", -] - [[package]] name = "host" version = "0.1.0" @@ -4287,24 +3610,6 @@ dependencies = [ "parity-scale-codec", ] -[[package]] -name = "impl-rlp" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" -dependencies = [ - "serde", -] - [[package]] name = "impl-trait-for-tuples" version = "0.2.3" @@ -4358,15 +3663,6 @@ dependencies = [ "web-time", ] -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "generic-array 0.14.7", -] - [[package]] name = "instant" version = "0.1.13" @@ -4423,15 +3719,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -4456,31 +3743,6 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" -[[package]] -name = "jiff" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" -dependencies = [ - "defmt", - "jiff-static", - "log", - "portable-atomic", - "portable-atomic-util", - "serde_core", -] - -[[package]] -name = "jiff-static" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "jobserver" version = "0.1.34" @@ -4501,20 +3763,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "jsonwebtoken" -version = "8.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" -dependencies = [ - "base64 0.21.7", - "pem", - "ring 0.16.20", - "serde", - "serde_json", - "simple_asn1", -] - [[package]] name = "jubjub" version = "0.9.0" @@ -4532,7 +3780,7 @@ dependencies = [ [[package]] name = "k256" version = "0.13.4" -source = "git+https://github.com/ziren-patches/elliptic-curves?tag=patch-k256-0.13.4-ziren-1.2.7#5d641926a5ea6b7dee8b3a1410a49162aeb66ebf" +source = "git+https://github.com/ziren-patches/elliptic-curves?branch=patch-k256-0.13.4#8266b228a39402a0ba68d644b7f26b85b5112fe3" dependencies = [ "cfg-if", "ecdsa", @@ -4567,46 +3815,16 @@ dependencies = [ [[package]] name = "kzg-rs" version = "0.2.7" -source = "git+https://github.com/ziren-patches/kzg-rs?tag=patch-0.2.7-ziren-1.2.7#8288c61a5917f5227e156b5660fbcfc4c3b14220" +source = "git+https://github.com/ziren-patches/kzg-rs?branch=patch-0.2.7#855ea697cd8c5ca9038e3a3ceb2c0efcd88aec29" dependencies = [ "bls12_381 0.8.0", "ff 0.13.1", "hex", - "serde_arrays 0.2.0", + "serde_arrays", "sha2", "spin 0.9.8", ] -[[package]] -name = "lalrpop" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cb077ad656299f160924eb2912aa147d7339ea7d69e1b5517326fdcec3c1ca" -dependencies = [ - "ascii-canvas", - "bit-set 0.5.3", - "ena", - "itertools 0.11.0", - "lalrpop-util", - "petgraph 0.6.5", - "regex", - "regex-syntax", - "string_cache", - "term", - "tiny-keccak", - "unicode-xid", - "walkdir", -] - -[[package]] -name = "lalrpop-util" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507460a910eb7b32ee961886ff48539633b788a36b65692b95f225b844c82553" -dependencies = [ - "regex-automata", -] - [[package]] name = "lazy_static" version = "1.5.0" @@ -4686,12 +3904,6 @@ dependencies = [ "serde", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - [[package]] name = "linux-raw-sys" version = "0.12.1" @@ -4715,18 +3927,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" - -[[package]] -name = "lru" -version = "0.12.5" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -dependencies = [ - "hashbrown 0.15.5", -] +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lru" @@ -4798,20 +4001,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] -name = "md-5" -version = "0.10.6" +name = "memchr" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "memfd" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57804b2c9b69967f1536a56f86297e367a33b19e98852ed624b84551cdbc0d90" dependencies = [ - "cfg-if", - "digest 0.10.7", + "rustix", ] [[package]] -name = "memchr" -version = "2.8.0" +name = "memmap2" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" +dependencies = [ + "libc", +] + +[[package]] +name = "memmap2" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" +dependencies = [ + "libc", +] [[package]] name = "memuse" @@ -4889,12 +4109,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "multimap" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" - [[package]] name = "multimap" version = "0.10.1" @@ -4918,12 +4132,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - [[package]] name = "nix" version = "0.31.2" @@ -5003,7 +4211,6 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", - "rand 0.8.5", ] [[package]] @@ -5124,18 +4331,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" -[[package]] -name = "nums" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3c74f925fb8cfc49a8022f2afce48a0683b70f9e439885594e84c5edbf5b01" -dependencies = [ - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "rand 0.8.5", -] - [[package]] name = "nybbles" version = "0.3.4" @@ -5231,7 +4426,7 @@ dependencies = [ "alloy-primitives", "alloy-provider", "alloy-rpc-types-eth", - "alloy-signer 1.0.41", + "alloy-signer", "op-alloy-consensus", "op-alloy-rpc-types", ] @@ -5278,31 +4473,6 @@ dependencies = [ "revm", ] -[[package]] -name = "open-fastrlp" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" -dependencies = [ - "arrayvec", - "auto_impl", - "bytes", - "ethereum-types", - "open-fastrlp-derive", -] - -[[package]] -name = "open-fastrlp-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" -dependencies = [ - "bytes", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "openssl" version = "0.10.76" @@ -5362,7 +4532,7 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "p256" version = "0.13.2" -source = "git+https://github.com/ziren-patches/elliptic-curves?tag=patch-p256-0.13.2-ziren-1.2.7#91874d8de3e78b2f71d2096684189c687eb55cf3" +source = "git+https://github.com/ziren-patches/elliptic-curves?branch=patch-p256-0.13.2#a6f1a1fb07020d00f627725a20dc336983be3946" dependencies = [ "ecdsa", "elliptic-curve", @@ -5374,109 +4544,93 @@ dependencies = [ [[package]] name = "p3-air" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ "p3-field", "p3-matrix", + "tracing", ] [[package]] -name = "p3-bn254-fr" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +name = "p3-bn254" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "ff 0.13.1", - "halo2curves", "num-bigint 0.4.6", "p3-field", "p3-poseidon2", "p3-symmetric", - "rand 0.8.5", + "p3-util", + "paste", + "rand 0.10.0", "serde", ] [[package]] name = "p3-challenger" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ "p3-field", "p3-maybe-rayon", + "p3-monty-31", "p3-symmetric", "p3-util", - "serde", - "tracing", -] - -[[package]] -name = "p3-circle" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-challenger", - "p3-commit", - "p3-dft", - "p3-field", - "p3-fri", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "serde", "tracing", ] [[package]] name = "p3-commit" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "p3-challenger", "p3-dft", "p3-field", + "p3-interpolation", "p3-matrix", + "p3-multilinear-util", "p3-util", "serde", ] [[package]] name = "p3-dft" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "p3-field", "p3-matrix", "p3-maybe-rayon", "p3-util", + "spin 0.10.1", "tracing", ] [[package]] name = "p3-field" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "num-bigint 0.4.6", - "num-integer", - "num-traits", - "nums", "p3-maybe-rayon", "p3-util", - "rand 0.8.5", + "paste", + "rand 0.10.0", "serde", "tracing", ] [[package]] name = "p3-fri" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "p3-challenger", "p3-commit", "p3-dft", @@ -5485,15 +4639,17 @@ dependencies = [ "p3-matrix", "p3-maybe-rayon", "p3-util", - "rand 0.8.5", + "rand 0.10.0", "serde", + "spin 0.10.1", + "thiserror 2.0.18", "tracing", ] [[package]] name = "p3-interpolation" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ "p3-field", "p3-matrix", @@ -5501,188 +4657,183 @@ dependencies = [ "p3-util", ] -[[package]] -name = "p3-keccak" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" -dependencies = [ - "itertools 0.13.0", - "p3-field", - "p3-symmetric", - "p3-util", - "tiny-keccak", -] - [[package]] name = "p3-keccak-air" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ "p3-air", "p3-field", "p3-matrix", "p3-maybe-rayon", "p3-util", + "rand 0.10.0", "tracing", ] [[package]] name = "p3-koala-bear" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ + "p3-challenger", "p3-field", "p3-mds", "p3-monty-31", + "p3-poseidon1", "p3-poseidon2", "p3-symmetric", - "rand 0.8.5", - "serde", + "rand 0.10.0", ] [[package]] name = "p3-matrix" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "p3-field", "p3-maybe-rayon", "p3-util", - "rand 0.8.5", + "rand 0.10.0", "serde", "tracing", - "transpose", ] [[package]] name = "p3-maybe-rayon" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ "rayon", ] [[package]] name = "p3-mds" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", "p3-dft", "p3-field", - "p3-matrix", "p3-symmetric", "p3-util", - "rand 0.8.5", + "rand 0.10.0", ] [[package]] name = "p3-merkle-tree" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "p3-commit", "p3-field", "p3-matrix", "p3-maybe-rayon", "p3-symmetric", "p3-util", - "rand 0.8.5", + "rand 0.10.0", "serde", + "thiserror 2.0.18", "tracing", ] [[package]] -name = "p3-mersenne-31" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +name = "p3-monty-31" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "num-bigint 0.4.6", "p3-dft", "p3-field", "p3-matrix", "p3-maybe-rayon", "p3-mds", + "p3-poseidon1", "p3-poseidon2", "p3-symmetric", "p3-util", - "rand 0.8.5", + "paste", + "rand 0.10.0", "serde", + "spin 0.10.1", + "tracing", ] [[package]] -name = "p3-monty-31" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +name = "p3-multilinear-util" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", - "num-bigint 0.4.6", - "p3-dft", + "itertools 0.14.0", "p3-field", "p3-matrix", "p3-maybe-rayon", - "p3-mds", - "p3-poseidon2", - "p3-symmetric", "p3-util", - "rand 0.8.5", + "rand 0.10.0", "serde", - "serde_json", "tracing", - "transpose", +] + +[[package]] +name = "p3-poseidon1" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" +dependencies = [ + "p3-field", + "p3-symmetric", + "rand 0.10.0", ] [[package]] name = "p3-poseidon2" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "gcd", "p3-field", "p3-mds", "p3-symmetric", - "rand 0.8.5", - "serde", + "p3-util", + "rand 0.10.0", ] [[package]] name = "p3-symmetric" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "p3-field", + "p3-util", "serde", ] [[package]] name = "p3-uni-stark" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "p3-air", "p3-challenger", "p3-commit", - "p3-dft", "p3-field", "p3-matrix", "p3-maybe-rayon", "p3-util", "serde", + "thiserror 2.0.18", "tracing", ] [[package]] name = "p3-util" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "lock_api", "serde", + "transpose", ] [[package]] @@ -5779,17 +4930,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "password-hash" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" -dependencies = [ - "base64ct", - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "pasta_curves" version = "0.4.1" @@ -5814,56 +4954,17 @@ dependencies = [ "blake2b_simd", "ff 0.13.1", "group 0.13.0", - "hex", "lazy_static", "rand 0.8.5", - "serde", - "static_assertions", - "subtle", -] - -[[package]] -name = "paste" -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 = "pbkdf2" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" -dependencies = [ - "digest 0.10.7", - "hmac", - "password-hash", - "sha2", -] - -[[package]] -name = "pbkdf2" -version = "0.12.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" -dependencies = [ - "digest 0.10.7", - "hmac", + "static_assertions", + "subtle", ] [[package]] -name = "pem" -version = "1.1.1" +name = "paste" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" -dependencies = [ - "base64 0.13.1", -] +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pem-rfc7468" @@ -5920,37 +5021,17 @@ dependencies = [ "rustc_version 0.4.1", ] -[[package]] -name = "phf" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" -dependencies = [ - "phf_macros 0.11.3", - "phf_shared 0.11.3", -] - [[package]] name = "phf" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ - "phf_macros 0.13.1", - "phf_shared 0.13.1", + "phf_macros", + "phf_shared", "serde", ] -[[package]] -name = "phf_generator" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" -dependencies = [ - "phf_shared 0.11.3", - "rand 0.8.5", -] - [[package]] name = "phf_generator" version = "0.13.1" @@ -5958,20 +5039,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" dependencies = [ "fastrand", - "phf_shared 0.13.1", -] - -[[package]] -name = "phf_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" -dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", - "proc-macro2", - "quote", - "syn 2.0.117", + "phf_shared", ] [[package]] @@ -5980,22 +5048,13 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" dependencies = [ - "phf_generator 0.13.1", - "phf_shared 0.13.1", + "phf_generator", + "phf_shared", "proc-macro2", "quote", "syn 2.0.117", ] -[[package]] -name = "phf_shared" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] - [[package]] name = "phf_shared" version = "0.13.1" @@ -6059,15 +5118,6 @@ version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" -[[package]] -name = "portable-atomic-util" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618" -dependencies = [ - "portable-atomic", -] - [[package]] name = "potential_utf" version = "0.1.4" @@ -6092,22 +5142,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "prettyplease" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" -dependencies = [ - "proc-macro2", - "syn 1.0.109", -] - [[package]] name = "prettyplease" version = "0.2.37" @@ -6121,7 +5155,7 @@ dependencies = [ [[package]] name = "primeorder" version = "0.13.1" -source = "git+https://github.com/ziren-patches/elliptic-curves?tag=patch-p256-0.13.2-ziren-1.2.7#91874d8de3e78b2f71d2096684189c687eb55cf3" +source = "git+https://github.com/ziren-patches/elliptic-curves?branch=patch-p256-0.13.2#a6f1a1fb07020d00f627725a20dc336983be3946" dependencies = [ "elliptic-curve", ] @@ -6134,9 +5168,6 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", - "impl-rlp", - "impl-serde", - "scale-info", "uint", ] @@ -6146,6 +5177,7 @@ version = "0.1.0" dependencies = [ "alloy-eips", "alloy-genesis", + "alloy-primitives", "alloy-rpc-types", "eyre", "reth-chainspec", @@ -6163,7 +5195,31 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ - "toml_edit 0.25.8+spec-1.1.0", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", ] [[package]] @@ -6203,8 +5259,8 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4b45fcc2344c680f5025fe57779faef368840d0bd1f42f216291f0dc4ace4744" dependencies = [ - "bit-set 0.8.0", - "bit-vec 0.8.0", + "bit-set", + "bit-vec", "bitflags 2.11.0", "num-traits", "rand 0.9.2", @@ -6218,12 +5274,12 @@ dependencies = [ [[package]] name = "prost" -version = "0.11.9" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" dependencies = [ "bytes", - "prost-derive 0.11.9", + "prost-derive 0.12.6", ] [[package]] @@ -6238,24 +5294,23 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.11.9" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" +checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" dependencies = [ "bytes", - "heck 0.4.1", + "heck", "itertools 0.10.5", - "lazy_static", "log", - "multimap 0.8.3", + "multimap", + "once_cell", "petgraph 0.6.5", - "prettyplease 0.1.25", - "prost 0.11.9", - "prost-types 0.11.9", + "prettyplease", + "prost 0.12.6", + "prost-types 0.12.6", "regex", - "syn 1.0.109", + "syn 2.0.117", "tempfile", - "which", ] [[package]] @@ -6264,13 +5319,13 @@ version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ - "heck 0.5.0", + "heck", "itertools 0.14.0", "log", - "multimap 0.10.1", + "multimap", "once_cell", "petgraph 0.7.1", - "prettyplease 0.2.37", + "prettyplease", "prost 0.13.5", "prost-types 0.13.5", "regex", @@ -6280,15 +5335,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.11.9" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" dependencies = [ "anyhow", "itertools 0.10.5", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] @@ -6306,11 +5361,11 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.11.9" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" +checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" dependencies = [ - "prost 0.11.9", + "prost 0.12.6", ] [[package]] @@ -6379,7 +5434,7 @@ dependencies = [ "getrandom 0.3.4", "lru-slab", "rand 0.9.2", - "ring 0.17.14", + "ring", "rustc-hash 2.1.1", "rustls 0.23.37", "rustls-pki-types", @@ -6521,9 +5576,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -7238,7 +6293,7 @@ name = "reth-zstd-compressors" version = "1.9.3" source = "git+https://github.com/ziren-patches/reth?branch=patch-1.9.3#fb7e5b4b347ac28d7f3f937698a3b084bd158aa2" dependencies = [ - "zstd 0.13.3", + "zstd", ] [[package]] @@ -7274,7 +6329,7 @@ version = "7.1.1" source = "git+https://github.com/ziren-patches/revm?branch=patch-31.0.2#0cd8a9cffabcc01fd92b8f12d6d601040e0ec88f" dependencies = [ "bitvec", - "phf 0.13.1", + "phf", "revm-primitives", "serde", ] @@ -7435,21 +6490,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", -] - [[package]] name = "ring" version = "0.17.14" @@ -7460,7 +6500,7 @@ dependencies = [ "cfg-if", "getrandom 0.2.17", "libc", - "untrusted 0.9.0", + "untrusted", "windows-sys 0.52.0", ] @@ -7480,19 +6520,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ "bytes", - "rlp-derive", "rustc-hex", ] [[package]] -name = "rlp-derive" -version = "0.1.0" +name = "rmp" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "num-traits", +] + +[[package]] +name = "rmp-serde" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155" +dependencies = [ + "rmp", + "serde", ] [[package]] @@ -7513,6 +6560,7 @@ dependencies = [ "revm-database-interface", "revm-primitives", "revm-state", + "serde", "thiserror 1.0.69", "tokio", "tracing", @@ -7594,19 +6642,6 @@ dependencies = [ "semver 1.0.27", ] -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.11.0", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - [[package]] name = "rustix" version = "1.1.4" @@ -7616,22 +6651,10 @@ dependencies = [ "bitflags 2.11.0", "errno", "libc", - "linux-raw-sys 0.12.1", + "linux-raw-sys", "windows-sys 0.61.2", ] -[[package]] -name = "rustls" -version = "0.20.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" -dependencies = [ - "log", - "ring 0.16.20", - "sct", - "webpki", -] - [[package]] name = "rustls" version = "0.21.12" @@ -7639,7 +6662,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.14", + "ring", "rustls-webpki 0.101.7", "sct", ] @@ -7651,7 +6674,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "758025cb5fccfd3bc2fd74708fd4682be41d99e5dff73c377c0646c6012c73a4" dependencies = [ "once_cell", - "ring 0.17.14", + "ring", "rustls-pki-types", "rustls-webpki 0.103.10", "subtle", @@ -7695,8 +6718,8 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.14", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -7705,9 +6728,9 @@ version = "0.103.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df33b2b81ac578cabaf06b89b0631153a3f416b0a886e8a7a1707fb51abbd1ef" dependencies = [ - "ring 0.17.14", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] @@ -7734,24 +6757,6 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" -[[package]] -name = "salsa20" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" -dependencies = [ - "cipher", -] - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - [[package]] name = "scale-info" version = "2.11.6" @@ -7815,26 +6820,14 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "scrypt" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" -dependencies = [ - "hmac", - "pbkdf2 0.11.0", - "salsa20", - "sha2", -] - [[package]] name = "sct" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.14", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -7937,12 +6930,6 @@ dependencies = [ "pest", ] -[[package]] -name = "send_wrapper" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" - [[package]] name = "send_wrapper" version = "0.6.0" @@ -7959,15 +6946,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde_arrays" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38636132857f68ec3d5f3eb121166d2af33cb55174c4d5ff645db6165cbef0fd" -dependencies = [ - "serde", -] - [[package]] name = "serde_arrays" version = "0.2.0" @@ -8021,15 +6999,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -8177,30 +7146,12 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" -[[package]] -name = "simple_asn1" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d585997b0ac10be3c5ee635f1bab02d512760d14b7c468801ac8a01d9ae5f1d" -dependencies = [ - "num-bigint 0.4.6", - "num-traits", - "thiserror 2.0.18", - "time", -] - [[package]] name = "siphasher" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" -[[package]] -name = "size" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fed904c7fb2856d868b92464fc8fa597fce366edea1a9cbfaa8cb5fe080bd6d" - [[package]] name = "slab" version = "0.4.12" @@ -8246,31 +7197,20 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "solang-parser" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c425ce1c59f4b154717592f0bdf4715c3a1d55058883622d3157e1f0908a5b26" -dependencies = [ - "itertools 0.11.0", - "lalrpop", - "lalrpop-util", - "phf 0.11.3", - "thiserror 1.0.69", - "unicode-xid", -] - [[package]] name = "spin" -version = "0.5.2" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "spin" -version = "0.9.8" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" +dependencies = [ + "lock_api", +] [[package]] name = "spki" @@ -8300,18 +7240,6 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" -[[package]] -name = "string_cache" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" -dependencies = [ - "new_debug_unreachable", - "parking_lot 0.12.5", - "phf_shared 0.11.3", - "precomputed-hash", -] - [[package]] name = "strsim" version = "0.10.0" @@ -8348,7 +7276,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", @@ -8361,7 +7289,7 @@ version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.117", @@ -8370,7 +7298,7 @@ dependencies = [ [[package]] name = "substrate-bn" version = "0.6.0" -source = "git+https://github.com/ziren-patches/bn?tag=patch-0.6.0-ziren-1.2.7#0dfeeb1b7bfc21941b6e4964d678abd094a54a6f" +source = "git+https://github.com/ziren-patches/bn?branch=patch-0.6.0#aba71380457d798039111e6cc0fdf2e0718c6766" dependencies = [ "bytemuck", "byteorder", @@ -8389,26 +7317,6 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "svm-rs" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11297baafe5fa0c99d5722458eac6a5e25c01eb1b8e5cd137f54079093daa7a4" -dependencies = [ - "dirs", - "fs2", - "hex", - "once_cell", - "reqwest 0.11.27", - "semver 1.0.27", - "serde", - "serde_json", - "sha2", - "thiserror 1.0.69", - "url", - "zip", -] - [[package]] name = "syn" version = "1.0.109" @@ -8532,6 +7440,17 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tar" +version = "0.4.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" +dependencies = [ + "filetime", + "libc", + "xattr", +] + [[package]] name = "tempfile" version = "3.27.0" @@ -8541,21 +7460,10 @@ dependencies = [ "fastrand", "getrandom 0.4.2", "once_cell", - "rustix 1.1.4", + "rustix", "windows-sys 0.61.2", ] -[[package]] -name = "term" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" -dependencies = [ - "dirs-next", - "rustversion", - "winapi", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -8735,17 +7643,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-rustls" -version = "0.23.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" -dependencies = [ - "rustls 0.20.9", - "tokio", - "webpki", -] - [[package]] name = "tokio-rustls" version = "0.24.1" @@ -8775,22 +7672,7 @@ dependencies = [ "futures-core", "pin-project-lite", "tokio", - "tokio-util", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" -dependencies = [ - "futures-util", - "log", - "rustls 0.21.12", - "tokio", - "tokio-rustls 0.24.1", - "tungstenite 0.20.1", - "webpki-roots 0.25.4", + "tokio-util", ] [[package]] @@ -8805,7 +7687,7 @@ dependencies = [ "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", - "tungstenite 0.26.2", + "tungstenite", "webpki-roots 0.26.11", ] @@ -8822,27 +7704,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_edit 0.22.27", -] - -[[package]] -name = "toml_datetime" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" -dependencies = [ - "serde", -] - [[package]] name = "toml_datetime" version = "1.1.0+spec-1.1.0" @@ -8852,20 +7713,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "toml_edit" -version = "0.22.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" -dependencies = [ - "indexmap 2.13.0", - "serde", - "serde_spanned", - "toml_datetime 0.6.11", - "toml_write", - "winnow 0.7.15", -] - [[package]] name = "toml_edit" version = "0.25.8+spec-1.1.0" @@ -8873,7 +7720,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16bff38f1d86c47f9ff0647e6838d7bb362522bdf44006c7068c2b1e606f1f3c" dependencies = [ "indexmap 2.13.0", - "toml_datetime 1.1.0+spec-1.1.0", + "toml_datetime", "toml_parser", "winnow 1.0.0", ] @@ -8887,25 +7734,17 @@ dependencies = [ "winnow 1.0.0", ] -[[package]] -name = "toml_write" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" - [[package]] name = "tonic" -version = "0.8.3" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f219fad3b929bef19b1f86fbc0358d35daed8f2cac972037ac0dc10bbb8d5fb" +checksum = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e" dependencies = [ "async-stream", "async-trait", "axum 0.6.20", - "base64 0.13.1", + "base64 0.21.7", "bytes", - "futures-core", - "futures-util", "h2 0.3.27", "http 0.2.12", "http-body 0.4.6", @@ -8913,32 +7752,30 @@ dependencies = [ "hyper-timeout", "percent-encoding", "pin-project", - "prost 0.11.9", - "prost-derive 0.11.9", + "prost 0.12.6", + "rustls 0.21.12", "rustls-native-certs", "rustls-pemfile", "tokio", - "tokio-rustls 0.23.4", + "tokio-rustls 0.24.1", "tokio-stream", - "tokio-util", "tower 0.4.13", "tower-layer", "tower-service", "tracing", - "tracing-futures", ] [[package]] name = "tonic-build" -version = "0.8.4" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf5e9b9c0f7e0a7c027dcfaba7b2c60816c7049171f679d99ee2ff65d0de8c4" +checksum = "9d021fc044c18582b9a2408cd0dd05b1596e3ecdb5c4df822bb0183545683889" dependencies = [ - "prettyplease 0.1.25", + "prettyplease", "proc-macro2", - "prost-build 0.11.9", + "prost-build 0.12.6", "quote", - "syn 1.0.109", + "syn 2.0.117", ] [[package]] @@ -9065,16 +7902,6 @@ dependencies = [ "tracing-subscriber", ] -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -9120,26 +7947,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" -[[package]] -name = "tungstenite" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" -dependencies = [ - "byteorder", - "bytes", - "data-encoding", - "http 0.2.12", - "httparse", - "log", - "rand 0.8.5", - "rustls 0.21.12", - "sha1", - "thiserror 1.0.69", - "url", - "utf-8", -] - [[package]] name = "tungstenite" version = "0.26.2" @@ -9244,22 +8051,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unroll" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad948c1cb799b1a70f836077721a92a35ac177d4daddf4c20a633786d4cf618" -dependencies = [ - "quote", - "syn 1.0.109", -] - -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -9296,16 +8087,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom 0.2.17", - "serde", -] - [[package]] name = "uuid" version = "1.22.0" @@ -9367,16 +8148,6 @@ 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" @@ -9565,16 +8336,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" -dependencies = [ - "ring 0.17.14", - "untrusted 0.9.0", -] - [[package]] name = "webpki-roots" version = "0.25.4" @@ -9599,18 +8360,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - [[package]] name = "widestring" version = "1.2.1" @@ -9633,15 +8382,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -10012,7 +8752,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" dependencies = [ "anyhow", - "heck 0.5.0", + "heck", "wit-parser", ] @@ -10023,9 +8763,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" dependencies = [ "anyhow", - "heck 0.5.0", + "heck", "indexmap 2.13.0", - "prettyplease 0.2.37", + "prettyplease", "syn 2.0.117", "wasm-metadata", "wit-bindgen-core", @@ -10039,7 +8779,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" dependencies = [ "anyhow", - "prettyplease 0.2.37", + "prettyplease", "proc-macro2", "quote", "syn 2.0.117", @@ -10114,7 +8854,7 @@ dependencies = [ "log", "pharos", "rustc_version 0.4.1", - "send_wrapper 0.6.0", + "send_wrapper", "thiserror 2.0.18", "wasm-bindgen", "wasm-bindgen-futures", @@ -10130,6 +8870,16 @@ dependencies = [ "tap", ] +[[package]] +name = "xattr" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" +dependencies = [ + "libc", + "rustix", +] + [[package]] name = "yaml-rust" version = "0.4.5" @@ -10139,12 +8889,6 @@ dependencies = [ "linked-hash-map", ] -[[package]] -name = "yansi" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" - [[package]] name = "yoke" version = "0.8.1" @@ -10268,18 +9012,10 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" dependencies = [ - "aes", "byteorder", - "bzip2", - "constant_time_eq 0.1.5", "crc32fast", "crossbeam-utils", "flate2", - "hmac", - "pbkdf2 0.11.0", - "sha1", - "time", - "zstd 0.11.2+zstd.1.5.2", ] [[package]] @@ -10311,8 +9047,8 @@ dependencies = [ [[package]] name = "zkm-build" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "anyhow", "cargo_metadata", @@ -10322,19 +9058,19 @@ dependencies = [ [[package]] name = "zkm-core-executor" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "anyhow", "bincode", "bytemuck", "elf", "enum-map", - "env_logger", "eyre", "hashbrown 0.14.5", "hex", "itertools 0.13.0", + "libc", "log", "nohash-hasher", "num", @@ -10343,28 +9079,39 @@ dependencies = [ "p3-koala-bear", "p3-maybe-rayon", "p3-symmetric", - "rand 0.8.5", - "rayon-scan", + "rustc-hash 2.1.1", "serde", "serde_json", - "sha2", "strum 0.26.3", "strum_macros 0.26.4", "thiserror 1.0.69", "tiny-keccak", "tracing", - "tracing-subscriber", "typenum", "vec_map", + "zkm-core-jit", "zkm-curves", + "zkm-pcs", "zkm-primitives", - "zkm-stark", +] + +[[package]] +name = "zkm-core-jit" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" +dependencies = [ + "dynasmrt", + "libc", + "memfd", + "memmap2 0.9.11", + "serde", + "thiserror 1.0.69", ] [[package]] name = "zkm-core-machine" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "bincode", "cfg-if", @@ -10388,17 +9135,14 @@ dependencies = [ "p3-poseidon2", "p3-uni-stark", "p3-util", - "rand 0.8.5", "rayon", "rayon-scan", "serde", "serde_json", - "size", "snowbridge-amcl", "static_assertions", "strum 0.26.3", "strum_macros 0.26.4", - "tempfile", "thiserror 1.0.69", "tiny-keccak", "tracing", @@ -10409,14 +9153,14 @@ dependencies = [ "zkm-core-executor", "zkm-curves", "zkm-derive", + "zkm-pcs", "zkm-primitives", - "zkm-stark", ] [[package]] name = "zkm-cuda" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "bincode", "ctrlc", @@ -10433,8 +9177,8 @@ dependencies = [ [[package]] name = "zkm-curves" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "cfg-if", "curve25519-dalek", @@ -10451,14 +9195,14 @@ dependencies = [ "thiserror 1.0.69", "tracing", "typenum", + "zkm-poly", "zkm-primitives", - "zkm-stark", ] [[package]] name = "zkm-derive" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "proc-macro2", "quote", @@ -10467,8 +9211,8 @@ dependencies = [ [[package]] name = "zkm-lib" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "bincode", "cfg-if", @@ -10478,12 +9222,60 @@ dependencies = [ "zkm-primitives", ] +[[package]] +name = "zkm-pcs" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" +dependencies = [ + "arrayref", + "bincode", + "hashbrown 0.14.5", + "itertools 0.13.0", + "num-bigint 0.4.6", + "num-traits", + "p3-air", + "p3-challenger", + "p3-commit", + "p3-dft", + "p3-field", + "p3-fri", + "p3-koala-bear", + "p3-matrix", + "p3-maybe-rayon", + "p3-merkle-tree", + "p3-poseidon2", + "p3-symmetric", + "p3-uni-stark", + "p3-util", + "rayon", + "rayon-scan", + "rmp-serde", + "serde", + "strum 0.26.3", + "strum_macros 0.26.4", + "sysinfo", + "tracing", + "zkm-derive", + "zkm-poly", + "zkm-primitives", +] + +[[package]] +name = "zkm-poly" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" +dependencies = [ + "itertools 0.13.0", + "p3-field", +] + [[package]] name = "zkm-primitives" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "bincode", + "blake3", "hex", "lazy_static", "num-bigint 0.4.6", @@ -10494,28 +9286,31 @@ dependencies = [ "p3-symmetric", "serde", "sha2", + "tracing", ] [[package]] name = "zkm-prover" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "anyhow", "bincode", "clap", "dirs", "eyre", + "hex", "itertools 0.13.0", - "lru 0.12.5", "num-bigint 0.4.6", - "p3-bn254-fr", + "p3-air", + "p3-bn254", "p3-challenger", "p3-commit", "p3-field", "p3-koala-bear", "p3-matrix", "p3-symmetric", + "p3-uni-stark", "p3-util", "rayon", "serde", @@ -10525,24 +9320,23 @@ dependencies = [ "tracing-subscriber", "zkm-core-executor", "zkm-core-machine", + "zkm-pcs", "zkm-primitives", "zkm-recursion-circuit", "zkm-recursion-compiler", "zkm-recursion-core", "zkm-recursion-gnark-ffi", - "zkm-stark", ] [[package]] name = "zkm-recursion-circuit" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "hashbrown 0.14.5", "itertools 0.13.0", - "num-traits", "p3-air", - "p3-bn254-fr", + "p3-bn254", "p3-challenger", "p3-commit", "p3-dft", @@ -10552,28 +9346,26 @@ dependencies = [ "p3-matrix", "p3-symmetric", "p3-util", - "rand 0.8.5", "rayon", "serde", "tracing", "zkm-core-executor", "zkm-core-machine", "zkm-derive", + "zkm-pcs", "zkm-primitives", "zkm-recursion-compiler", "zkm-recursion-core", - "zkm-recursion-gnark-ffi", - "zkm-stark", ] [[package]] name = "zkm-recursion-compiler" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "backtrace", "itertools 0.13.0", - "p3-bn254-fr", + "p3-bn254", "p3-field", "p3-koala-bear", "p3-symmetric", @@ -10581,23 +9373,24 @@ dependencies = [ "tracing", "vec_map", "zkm-core-machine", + "zkm-pcs", "zkm-primitives", "zkm-recursion-core", "zkm-recursion-derive", - "zkm-stark", ] [[package]] name = "zkm-recursion-core" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "backtrace", + "bincode", "ff 0.13.1", "hashbrown 0.14.5", "itertools 0.13.0", "p3-air", - "p3-bn254-fr", + "p3-bn254", "p3-challenger", "p3-commit", "p3-dft", @@ -10613,6 +9406,7 @@ dependencies = [ "p3-util", "rand 0.8.5", "serde", + "sha2", "static_assertions", "thiserror 1.0.69", "tracing", @@ -10620,14 +9414,14 @@ dependencies = [ "zkhash", "zkm-core-machine", "zkm-derive", + "zkm-pcs", "zkm-primitives", - "zkm-stark", ] [[package]] name = "zkm-recursion-derive" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "quote", "syn 1.0.109", @@ -10635,8 +9429,8 @@ dependencies = [ [[package]] name = "zkm-recursion-gnark-ffi" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "anyhow", "bincode", @@ -10653,23 +9447,21 @@ dependencies = [ "sha2", "tempfile", "zkm-core-machine", + "zkm-pcs", "zkm-recursion-compiler", - "zkm-stark", ] [[package]] name = "zkm-sdk" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ - "alloy-primitives", - "alloy-signer 1.7.3", "anyhow", "async-trait", "bincode", "cfg-if", "dirs", - "ethers", + "flate2", "futures", "hashbrown 0.14.5", "hex", @@ -10680,12 +9472,13 @@ dependencies = [ "p3-field", "p3-fri", "p3-koala-bear", - "prost 0.11.9", + "prost 0.12.6", "reqwest 0.11.27", "serde", "serde_json", "strum 0.26.3", "strum_macros 0.26.4", + "tar", "tempfile", "thiserror 1.0.69", "tokio", @@ -10693,63 +9486,21 @@ dependencies = [ "tonic-build", "tracing", "twirp-rs", - "uuid 1.22.0", + "uuid", "vergen", "zkm-build", "zkm-core-executor", "zkm-core-machine", "zkm-cuda", + "zkm-pcs", "zkm-primitives", "zkm-prover", - "zkm-stark", -] - -[[package]] -name = "zkm-stark" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" -dependencies = [ - "arrayref", - "hashbrown 0.14.5", - "itertools 0.13.0", - "num-bigint 0.4.6", - "num-traits", - "p3-air", - "p3-challenger", - "p3-circle", - "p3-commit", - "p3-dft", - "p3-field", - "p3-fri", - "p3-keccak", - "p3-koala-bear", - "p3-matrix", - "p3-maybe-rayon", - "p3-mds", - "p3-merkle-tree", - "p3-mersenne-31", - "p3-poseidon2", - "p3-symmetric", - "p3-uni-stark", - "p3-util", - "rand 0.8.5", - "rayon-scan", - "serde", - "strum 0.26.3", - "strum_macros 0.26.4", - "sysinfo", - "tracing", - "tracing-forest", - "tracing-subscriber", - "zkm-derive", - "zkm-primitives", - "zkm-zkvm", ] [[package]] name = "zkm-zkvm" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "bincode", "cfg-if", @@ -10769,32 +9520,13 @@ version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" -[[package]] -name = "zstd" -version = "0.11.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" -dependencies = [ - "zstd-safe 5.0.2+zstd.1.5.2", -] - [[package]] name = "zstd" version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [ - "zstd-safe 7.2.4", -] - -[[package]] -name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" -dependencies = [ - "libc", - "zstd-sys", + "zstd-safe", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 5fdd4de..7375203 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,10 +48,10 @@ primitives = { path = "./crates/primitives" } provider = { path = "./crates/provider" } # Ziren -zkm-build = { git = "https://github.com/ProjectZKM/Ziren", tag = "v1.2.7" } -zkm-core-executor = { git = "https://github.com/ProjectZKM/Ziren", tag = "v1.2.7" } -zkm-prover = { git = "https://github.com/ProjectZKM/Ziren", tag = "v1.2.7" } -zkm-sdk = { git = "https://github.com/ProjectZKM/Ziren", tag = "v1.2.7" } +zkm-build = { git = "https://github.com/ProjectZKM/Ziren" } +zkm-core-executor = { git = "https://github.com/ProjectZKM/Ziren" } +zkm-prover = { git = "https://github.com/ProjectZKM/Ziren" } +zkm-sdk = { git = "https://github.com/ProjectZKM/Ziren" } # zkm-build = { path = "../Ziren/crates/build" } # zkm-core-executor = { path = "../Ziren/crates/core/executor" } @@ -188,7 +188,7 @@ op-alloy-rpc-types = { git = "https://github.com/ziren-patches/op-alloy", branch # op-alloy-network = { path = "../patch/op-alloy/crates/network" } # op-alloy-rpc-types = { path = "../patch/op-alloy/crates/rpc-types" } -kzg-rs = { git = "https://github.com/ziren-patches/kzg-rs", tag = "patch-0.2.7-ziren-1.2.7" } +kzg-rs = { git = "https://github.com/ziren-patches/kzg-rs", branch = "patch-0.2.7", default-features = false } [workspace.lints] rust.missing_debug_implementations = "warn" @@ -200,7 +200,7 @@ rustdoc.all = "warn" [patch.crates-io] # Precompile patches sha2 = { git = "https://github.com/ziren-patches/RustCrypto-hashes", branch = "patch-sha2-0.10.9", package = "sha2" } -bn = { git = "https://github.com/ziren-patches/bn", tag = "patch-0.6.0-ziren-1.2.7", package = "substrate-bn" } -k256 = { git = "https://github.com/ziren-patches/elliptic-curves", tag = "patch-k256-0.13.4-ziren-1.2.7" } -p256 = { git = "https://github.com/ziren-patches/elliptic-curves", tag = "patch-p256-0.13.2-ziren-1.2.7" } -alloy-primitives-v1-4-1 = { git = "https://github.com/ziren-patches/core.git", package = "alloy-primitives", tag = "patch-alloy-primitives-1.4.1-ziren-1.2.7" } +bn = { git = "https://github.com/ziren-patches/bn", branch = "patch-0.6.0", package = "substrate-bn" } +k256 = { git = "https://github.com/ziren-patches/elliptic-curves", branch = "patch-k256-0.13.4" } +p256 = { git = "https://github.com/ziren-patches/elliptic-curves", branch = "patch-p256-0.13.2" } +alloy-primitives-v1-4-1 = { git = "https://github.com/ziren-patches/core.git", package = "alloy-primitives", branch = "patch-alloy-primitives-1.4.1" } diff --git a/README.md b/README.md index 5aa03fa..ea5a5bc 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ A minimal implementation of generating zero-knowledge proofs of EVM block execut Required - [Rust](https://www.rust-lang.org/tools/install) -- [Ziren toolchain](https://docs.zkm.io/introduction/installation.html) +- [Ziren toolchain](https://docs.zkm.io/introduction/installation.html): the guest program is always compiled with the `zkm` rustup toolchain, whichever toolchain builds the host; set `ZKM_GUEST_TOOLCHAIN` if it is installed under another name. - Register on [Alchemy](https://www.alchemy.com/) or [Chainstack](https://chainstack.com/)​​ to get ​​`rpc url`​ and `ws url`​. But [Chainstack](https://chainstack.com/) does not support archival/historical `eth_getProof` calls. ### RPC Node Requirement diff --git a/bin/eth-proofs/build.rs b/bin/eth-proofs/build.rs index dcfa0c5..79ada56 100644 --- a/bin/eth-proofs/build.rs +++ b/bin/eth-proofs/build.rs @@ -1,5 +1,21 @@ +use std::env; + use zkm_build::build_program; +/// The guest is compiled by a nested `cargo` that inherits this script's environment, into +/// which cargo exports the compiler building the host (`RUSTC`, a toolchain without the zkVM +/// target) and rustup exports that toolchain's name. Both are replaced by the Ziren toolchain +/// here; `ZKM_GUEST_TOOLCHAIN` names one installed under a different name. +/// `RUSTC_WORKSPACE_WRAPPER` is kept: zkm-build reads it to skip the guest build under clippy. +fn select_guest_toolchain() { + println!("cargo:rerun-if-env-changed=ZKM_GUEST_TOOLCHAIN"); + let toolchain = env::var("ZKM_GUEST_TOOLCHAIN").unwrap_or_else(|_| "zkm".to_string()); + env::set_var("RUSTUP_TOOLCHAIN", toolchain); + env::remove_var("RUSTC"); + env::remove_var("RUSTC_WRAPPER"); +} + fn main() { + select_guest_toolchain(); build_program("../guest"); } diff --git a/bin/guest/Cargo.lock b/bin/guest/Cargo.lock index f20f91c..704c95c 100644 --- a/bin/guest/Cargo.lock +++ b/bin/guest/Cargo.lock @@ -252,7 +252,7 @@ dependencies = [ [[package]] name = "alloy-primitives" version = "1.4.1" -source = "git+https://github.com/ziren-patches/core.git?tag=patch-alloy-primitives-1.4.1-ziren-1.2.7#0d034202c9977acd601399efdd9c30fd1c1a08a0" +source = "git+https://github.com/ziren-patches/core.git?branch=patch-alloy-primitives-1.4.1#9a486222bba5a50084aa1335bff9c66e051b80b1" dependencies = [ "alloy-rlp", "bytes", @@ -893,6 +893,20 @@ dependencies = [ "wyz", ] +[[package]] +name = "blake3" +version = "1.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ae7bad254120e9e4c63bafc385310756f90c484eac0e36b8317cf09cb92a77" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures 0.3.0", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -905,7 +919,7 @@ dependencies = [ [[package]] name = "bls12_381" version = "0.8.0" -source = "git+https://github.com/ziren-patches/bls12_381?tag=patch-0.8.0-ziren-1.2.7#97b215f80e9bfab9ad6641e41b005b6d8e58f748" +source = "git+https://github.com/ziren-patches/bls12_381?branch=patch-0.8.0#1bee78db02337751d5334437c1bb3fe244e283d7" dependencies = [ "cfg-if", "ff", @@ -1056,7 +1070,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3bb320cac8a0750d7f25280aa97b09c26edfe161164238ecbbb31092b079e735" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "proptest", "serde_core", ] @@ -1087,6 +1101,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "constant_time_eq" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + [[package]] name = "convert_case" version = "0.10.0" @@ -1111,6 +1131,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc" version = "3.4.0" @@ -1562,12 +1591,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" -[[package]] -name = "gcd" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" - [[package]] name = "generic-array" version = "0.14.9" @@ -1970,7 +1993,7 @@ dependencies = [ [[package]] name = "k256" version = "0.13.4" -source = "git+https://github.com/ziren-patches/elliptic-curves?tag=patch-k256-0.13.4-ziren-1.2.7#5d641926a5ea6b7dee8b3a1410a49162aeb66ebf" +source = "git+https://github.com/ziren-patches/elliptic-curves?branch=patch-k256-0.13.4#5eb7ea2e3d237d5f4bfc51d88d46e32ffb879765" dependencies = [ "cfg-if", "ecdsa", @@ -1988,7 +2011,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -2004,14 +2027,14 @@ dependencies = [ [[package]] name = "kzg-rs" version = "0.2.7" -source = "git+https://github.com/ziren-patches/kzg-rs?tag=patch-0.2.7-ziren-1.2.7#8288c61a5917f5227e156b5660fbcfc4c3b14220" +source = "git+https://github.com/ziren-patches/kzg-rs?branch=patch-0.2.7#35725e54518a1b56ec908d12e77f3fc9891f643d" dependencies = [ "bls12_381", "ff", "hex", "serde_arrays", "sha2", - "spin", + "spin 0.9.8", ] [[package]] @@ -2020,7 +2043,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin", + "spin 0.9.8", ] [[package]] @@ -2147,7 +2170,6 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", - "rand 0.8.5", ] [[package]] @@ -2237,18 +2259,6 @@ dependencies = [ "syn 2.0.112", ] -[[package]] -name = "nums" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3c74f925fb8cfc49a8022f2afce48a0683b70f9e439885594e84c5edbf5b01" -dependencies = [ - "num-bigint 0.4.6", - "num-integer", - "num-traits", - "rand 0.8.5", -] - [[package]] name = "nybbles" version = "0.4.6" @@ -2292,7 +2302,7 @@ dependencies = [ [[package]] name = "p256" version = "0.13.2" -source = "git+https://github.com/ziren-patches/elliptic-curves?tag=patch-p256-0.13.2-ziren-1.2.7#91874d8de3e78b2f71d2096684189c687eb55cf3" +source = "git+https://github.com/ziren-patches/elliptic-curves?branch=patch-p256-0.13.2#3ebed19cd7069e9b1f883176c4b16e3dd3d2e747" dependencies = [ "ecdsa", "elliptic-curve", @@ -2302,136 +2312,157 @@ dependencies = [ "zkm-lib", ] +[[package]] +name = "p3-challenger" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" +dependencies = [ + "p3-field", + "p3-maybe-rayon", + "p3-monty-31", + "p3-symmetric", + "p3-util", + "tracing", +] + [[package]] name = "p3-dft" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "p3-field", "p3-matrix", "p3-maybe-rayon", "p3-util", + "spin 0.10.1", "tracing", ] [[package]] name = "p3-field" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "num-bigint 0.4.6", - "num-integer", - "num-traits", - "nums", "p3-maybe-rayon", "p3-util", - "rand 0.8.5", + "paste", + "rand 0.10.3", "serde", "tracing", ] [[package]] name = "p3-koala-bear" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ + "p3-challenger", "p3-field", "p3-mds", "p3-monty-31", + "p3-poseidon1", "p3-poseidon2", "p3-symmetric", - "rand 0.8.5", - "serde", + "rand 0.10.3", ] [[package]] name = "p3-matrix" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "p3-field", "p3-maybe-rayon", "p3-util", - "rand 0.8.5", + "rand 0.10.3", "serde", "tracing", - "transpose", ] [[package]] name = "p3-maybe-rayon" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" [[package]] name = "p3-mds" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", "p3-dft", "p3-field", - "p3-matrix", "p3-symmetric", "p3-util", - "rand 0.8.5", + "rand 0.10.3", ] [[package]] name = "p3-monty-31" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "num-bigint 0.4.6", "p3-dft", "p3-field", "p3-matrix", "p3-maybe-rayon", "p3-mds", + "p3-poseidon1", "p3-poseidon2", "p3-symmetric", "p3-util", - "rand 0.8.5", + "paste", + "rand 0.10.3", "serde", - "serde_json", + "spin 0.10.1", "tracing", - "transpose", +] + +[[package]] +name = "p3-poseidon1" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" +dependencies = [ + "p3-field", + "p3-symmetric", + "rand 0.10.3", ] [[package]] name = "p3-poseidon2" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "gcd", "p3-field", "p3-mds", "p3-symmetric", - "rand 0.8.5", - "serde", + "p3-util", + "rand 0.10.3", ] [[package]] name = "p3-symmetric" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "itertools 0.13.0", + "itertools 0.14.0", "p3-field", + "p3-util", "serde", ] [[package]] name = "p3-util" -version = "0.1.0" -source = "git+https://github.com/ProjectZKM/Plonky3#faa24ca4597eebeecbf71b194b71c7d1a99b3f01" +version = "0.5.1" +source = "git+https://github.com/ProjectZKM/Plonky3?rev=4dd0d47a8176503fbaa7293c9f0e3b20004e16b2#4dd0d47a8176503fbaa7293c9f0e3b20004e16b2" dependencies = [ - "lock_api", "serde", + "transpose", ] [[package]] @@ -2597,7 +2628,7 @@ dependencies = [ [[package]] name = "primeorder" version = "0.13.1" -source = "git+https://github.com/ziren-patches/elliptic-curves?tag=patch-p256-0.13.2-ziren-1.2.7#91874d8de3e78b2f71d2096684189c687eb55cf3" +source = "git+https://github.com/ziren-patches/elliptic-curves?branch=patch-p256-0.13.2#3ebed19cd7069e9b1f883176c4b16e3dd3d2e747" dependencies = [ "elliptic-curve", ] @@ -2619,6 +2650,7 @@ version = "0.1.0" dependencies = [ "alloy-eips", "alloy-genesis", + "alloy-primitives", "alloy-rpc-types", "eyre", "reth-chainspec", @@ -2737,6 +2769,15 @@ dependencies = [ "serde", ] +[[package]] +name = "rand" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c9fb96cbc91e3478eaae79a69fcd3f1ae4ad052e471fe6732fff548984b4af" +dependencies = [ + "rand_core 0.10.1", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -2776,6 +2817,12 @@ dependencies = [ "serde", ] +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + [[package]] name = "rand_xorshift" version = "0.4.0" @@ -3712,7 +3759,7 @@ version = "0.10.9" source = "git+https://github.com/ziren-patches/RustCrypto-hashes?branch=patch-sha2-0.10.9#dbfdbd088ac7b55e03c0b9eb192278efe35d67dc" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest 0.10.7", ] @@ -3773,6 +3820,15 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "spin" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" +dependencies = [ + "lock_api", +] + [[package]] name = "spki" version = "0.7.3" @@ -3831,7 +3887,7 @@ dependencies = [ [[package]] name = "substrate-bn" version = "0.6.0" -source = "git+https://github.com/ziren-patches/bn?tag=patch-0.6.0-ziren-1.2.7#0dfeeb1b7bfc21941b6e4964d678abd094a54a6f" +source = "git+https://github.com/ziren-patches/bn?branch=patch-0.6.0#509192f90ef14511bfa64681b2d7c8333df13979" dependencies = [ "bytemuck", "byteorder", @@ -4447,8 +4503,8 @@ dependencies = [ [[package]] name = "zkm-lib" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "bincode", "cfg-if", @@ -4460,10 +4516,11 @@ dependencies = [ [[package]] name = "zkm-primitives" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "bincode", + "blake3", "hex", "lazy_static", "num-bigint 0.4.6", @@ -4474,12 +4531,13 @@ dependencies = [ "p3-symmetric", "serde", "sha2", + "tracing", ] [[package]] name = "zkm-zkvm" -version = "1.2.7" -source = "git+https://github.com/ProjectZKM/Ziren?tag=v1.2.7#e6945a76b084e87570b7be55e4479ce98603f43a" +version = "2.0.0" +source = "git+https://github.com/ProjectZKM/Ziren#a26a53d59718b192ae29919864fd7be7055030fe" dependencies = [ "bincode", "cfg-if", diff --git a/bin/guest/Cargo.toml b/bin/guest/Cargo.toml index 833cab1..c4ddad3 100644 --- a/bin/guest/Cargo.toml +++ b/bin/guest/Cargo.toml @@ -18,7 +18,7 @@ bincode = "1.3.3" guest-executor = { path = "../../crates/executor/guest" } # Ziren -zkm-zkvm = { git = "https://github.com/ProjectZKM/Ziren", tag = "v1.2.7" } +zkm-zkvm = { git = "https://github.com/ProjectZKM/Ziren" } # zkm-zkvm = { path = "../../../Ziren/crates/zkvm/entrypoint" } # Statically turns off logging @@ -28,7 +28,7 @@ tracing = { version = "0.1", features = ["max_level_off", "release_max_level_off [patch.crates-io] # Precompile patches sha2 = { git = "https://github.com/ziren-patches/RustCrypto-hashes", branch = "patch-sha2-0.10.9", package = "sha2" } -bn = { git = "https://github.com/ziren-patches/bn", tag = "patch-0.6.0-ziren-1.2.7", package = "substrate-bn" } -k256 = { git = "https://github.com/ziren-patches/elliptic-curves", tag = "patch-k256-0.13.4-ziren-1.2.7" } -p256 = { git = "https://github.com/ziren-patches/elliptic-curves", tag = "patch-p256-0.13.2-ziren-1.2.7" } -alloy-primitives-v1-4-1 = { git = "https://github.com/ziren-patches/core.git", package = "alloy-primitives", tag = "patch-alloy-primitives-1.4.1-ziren-1.2.7" } +bn = { git = "https://github.com/ziren-patches/bn", branch = "patch-0.6.0", package = "substrate-bn" } +k256 = { git = "https://github.com/ziren-patches/elliptic-curves", branch = "patch-k256-0.13.4" } +p256 = { git = "https://github.com/ziren-patches/elliptic-curves", branch = "patch-p256-0.13.2" } +alloy-primitives-v1-4-1 = { git = "https://github.com/ziren-patches/core.git", package = "alloy-primitives", branch = "patch-alloy-primitives-1.4.1" } diff --git a/bin/host/build.rs b/bin/host/build.rs index 5aad893..3c47977 100644 --- a/bin/host/build.rs +++ b/bin/host/build.rs @@ -1,6 +1,22 @@ +use std::env; + use zkm_build::{build_program_with_args, BuildArgs}; +/// The guest is compiled by a nested `cargo` that inherits this script's environment, into +/// which cargo exports the compiler building the host (`RUSTC`, a toolchain without the zkVM +/// target) and rustup exports that toolchain's name. Both are replaced by the Ziren toolchain +/// here; `ZKM_GUEST_TOOLCHAIN` names one installed under a different name. +/// `RUSTC_WORKSPACE_WRAPPER` is kept: zkm-build reads it to skip the guest build under clippy. +fn select_guest_toolchain() { + println!("cargo:rerun-if-env-changed=ZKM_GUEST_TOOLCHAIN"); + let toolchain = env::var("ZKM_GUEST_TOOLCHAIN").unwrap_or_else(|_| "zkm".to_string()); + env::set_var("RUSTUP_TOOLCHAIN", toolchain); + env::remove_var("RUSTC"); + env::remove_var("RUSTC_WRAPPER"); +} + fn main() { + select_guest_toolchain(); let mut args: BuildArgs = Default::default(); args.rustflags.push("llvm-args=--pre-RA-sched=list-ilp".to_string()); build_program_with_args("../guest", args); diff --git a/bin/host/input/1/24438200.bin b/bin/host/input/1/24438200.bin index 913a266..a08bdf4 100644 Binary files a/bin/host/input/1/24438200.bin and b/bin/host/input/1/24438200.bin differ diff --git a/bin/host/input/1/25134887.bin b/bin/host/input/1/25134887.bin index f8ac586..4883a11 100644 Binary files a/bin/host/input/1/25134887.bin and b/bin/host/input/1/25134887.bin differ diff --git a/bin/host/input/48816/9831027.bin b/bin/host/input/48816/9831027.bin index c1775e2..e1b92bf 100644 Binary files a/bin/host/input/48816/9831027.bin and b/bin/host/input/48816/9831027.bin differ diff --git a/crates/executor/guest/examples/convert_input.rs b/crates/executor/guest/examples/convert_input.rs new file mode 100644 index 0000000..12385b2 --- /dev/null +++ b/crates/executor/guest/examples/convert_input.rs @@ -0,0 +1,47 @@ +//! Rewrites a cached client input from the layout that shipped revm `Bytecode` +//! (with the host's jump table) to the one that ships the deployed bytes. +//! +//! Usage: convert_input ... (each file is rewritten in place) + +use alloy_consensus::{Block, Header}; +use alloy_primitives::Address; +use guest_executor::io::EthClientExecutorInput; +use mpt::EthereumState; +use primitives::genesis::Genesis; +use reth_ethereum_primitives::TransactionSigned; +use revm::state::Bytecode; +use serde::Deserialize; +use serde_with::serde_as; + +#[serde_as] +#[derive(Deserialize)] +struct OldInput { + #[serde_as( + as = "reth_primitives_traits::serde_bincode_compat::Block<'_, TransactionSigned, Header>" + )] + current_block: Block, + #[serde_as(as = "Vec")] + ancestor_headers: Vec
, + parent_state: EthereumState, + bytecodes: Vec, + genesis: Genesis, + custom_beneficiary: Option
, + opcode_tracking: bool, +} + +fn main() { + for path in std::env::args().skip(1) { + let old: OldInput = bincode::deserialize(&std::fs::read(&path).unwrap()).unwrap(); + let new = EthClientExecutorInput { + current_block: old.current_block, + ancestor_headers: old.ancestor_headers, + parent_state: old.parent_state, + bytecodes: old.bytecodes.iter().map(|code| code.original_bytes()).collect(), + genesis: old.genesis, + custom_beneficiary: old.custom_beneficiary, + opcode_tracking: old.opcode_tracking, + }; + std::fs::write(&path, bincode::serialize(&new).unwrap()).unwrap(); + println!("{path}: {} bytecodes", new.bytecodes.len()); + } +} diff --git a/crates/executor/guest/src/error.rs b/crates/executor/guest/src/error.rs index 557bd8e..8093320 100644 --- a/crates/executor/guest/src/error.rs +++ b/crates/executor/guest/src/error.rs @@ -2,6 +2,7 @@ use alloy_primitives::{Address, FixedBytes}; use mpt::Error as MptError; use reth_consensus::ConsensusError; use reth_evm::execute::BlockExecutionError; +use revm_primitives::U256; #[derive(Debug, thiserror::Error)] pub enum ClientError { @@ -31,4 +32,8 @@ pub enum ClientError { FailedToReadGenesisFile(#[from] std::io::Error), #[error("Failed to deserialize the genesis file: {}", .0)] FailedToDeserializeGenesisFile(#[from] serde_json::Error), + #[error("Failed to check slot and value: {}", .0)] + FailedToCheckSlotAndValue(U256), + #[error("Failed to fetch slot and value: {}", .0)] + FailedToFetchSlotAndValue(U256), } diff --git a/crates/executor/guest/src/executor.rs b/crates/executor/guest/src/executor.rs index 2520ab6..f8c695e 100644 --- a/crates/executor/guest/src/executor.rs +++ b/crates/executor/guest/src/executor.rs @@ -13,15 +13,15 @@ use reth_evm::{ use reth_evm_ethereum::EthEvmConfig; use reth_execution_types::ExecutionOutcome; use reth_primitives_traits::Block; -use reth_trie::KeccakKeyHasher; -use revm::{database::WrapDatabaseRef, install_crypto}; -use revm_primitives::Address; +use reth_trie::{KeccakKeyHasher, TrieAccount, EMPTY_ROOT_HASH}; +use revm::{database::WrapDatabaseRef, install_crypto, DatabaseRef}; +use revm_primitives::{Address, HashMap, U256}; use crate::{ custom::{CustomCrypto, CustomEvmFactory}, error::ClientError, into_primitives::FromInput, - io::{ClientExecutorInput, TrieDB, WitnessInput}, + io::{analyze_bytecodes, ClientExecutorInput, TrieDB, WitnessInput}, tracking::OpCodesTrackingBlockExecutor, BlockValidator, }; @@ -33,6 +33,7 @@ pub const BLOCK_EXECUTION: &str = "block execution"; pub const VALIDATE_HEADER: &str = "validate header"; pub const VALIDATE_EXECUTION: &str = "validate block post-execution"; pub const COMPUTE_STATE_ROOT: &str = "compute state root"; +pub const CHECK_SLOT_AND_VALUE: &str = "check slot and value"; pub type EthClientExecutor = ClientExecutor, ChainSpec>; @@ -55,6 +56,7 @@ where pub fn execute( &self, mut input: ClientExecutorInput, + storage_info: Vec<(Address, U256, U256)>, ) -> Result<(Header, B256), ClientError> { let chain_id: u64 = (&input.genesis).try_into().expect("convert chain id err"); @@ -152,6 +154,66 @@ where requests_hash: input.current_block.header().requests_hash(), }; + if !storage_info.is_empty() { + let check_result: Result<(), ClientError> = profile_report!(CHECK_SLOT_AND_VALUE, { + let state = input.state(); + let db = { + for (hashed_address, storage_trie) in state.storage_tries.iter() { + let account = state + .state_trie + .get_rlp::(hashed_address.as_slice()) + .unwrap(); + let storage_root = account.map_or(EMPTY_ROOT_HASH, |a| a.storage_root); + if storage_root != storage_trie.hash() { + return Err(ClientError::MismatchedStorageRoot); + } + } + + let bytecodes_by_hash = analyze_bytecodes(input.bytecodes()); + + // Verify and build block hashes + let mut block_hashes: HashMap = + HashMap::with_hasher(Default::default()); + for (child_header, parent_header) in input.sealed_headers().tuple_windows() { + if parent_header.number() != child_header.number() - 1 { + return Err(ClientError::InvalidHeaderBlockNumber( + parent_header.number() + 1, + child_header.number(), + )); + } + + let parent_header_hash = parent_header.hash_slow(); + if parent_header_hash != child_header.parent_hash() { + return Err(ClientError::InvalidHeaderParentHash( + parent_header_hash, + child_header.parent_hash(), + )); + } + + block_hashes.insert(parent_header.number(), child_header.parent_hash()); + } + + TrieDB::new(state, block_hashes, bytecodes_by_hash) + }; + + for (contract_address, slot_id, expected_value) in storage_info { + match db.storage_ref(contract_address, slot_id) { + Ok(actual_value) => { + if actual_value != expected_value { + return Err(ClientError::FailedToCheckSlotAndValue(slot_id)); + } + } + _ => { + return Err(ClientError::FailedToFetchSlotAndValue(slot_id)); + } + } + } + Ok(()) + }); + if check_result.is_err() { + return Err(check_result.err().unwrap()); + } + } Ok((header, parent_state_root)) } } diff --git a/crates/executor/guest/src/io.rs b/crates/executor/guest/src/io.rs index 63a4ccc..2a87657 100644 --- a/crates/executor/guest/src/io.rs +++ b/crates/executor/guest/src/io.rs @@ -1,10 +1,11 @@ use std::iter::once; +use crate::error::ClientError; use alloy_consensus::{Block, BlockHeader, Header}; use alloy_primitives::map::HashMap; use itertools::Itertools; use mpt::EthereumState; -use primitives::genesis::Genesis; +use primitives::{genesis::Genesis, is_precompile}; use reth_errors::ProviderError; use reth_ethereum_primitives::EthPrimitives; use reth_primitives_traits::{NodePrimitives, SealedHeader}; @@ -13,12 +14,10 @@ use revm::{ state::{AccountInfo, Bytecode}, DatabaseRef, }; -use revm_primitives::{keccak256, Address, B256, U256}; +use revm_primitives::{keccak256, Address, Bytes, B256, U256}; use serde::{Deserialize, Serialize}; use serde_with::serde_as; -use crate::error::ClientError; - pub type EthClientExecutorInput = ClientExecutorInput; #[cfg(feature = "optimism")] @@ -43,8 +42,10 @@ pub struct ClientExecutorInput { pub ancestor_headers: Vec
, /// Network state as of the parent block. pub parent_state: EthereumState, - /// Account bytecodes. - pub bytecodes: Vec, + /// Account bytecodes as deployed. The guest derives every jump table itself: a table + /// shipped by the host would decide which jumps are valid without being bound by the code + /// hash, which covers the code bytes only. + pub bytecodes: Vec, /// The genesis block, as a json string. pub genesis: Genesis, /// The genesis block, as a json string. @@ -78,7 +79,7 @@ impl WitnessInput for ClientExecutorInput

{ } #[inline(always)] - fn bytecodes(&self) -> impl Iterator { + fn bytecodes(&self) -> impl Iterator { self.bytecodes.iter() } @@ -107,14 +108,14 @@ impl From

for CommittedHeader { pub struct TrieDB<'a> { inner: &'a EthereumState, block_hashes: HashMap, - bytecode_by_hash: HashMap, + bytecode_by_hash: HashMap, } impl<'a> TrieDB<'a> { pub fn new( inner: &'a EthereumState, block_hashes: HashMap, - bytecode_by_hash: HashMap, + bytecode_by_hash: HashMap, ) -> Self { Self { inner, block_hashes, bytecode_by_hash } } @@ -129,7 +130,11 @@ impl DatabaseRef for TrieDB<'_> { let hashed_address = keccak256(address); let hashed_address = hashed_address.as_slice(); - let account_in_trie = self.inner.state_trie.get_rlp::(hashed_address).unwrap(); + let account_in_trie = match self.inner.state_trie.get_rlp::(hashed_address) { + Ok(res) => res, + Err(mpt::Error::NodeNotResolved(_)) if is_precompile(address) => None, + Err(err) => return Err(ProviderError::TrieWitnessError(err.to_string())), + }; let account = account_in_trie.map(|account_in_trie| AccountInfo { balance: account_in_trie.balance, @@ -143,7 +148,7 @@ impl DatabaseRef for TrieDB<'_> { /// Get account code by its hash. fn code_by_hash_ref(&self, hash: B256) -> Result { - Ok(self.bytecode_by_hash.get(&hash).map(|code| (*code).clone()).unwrap()) + Ok(self.bytecode_by_hash.get(&hash).cloned().unwrap()) } /// Get storage value of address at index. @@ -151,16 +156,16 @@ impl DatabaseRef for TrieDB<'_> { let hashed_address = keccak256(address); let hashed_address = hashed_address.as_slice(); - let storage_trie = self - .inner - .storage_tries - .get(hashed_address) - .expect("A storage trie must be provided for each account"); + let storage_trie = self.inner.storage_tries.get(hashed_address); - Ok(storage_trie - .get_rlp::(keccak256(index.to_be_bytes::<32>()).as_slice()) - .expect("Can get from MPT") - .unwrap_or_default()) + if let Some(storage_trie) = storage_trie { + Ok(storage_trie + .get_rlp::(keccak256(index.to_be_bytes::<32>()).as_slice()) + .expect("Can get from MPT") + .unwrap_or_default()) + } else { + Ok(U256::ZERO) + } } /// Get block hash by block number. @@ -172,6 +177,20 @@ impl DatabaseRef for TrieDB<'_> { } } +/// The shipped bytecodes analyzed in the guest, keyed by their hash: legacy code gets +/// the jump table revm derives from its bytes, EIP-7702 delegations their designator. +pub(crate) fn analyze_bytecodes<'b>( + codes: impl Iterator, +) -> HashMap { + codes + .map(|code| { + let code = Bytecode::new_raw_checked(code.clone()) + .expect("shipped bytecode must be legacy code or an EIP-7702 delegation"); + (code.hash_slow(), code) + }) + .collect() +} + /// A trait for constructing [`WitnessDb`]. pub trait WitnessInput { /// Gets a reference to the state from which account info and storage slots are loaded. @@ -181,8 +200,8 @@ pub trait WitnessInput { /// [state()](trait.WitnessInput#tymethod.state) must conform to. fn state_anchor(&self) -> B256; - /// Gets an iterator over account bytecodes. - fn bytecodes(&self) -> impl Iterator; + /// Gets an iterator over the account bytecodes, as deployed. + fn bytecodes(&self) -> impl Iterator; /// Gets an iterator over references to a consecutive, reverse-chronological block headers /// starting from the current block header. @@ -212,8 +231,7 @@ pub trait WitnessInput { } } - let bytecodes_by_hash = - self.bytecodes().map(|code| (code.hash_slow(), code)).collect::>(); + let bytecodes_by_hash = analyze_bytecodes(self.bytecodes()); // Verify and build block hashes let mut block_hashes: HashMap = HashMap::with_hasher(Default::default()); diff --git a/crates/executor/guest/src/lib.rs b/crates/executor/guest/src/lib.rs index bb754b7..3facb8c 100644 --- a/crates/executor/guest/src/lib.rs +++ b/crates/executor/guest/src/lib.rs @@ -27,7 +27,8 @@ pub fn verify_block(input: &[u8]) -> (B256, B256, B256) { Arc::new((&input.genesis).try_into().unwrap()), input.custom_beneficiary, ); - let (header, prev_state_root) = executor.execute(input).expect("failed to execute client"); + let (header, prev_state_root) = + executor.execute(input, vec![]).expect("failed to execute client"); let block_hash = header.hash_slow(); (block_hash, header.state_root, prev_state_root) } diff --git a/crates/executor/host/src/bins/persist_report_hook.rs b/crates/executor/host/src/bins/persist_report_hook.rs index 41ad8e6..18afb68 100644 --- a/crates/executor/host/src/bins/persist_report_hook.rs +++ b/crates/executor/host/src/bins/persist_report_hook.rs @@ -94,7 +94,6 @@ impl PersistExecutionReport { headers.push("recover_senders_cycles_count".to_string()); headers.push("block_execution_cycles_count".to_string()); headers.push("block_validation_cycles_count".to_string()); - headers.push("accrue_logs_bloom_cycles_count".to_string()); headers.push("state_root_computation_cycles_count".to_string()); headers.push("syscalls_count".to_string()); headers.push("prover_gas".to_string()); diff --git a/crates/executor/host/src/host_executor.rs b/crates/executor/host/src/host_executor.rs index a8d7d23..8159784 100644 --- a/crates/executor/host/src/host_executor.rs +++ b/crates/executor/host/src/host_executor.rs @@ -76,6 +76,8 @@ impl HostExecutor { let chain_id: u64 = (&genesis).try_into().unwrap(); tracing::debug!("chain id: {}", chain_id); + let is_goat_testnet = is_goat_testnet(chain_id); + // Fetch the current block and the previous block from the provider. tracing::info!("[{}] fetching the current block and the previous block", block_number); let rpc_block = provider @@ -105,6 +107,7 @@ impl HostExecutor { debug_provider, block_number - 1, previous_block.header().state_root(), + is_goat_testnet, ) .await .map_err(HostError::RpcDbError)?; @@ -149,7 +152,7 @@ impl HostExecutor { &block, self.chain_spec.clone(), &execution_output, - is_goat_testnet(chain_id), + is_goat_testnet, )?; // Accumulate the logs bloom. @@ -226,7 +229,7 @@ impl HostExecutor { current_block: C::Primitives::into_input_block(current_block), ancestor_headers, parent_state: state, - bytecodes: rpc_db.bytecodes(), + bytecodes: rpc_db.bytecodes().iter().map(|code| code.original_bytes()).collect(), genesis, custom_beneficiary, opcode_tracking, diff --git a/crates/executor/host/tests/integration.rs b/crates/executor/host/tests/integration.rs index b246c31..8769933 100644 --- a/crates/executor/host/tests/integration.rs +++ b/crates/executor/host/tests/integration.rs @@ -123,7 +123,7 @@ async fn run_e2e( .expect("failed to execute host"); // Execute the client. - client_executor.execute(client_input.clone()).expect("failed to execute client"); + client_executor.execute(client_input.clone(), vec![]).expect("failed to execute client"); // Save the client input to a buffer. let buffer = bincode::serialize(&client_input).unwrap(); diff --git a/crates/mpt/src/execution_witness.rs b/crates/mpt/src/execution_witness.rs index 48cb0d1..b740c74 100644 --- a/crates/mpt/src/execution_witness.rs +++ b/crates/mpt/src/execution_witness.rs @@ -1,6 +1,5 @@ -use alloy_primitives::{keccak256, map::HashMap, B256}; +use alloy_primitives::{keccak256, map::HashMap, Bytes, B256}; use alloy_rlp::Decodable; -use alloy_rpc_types_debug::ExecutionWitness; use reth_trie::TrieAccount; use crate::mpt::{resolve_nodes, MptNode, MptNodeData, MptNodeReference}; @@ -10,7 +9,7 @@ use crate::mpt::{resolve_nodes, MptNode, MptNodeData, MptNodeReference}; // NOTE: This method should be called outside zkVM! In general you construct tries, then // validate them inside zkVM. pub(crate) fn build_validated_tries( - witness: &ExecutionWitness, + state: &Vec, pre_state_root: B256, ) -> Result<(MptNode, HashMap), String> { // Step 1: Decode all RLP-encoded trie nodes and index by hash @@ -19,7 +18,7 @@ pub(crate) fn build_validated_tries( let mut node_by_hash: HashMap = HashMap::default(); let mut root_node: Option = None; - for encoded in &witness.state { + for encoded in state { let node = MptNode::decode(encoded).expect("Valid MPT node in witness"); let hash = keccak256(encoded); if hash == pre_state_root { diff --git a/crates/mpt/src/lib.rs b/crates/mpt/src/lib.rs index 97642df..3cc9acc 100644 --- a/crates/mpt/src/lib.rs +++ b/crates/mpt/src/lib.rs @@ -1,6 +1,4 @@ -#![cfg_attr(not(test), warn(unused_crate_dependencies))] - -use alloy_primitives::{keccak256, map::HashMap, Address, B256}; +use alloy_primitives::{keccak256, map::HashMap, Address, Bytes, B256}; use alloy_rpc_types::EIP1186AccountProofResponse; use reth_trie::{AccountProof, HashedPostState, HashedStorage, TrieAccount}; use serde::{Deserialize, Serialize}; @@ -73,12 +71,9 @@ impl EthereumState { } #[cfg(feature = "execution-witness")] - pub fn from_execution_witness( - witness: &alloy_rpc_types_debug::ExecutionWitness, - pre_state_root: B256, - ) -> Self { + pub fn from_execution_witness(state: &Vec, pre_state_root: B256) -> Self { let (state_trie, storage_tries) = - execution_witness::build_validated_tries(witness, pre_state_root).unwrap(); + execution_witness::build_validated_tries(state, pre_state_root).unwrap(); Self { state_trie, storage_tries } } @@ -93,7 +88,18 @@ impl EthereumState { .get(hashed_address) .cloned() .unwrap_or_else(|| HashedStorage::new(false)); - let storage_root = { + + let storage_root = if state_storage.is_empty() { + // Preserve the existing storage root when witness lacks the storage trie. + self.state_trie + .get_rlp::(hashed_address.as_slice()) + .ok() + .flatten() + .map(|existing| existing.storage_root) + .unwrap_or_else(|| { + self.storage_tries.entry(*hashed_address).or_default().hash() + }) + } else { let storage_trie = self.storage_tries.entry(*hashed_address).or_default(); if state_storage.wiped { diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml index b2ae76d..8ec58aa 100644 --- a/crates/primitives/Cargo.toml +++ b/crates/primitives/Cargo.toml @@ -15,6 +15,7 @@ reth-chainspec.workspace = true reth-optimism-chainspec = { workspace = true, optional = true } reth-optimism-forks = { workspace = true, optional = true } reth-trie.workspace = true +alloy-primitives.workspace = true # alloy alloy-eips.workspace = true diff --git a/crates/primitives/src/lib.rs b/crates/primitives/src/lib.rs index f9134c8..ae00da4 100644 --- a/crates/primitives/src/lib.rs +++ b/crates/primitives/src/lib.rs @@ -4,7 +4,22 @@ pub mod account_proof; pub mod chain_spec; pub mod genesis; +use alloy_primitives::Address; + #[inline] pub fn is_goat_testnet(chain_id: u64) -> bool { chain_id == 48816 } + +#[inline] +pub fn is_precompile(address: Address) -> bool { + let bytes = address.as_slice(); + // Check if the first 19 bytes are zero. + if !bytes[..19].iter().all(|&b| b == 0) { + return false; + } + // Check if the last byte is non-zero (so it is not the zero address). + let last = bytes[19]; + + last > 0 +} diff --git a/crates/storage/rpc-db/Cargo.toml b/crates/storage/rpc-db/Cargo.toml index 4780e6c..cec1420 100644 --- a/crates/storage/rpc-db/Cargo.toml +++ b/crates/storage/rpc-db/Cargo.toml @@ -9,6 +9,7 @@ async-trait.workspace = true tokio.workspace = true thiserror.workspace = true tracing.workspace = true +serde.workspace = true mpt.workspace = true primitives.workspace = true @@ -33,7 +34,7 @@ alloy-trie = { workspace = true, optional = true, features = ["ethereum"] } [features] default = ["execution-witness"] execution-witness = [ - "dep:alloy-consensus", + "dep:alloy-consensus", "dep:alloy-rlp", "dep:alloy-trie", "alloy-provider/debug-api" diff --git a/crates/storage/rpc-db/src/execution_witness.rs b/crates/storage/rpc-db/src/execution_witness.rs index b7e5105..8659633 100644 --- a/crates/storage/rpc-db/src/execution_witness.rs +++ b/crates/storage/rpc-db/src/execution_witness.rs @@ -1,57 +1,205 @@ -use std::marker::PhantomData; +use std::{marker::PhantomData, sync::RwLock}; -use alloy_consensus::Header; -use alloy_primitives::{map::HashMap, Address, B256}; +use crate::{RpcDb, RpcDbError}; +use alloy_consensus::{private::alloy_eips::BlockNumberOrTag, Header}; +use alloy_primitives::{map::HashMap, Address, Bytes, B256}; use alloy_provider::{ext::DebugApi, Network, Provider}; use alloy_rlp::Decodable; use alloy_trie::TrieAccount; use async_trait::async_trait; use mpt::EthereumState; +use primitives::is_precompile; use reth_storage_errors::ProviderError; use revm_database::{BundleState, DatabaseRef}; use revm_primitives::{keccak256, ruint::aliases::U256, StorageKey, StorageValue}; use revm_state::{AccountInfo, Bytecode}; +use serde::{Deserialize, Serialize}; -use crate::{RpcDb, RpcDbError}; +#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)] +pub struct ExecutionWitnessGoat { + pub state: Vec, + pub codes: Vec, + pub keys: Option>, + pub headers: Vec
, +} -#[derive(Debug)] pub struct ExecutionWitnessRpcDb { /// The provider which fetches data. pub provider: P, - /// The cached state. + /// The cached state (may be incomplete for fallback accounts). pub state: EthereumState, /// The cached bytecodes. pub codes: HashMap, - + /// Ancestor headers for BLOCKHASH opcode. pub ancestor_headers: HashMap, + /// The parent block number (for RPC fallback queries). + parent_block_number: u64, + /// The state root used to build the EthereumState. + state_root: B256, + /// The original witness state nodes (for rebuilding with additional proofs). + raw_state_nodes: Vec, + /// Addresses that needed RPC fallback due to incomplete witness. + fallback_addresses: RwLock>, phantom: PhantomData, } +impl std::fmt::Debug for ExecutionWitnessRpcDb { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("ExecutionWitnessRpcDb") + .field("provider", &self.provider) + .field("state", &self.state) + .field("codes", &self.codes) + .field("ancestor_headers", &self.ancestor_headers) + .field("parent_block_number", &self.parent_block_number) + .field("state_root", &self.state_root) + .field("raw_state_nodes_len", &self.raw_state_nodes.len()) + .field("fallback_addresses", &*self.fallback_addresses.read().unwrap()) + .finish() + } +} + impl + Clone, N: Network> ExecutionWitnessRpcDb { /// Create a new [`ExecutionWitnessRpcDb`]. - pub async fn new(provider: P, block_number: u64, state_root: B256) -> Result { - let execution_witness = provider.debug_execution_witness((block_number + 1).into()).await?; + pub async fn new( + provider: P, + block_number: u64, + state_root: B256, + is_goat_testnet: bool, + ) -> Result { + let (state_nodes, codes, headers) = if is_goat_testnet { + let execution_witness: ExecutionWitnessGoat = provider + .raw_request( + "debug_executionWitness".into(), + (BlockNumberOrTag::Number(block_number + 1),), + ) + .await?; - let state = EthereumState::from_execution_witness(&execution_witness, state_root); + (execution_witness.state, execution_witness.codes, execution_witness.headers) + } else { + let execution_witness = + provider.debug_execution_witness((block_number + 1).into()).await?; + let headers = execution_witness + .headers + .iter() + .map(|encoded| Header::decode(&mut encoded.as_ref()).unwrap()) + .collect(); - let codes = execution_witness - .codes - .iter() - .map(|encoded| (keccak256(encoded), Bytecode::new_raw(encoded.clone()))) - .collect(); + (execution_witness.state, execution_witness.codes, headers) + }; + tracing::info!("fetch execution witness for block {}", block_number + 1); - let ancestor_headers = execution_witness - .headers - .iter() - .map(|encoded| Header::decode(&mut encoded.as_ref()).unwrap()) - .map(|h| (h.number, h)) + let state = EthereumState::from_execution_witness(&state_nodes, state_root); + let codes = codes + .into_iter() + .map(|encoded| (keccak256(&encoded), Bytecode::new_raw(encoded))) .collect(); + let ancestor_headers = headers.into_iter().map(|h| (h.number, h)).collect(); - let db = Self { provider, state, codes, ancestor_headers, phantom: PhantomData }; + let db = Self { + provider, + state, + codes, + ancestor_headers, + parent_block_number: block_number, + state_root, + raw_state_nodes: state_nodes, + fallback_addresses: RwLock::new(Vec::new()), + phantom: PhantomData, + }; Ok(db) } + + /// Fetch account info via RPC when witness data is incomplete. + /// Records the address for later proof fetching. + fn fetch_account_via_rpc(&self, address: Address) -> Result, ProviderError> + where + P: Clone, + { + // Use tokio runtime to execute async RPC calls from sync context + let handle = tokio::runtime::Handle::current(); + let provider = self.provider.clone(); + let block_tag = BlockNumberOrTag::Number(self.parent_block_number); + + let result: Result<(U256, u64, Bytecode), Box> = + tokio::task::block_in_place(|| { + handle.block_on(async { + // Fetch balance, nonce and code in parallel + let balance_fut = provider.get_balance(address).block_id(block_tag.into()); + let nonce_fut = + provider.get_transaction_count(address).block_id(block_tag.into()); + let code_fut = provider.get_code_at(address).block_id(block_tag.into()); + + let (balance, nonce, code) = + tokio::try_join!(balance_fut, nonce_fut, code_fut)?; + let bytecode = Bytecode::new_raw(code); + + Ok((balance, nonce, bytecode)) + }) + }); + + match result { + Ok((balance, nonce, bytecode)) => { + // Record this address for proof fetching in state() + self.fallback_addresses.write().unwrap().push(address); + + // If balance, nonce and code are all zero/empty, treat as non-existent + if balance.is_zero() && nonce == 0 && bytecode.is_empty() { + tracing::debug!( + "RPC fallback: address {:?} has zero balance, nonce and empty code, treating as non-existent", + address + ); + Ok(None) + } else { + let code_hash = bytecode.hash_slow(); + tracing::debug!( + "RPC fallback: address {:?} has balance={}, nonce={}, code_hash={}", + address, + balance, + nonce, + code_hash + ); + Ok(Some(AccountInfo { balance, nonce, code_hash, code: Some(bytecode) })) + } + } + Err(err) => { + tracing::error!("RPC fallback failed for address {:?}: {}", address, err); + Err(ProviderError::TrieWitnessError(format!("RPC fallback failed: {}", err))) + } + } + } + + /// Fetches proofs for fallback addresses and returns merged state nodes. + async fn get_merged_state_nodes(&self) -> Result, RpcDbError> + where + P: Clone, + { + let fallback_addrs: Vec
= self.fallback_addresses.read().unwrap().clone(); + if fallback_addrs.is_empty() { + return Ok(self.raw_state_nodes.clone()); + } + tracing::info!( + "Fetching proofs for {} fallback addresses to complete witness", + fallback_addrs.len() + ); + + let block_tag = BlockNumberOrTag::Number(self.parent_block_number); + let mut merged_nodes = self.raw_state_nodes.clone(); + for address in fallback_addrs { + // Fetch the account proof via eth_getProof + let proof = self.provider.get_proof(address, vec![]).block_id(block_tag.into()).await?; + let node_count = proof.account_proof.len(); + // Add proof nodes to the merged list + for node in proof.account_proof { + merged_nodes.push(node); + } + + tracing::debug!("Added {} proof nodes for address {:?}", node_count, address); + } + + Ok(merged_nodes) + } } impl + Clone, N: Network> DatabaseRef for ExecutionWitnessRpcDb { @@ -59,23 +207,42 @@ impl + Clone, N: Network> DatabaseRef for ExecutionWitnessRpcDb

Result, Self::Error> { let hash = keccak256(address); - if let Some(mut bytes) = self + match self .state .state_trie .get(hash.as_ref()) - .map_err(|err| ProviderError::TrieWitnessError(err.to_string()))? + .map_err(|err| ProviderError::TrieWitnessError(err.to_string())) { - let account = TrieAccount::decode(&mut bytes)?; - let account_info = AccountInfo { - balance: account.balance, - nonce: account.nonce, - code_hash: account.code_hash, - code: None, - }; - - Ok(Some(account_info)) - } else { - Ok(None) + Ok(Some(mut bytes)) => { + let account = TrieAccount::decode(&mut bytes)?; + let account_info = AccountInfo { + balance: account.balance, + nonce: account.nonce, + code_hash: account.code_hash, + code: None, + }; + + Ok(Some(account_info)) + } + Ok(None) => Ok(None), + Err(err) => { + // If the account is a precompile, we can assume it's empty. + if is_precompile(address) { + return Ok(None); + } + // WORKAROUND: If the witness is incomplete (NodeNotResolved), + // fallback to RPC to fetch account info directly. + if let ProviderError::TrieWitnessError(ref msg) = err { + if msg.contains("unresolved node") { + tracing::warn!( + "Witness incomplete for address {:?}, falling back to RPC", + address + ); + return self.fetch_account_via_rpc(address); + } + } + Err(err) + } } } @@ -124,7 +291,13 @@ where N: Network, { async fn state(&self, _bundle_state: &BundleState) -> Result { - Ok(self.state.clone()) + // Merge original witness nodes with proofs for fallback addresses + let merged_nodes = self.get_merged_state_nodes().await?; + + // Rebuild EthereumState with complete witness data + let state = EthereumState::from_execution_witness(&merged_nodes, self.state_root); + + Ok(state) } fn bytecodes(&self) -> Vec {