diff --git a/.gitignore b/.gitignore index 580459d0e..c7c81b612 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ proptest-regressions/ # ceno serialized files *.bin *.json +*.srs \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 88968389b..93d607201 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,16 @@ # 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.0" @@ -28,6 +38,17 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + [[package]] name = "ahash" version = "0.8.11" @@ -63,7 +84,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cd9d29a6a0bb8d4832ff7685dcbb430011b832f2ccec1af9571a0e75c1f7e9c" dependencies = [ "alloy-eips", - "alloy-primitives", + "alloy-primitives 1.4.0", "alloy-rlp", "alloy-serde", "alloy-trie", @@ -87,7 +108,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.4.0", "alloy-rlp", "crc", "serde", @@ -100,7 +121,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.4.0", "alloy-rlp", "serde", ] @@ -111,8 +132,9 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.4.0", "alloy-rlp", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde", "thiserror 2.0.12", ] @@ -126,7 +148,7 @@ dependencies = [ "alloy-eip2124", "alloy-eip2930", "alloy-eip7702", - "alloy-primitives", + "alloy-primitives 1.4.0", "alloy-rlp", "alloy-serde", "auto_impl", @@ -135,10 +157,82 @@ dependencies = [ "either", "serde", "serde_with", - "sha2", + "sha2 0.10.9", "thiserror 2.0.12", ] +[[package]] +name = "alloy-json-abi" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4584e3641181ff073e9d5bec5b3b8f78f9749d9fb108a1cfbc4399a4a139c72a" +dependencies = [ + "alloy-primitives 0.8.26", + "alloy-sol-type-parser", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-primitives" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e416903084d3392ebd32d94735c395d6709415b76c7728e594d3f996f2b03e65" +dependencies = [ + "bytes", + "cfg-if", + "const-hex", + "derive_more 0.99.20", + "hex-literal", + "itoa", + "ruint", + "tiny-keccak", +] + +[[package]] +name = "alloy-primitives" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 0.99.20", + "hex-literal", + "itoa", + "ruint", + "tiny-keccak", +] + +[[package]] +name = "alloy-primitives" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "777d58b30eb9a4db0e5f59bc30e8c2caef877fee7dc8734cf242a51a60f22e05" +dependencies = [ + "alloy-rlp", + "bytes", + "cfg-if", + "const-hex", + "derive_more 2.0.1", + "foldhash 0.1.5", + "hashbrown 0.15.3", + "indexmap 2.9.0", + "itoa", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "keccak-asm", + "paste", + "proptest", + "rand 0.8.5", + "ruint", + "rustc-hash 2.1.1", + "serde", + "sha3", + "tiny-keccak", +] + [[package]] name = "alloy-primitives" version = "1.4.0" @@ -160,7 +254,7 @@ dependencies = [ "proptest", "rand 0.9.2", "ruint", - "rustc-hash", + "rustc-hash 2.1.1", "serde", "sha3", "tiny-keccak", @@ -194,18 +288,92 @@ version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19c3835bdc128f2f3418f5d6c76aec63a245d72973e0eaacc9720aa0787225c5" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.4.0", "serde", "serde_json", ] +[[package]] +name = "alloy-sol-macro" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e68b32b6fa0d09bb74b4cefe35ccc8269d711c26629bc7cd98a47eeb12fe353f" +dependencies = [ + "alloy-sol-macro-expander", + "alloy-sol-macro-input", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "alloy-sol-macro-expander" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2afe6879ac373e58fd53581636f2cce843998ae0b058ebe1e4f649195e2bd23c" +dependencies = [ + "alloy-json-abi", + "alloy-sol-macro-input", + "const-hex", + "heck", + "indexmap 2.9.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.101", + "syn-solidity", + "tiny-keccak", +] + +[[package]] +name = "alloy-sol-macro-input" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ba01aee235a8c699d07e5be97ba215607564e71be72f433665329bec307d28" +dependencies = [ + "alloy-json-abi", + "const-hex", + "dunce", + "heck", + "macro-string", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.101", + "syn-solidity", +] + +[[package]] +name = "alloy-sol-type-parser" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c13fc168b97411e04465f03e632f31ef94cad1c7c8951bf799237fd7870d535" +dependencies = [ + "serde", + "winnow 0.7.13", +] + +[[package]] +name = "alloy-sol-types" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e960c4b52508ef2ae1e37cae5058e905e9ae099b107900067a503f8c454036f" +dependencies = [ + "alloy-json-abi", + "alloy-primitives 0.8.26", + "alloy-sol-macro", + "const-hex", + "serde", +] + [[package]] name = "alloy-trie" version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3412d52bb97c6c6cc27ccc28d4e6e8cf605469101193b50b0bd5813b1f990b5" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.4.0", "alloy-rlp", "arrayvec", "derive_more 2.0.1", @@ -221,7 +389,7 @@ version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc79013f9ac3a8ddeb60234d43da09e6d6abfc1c9dd29d3fe97adfbece3f4a08" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.4.0", "darling 0.21.3", "proc-macro2", "quote", @@ -311,6 +479,16 @@ dependencies = [ "backtrace", ] +[[package]] +name = "ariadne" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "367fd0ad87307588d087544707bc5fbf4805ded96c7db922b70d368fa1cb5702" +dependencies = [ + "unicode-width 0.1.14", + "yansi 0.5.1", +] + [[package]] name = "ark-bls12-381" version = "0.5.0" @@ -331,6 +509,7 @@ checksum = "d69eab57e8d2663efa5c63135b2af4f396d66424f88954c21104125ab6b3e6bc" dependencies = [ "ark-ec", "ark-ff 0.5.0", + "ark-r1cs-std", "ark-std 0.5.0", ] @@ -496,6 +675,35 @@ dependencies = [ "hashbrown 0.15.3", ] +[[package]] +name = "ark-r1cs-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "941551ef1df4c7a401de7068758db6503598e6f01850bdb2cfdb614a1f9dbea1" +dependencies = [ + "ark-ec", + "ark-ff 0.5.0", + "ark-relations", + "ark-std 0.5.0", + "educe", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "tracing", +] + +[[package]] +name = "ark-relations" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec46ddc93e7af44bcab5230937635b06fb5744464dd6a7e7b083e80ebd274384" +dependencies = [ + "ark-ff 0.5.0", + "ark-std 0.5.0", + "tracing", + "tracing-subscriber 0.2.25", +] + [[package]] name = "ark-serialize" version = "0.3.0" @@ -583,6 +791,24 @@ 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 = "atomic" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340" +dependencies = [ + "bytemuck", +] + [[package]] name = "aurora-engine-modexp" version = "1.2.0" @@ -638,6 +864,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + [[package]] name = "base64" version = "0.22.1" @@ -679,15 +911,30 @@ dependencies = [ "virtue", ] +[[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", + "bit-vec 0.8.0", ] +[[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" @@ -734,6 +981,12 @@ dependencies = [ "hex-conservative", ] +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.9.0" @@ -769,7 +1022,7 @@ checksum = "06e903a20b159e944f91ec8499fe1e55651480c541ea0a584f5d967c49ad9d99" dependencies = [ "arrayref", "arrayvec", - "constant_time_eq", + "constant_time_eq 0.3.1", ] [[package]] @@ -782,7 +1035,16 @@ dependencies = [ "arrayvec", "cc", "cfg-if", - "constant_time_eq", + "constant_time_eq 0.3.1", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array 0.14.7", ] [[package]] @@ -844,6 +1106,22 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "bstr" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "build_const" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" + [[package]] name = "bumpalo" version = "3.17.0" @@ -897,6 +1175,26 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bd91ee7b2422bcb158d90ef4d14f75ef67f340943fc4149891dcce8f8b972a3" +[[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.4" @@ -953,7 +1251,7 @@ dependencies = [ "tikv-jemallocator", "tracing", "tracing-forest", - "tracing-subscriber", + "tracing-subscriber 0.3.19", "vergen-git2", ] @@ -1047,13 +1345,13 @@ name = "ceno_crypto" version = "0.1.0" dependencies = [ "alloy-consensus", - "alloy-primitives", + "alloy-primitives 1.4.0", "ceno_keccak", "ceno_sha2", "ceno_syscall", "k256 0.13.4 (git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4)", "p256 0.13.2 (git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4)", - "revm-precompile", + "revm-precompile 27.0.0", "substrate-bn 0.6.0 (git+https://github.com/scroll-tech/bn?branch=ceno)", "thiserror 2.0.12", ] @@ -1086,7 +1384,7 @@ dependencies = [ "p256 0.13.2 (git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4)", "rayon", "rrs-succinct", - "rustc-hash", + "rustc-hash 2.1.1", "secp", "serde", "smallvec", @@ -1125,6 +1423,7 @@ dependencies = [ name = "ceno_recursion" version = "0.1.0" dependencies = [ + "anyhow", "bincode 1.3.3", "ceno-examples", "ceno_emul", @@ -1157,7 +1456,7 @@ dependencies = [ "sumcheck", "tracing", "tracing-forest", - "tracing-subscriber", + "tracing-subscriber 0.3.19", "transcript", "whir", "witness", @@ -1199,7 +1498,7 @@ source = "git+https://github.com/scroll-tech/ceno-patch.git?branch=main#bc61dbd5 name = "ceno_zkvm" version = "0.1.0" dependencies = [ - "base64", + "base64 0.22.1", "bincode 1.3.3", "ceno-examples", "ceno_emul", @@ -1232,7 +1531,7 @@ dependencies = [ "proptest", "rand 0.8.5", "rayon", - "rustc-hash", + "rustc-hash 2.1.1", "serde", "serde_json", "smallvec", @@ -1246,7 +1545,7 @@ dependencies = [ "tiny-keccak", "tracing", "tracing-forest", - "tracing-subscriber", + "tracing-subscriber 0.3.19", "transcript", "typenum", "whir", @@ -1298,6 +1597,16 @@ dependencies = [ "half", ] +[[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 = "clap" version = "4.5.37" @@ -1395,12 +1704,34 @@ 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.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -1440,6 +1771,15 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + [[package]] name = "criterion" version = "0.5.1" @@ -1693,6 +2033,7 @@ dependencies = [ "lock_api", "once_cell", "parking_lot_core", + "rayon", ] [[package]] @@ -1845,12 +2186,23 @@ dependencies = [ ] [[package]] -name = "derive_builder" -version = "0.20.2" +name = "derive-where" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ - "derive_builder_macro", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", ] [[package]] @@ -1875,6 +2227,19 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 2.0.101", +] + [[package]] name = "derive_more" version = "1.0.0" @@ -1932,12 +2297,21 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", + "block-buffer 0.10.4", "const-oid", "crypto-common", "subtle", ] +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + [[package]] name = "dirs-next" version = "2.0.0" @@ -1948,6 +2322,18 @@ dependencies = [ "dirs-sys-next", ] +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + [[package]] name = "dirs-sys-next" version = "0.1.2" @@ -1991,6 +2377,12 @@ version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dyn-clone" version = "1.0.20" @@ -2072,12 +2464,30 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ena" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5" +dependencies = [ + "log", +] + [[package]] name = "encode_unicode" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + [[package]] name = "endian-type" version = "0.1.2" @@ -2116,6 +2526,17 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -2132,12 +2553,138 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +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-core" +version = "2.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" +dependencies = [ + "arrayvec", + "bytes", + "chrono", + "const-hex", + "elliptic-curve", + "ethabi", + "generic-array 0.14.7", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "num_enum 0.7.4", + "open-fastrlp", + "rand 0.8.5", + "rlp", + "serde", + "serde_json", + "strum", + "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", + "semver 1.0.26", + "serde", + "serde_json", + "thiserror 1.0.69", + "tracing", +] + +[[package]] +name = "ethers-solc" +version = "2.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de34e484e7ae3cab99fbfd013d6c5dc7f9013676a4e0e414d8b12e1213e8b3ba" +dependencies = [ + "cfg-if", + "const-hex", + "dirs", + "dunce", + "ethers-core", + "futures-util", + "glob", + "home", + "md-5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.26", + "serde", + "serde_json", + "sha2 0.10.9", + "solang-parser", + "svm-rs", + "svm-rs-builds", + "thiserror 1.0.69", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi 0.5.1", +] + [[package]] name = "examples" version = "0.1.0" dependencies = [ "alloy-consensus", - "alloy-primitives", + "alloy-primitives 1.4.0", "ceno_crypto", "ceno_crypto_primitives", "ceno_keccak", @@ -2148,7 +2695,7 @@ dependencies = [ "k256 0.13.4 (git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4)", "p256 0.13.2 (git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4)", "rand 0.8.5", - "revm-precompile", + "revm-precompile 27.0.0", "substrate-bn 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-bn 0.6.0 (git+https://github.com/scroll-tech/bn?branch=ceno)", "tiny-keccak", @@ -2242,6 +2789,20 @@ dependencies = [ "serde", ] +[[package]] +name = "figment" +version = "0.10.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3" +dependencies = [ + "atomic", + "pear", + "serde", + "toml 0.8.22", + "uncased", + "version_check", +] + [[package]] name = "findshlibs" version = "0.10.2" @@ -2266,6 +2827,22 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "fnv" version = "1.0.7" @@ -2284,6 +2861,21 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "forge-fmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac0b82597ff80bc12b3b001dfb968769c345e353650dd32d337f2c64d2167c88" +dependencies = [ + "alloy-primitives 0.3.3", + "ariadne", + "foundry-config", + "itertools 0.11.0", + "solang-parser", + "thiserror 1.0.69", + "tracing", +] + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -2293,12 +2885,114 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "foundry-config" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a64a9bdad47eb4d950523b8ff14e675db8f2226a2aef79063d9344449b3abd5" +dependencies = [ + "Inflector", + "dirs-next", + "ethers-core", + "ethers-etherscan", + "ethers-solc", + "eyre", + "figment", + "globset", + "number_prefix", + "once_cell", + "open-fastrlp", + "path-slash", + "regex", + "reqwest", + "revm-primitives 1.3.0", + "semver 1.0.26", + "serde", + "serde_json", + "serde_regex", + "thiserror 1.0.69", + "toml 0.7.8", + "toml_edit 0.19.15", + "tracing", + "walkdir", +] + +[[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" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + [[package]] name = "gcd" version = "2.3.0" @@ -2388,7 +3082,7 @@ version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5220b8ba44c68a9a7f7a7659e864dd73692e417ef0211bea133c7b74e031eeb9" dependencies = [ - "bitflags", + "bitflags 2.9.0", "libc", "libgit2-sys", "log", @@ -2422,7 +3116,7 @@ dependencies = [ "tikv-jemallocator", "tracing", "tracing-forest", - "tracing-subscriber", + "tracing-subscriber 0.3.19", "transcript", "witness", ] @@ -2439,6 +3133,19 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +[[package]] +name = "globset" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.13", + "regex-syntax 0.8.5", +] + [[package]] name = "gmp-mpfr-sys" version = "1.6.8" @@ -2472,6 +3179,25 @@ dependencies = [ "subtle", ] +[[package]] +name = "h2" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 2.9.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + [[package]] name = "half" version = "2.6.0" @@ -2492,17 +3218,80 @@ dependencies = [ ] [[package]] -name = "halo2_proofs" -version = "0.1.0" +name = "halo2-axiom" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" +checksum = "0aee3f8178b78275038e5ea0e2577140056d2c4c87fccaf6777dc0a8eebe455a" dependencies = [ "blake2b_simd", - "ff 0.12.1", - "group 0.12.1", - "pasta_curves 0.4.1", - "rand_core 0.6.4", - "rayon", + "crossbeam", + "ff 0.13.1", + "group 0.13.0", + "halo2curves-axiom", + "itertools 0.11.0", + "maybe-rayon", + "pairing 0.23.0", + "rand 0.8.5", + "rand_core 0.6.4", + "rayon", + "rustc-hash 1.1.0", + "sha3", + "tracing", +] + +[[package]] +name = "halo2-base" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "678cf3adc0a39d7b4d9b82315a655201aa24a430dd1902b162c508047f56ac69" +dependencies = [ + "getset", + "halo2-axiom", + "itertools 0.11.0", + "log", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "poseidon-primitives", + "rand_chacha 0.3.1", + "rayon", + "rustc-hash 1.1.0", + "serde", + "serde_json", +] + +[[package]] +name = "halo2-ecc" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c00681fdd1febaf552d8814e9f5a6a142d81a1514102190da07039588b366" +dependencies = [ + "halo2-base", + "itertools 0.11.0", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "rayon", + "serde", + "serde_json", + "test-case", +] + +[[package]] +name = "halo2_proofs" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" +dependencies = [ + "blake2b_simd", + "ff 0.12.1", + "group 0.12.1", + "pasta_curves 0.4.1", + "rand_core 0.6.4", + "rayon", ] [[package]] @@ -2528,7 +3317,7 @@ dependencies = [ "rayon", "serde", "serde_arrays", - "sha2", + "sha2 0.10.9", "static_assertions", "subtle", "unroll", @@ -2556,7 +3345,7 @@ dependencies = [ "rayon", "serde", "serde_arrays", - "sha2", + "sha2 0.10.9", "static_assertions", "subtle", "unroll", @@ -2589,6 +3378,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", + "allocator-api2", ] [[package]] @@ -2600,6 +3390,7 @@ dependencies = [ "allocator-api2", "equivalent", "foldhash 0.1.5", + "serde", ] [[package]] @@ -2666,6 +3457,87 @@ 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.1", +] + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2 0.5.10", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls", + "tokio", + "tokio-rustls", +] + [[package]] name = "iana-time-zone" version = "0.1.64" @@ -2844,6 +3716,24 @@ 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" @@ -2900,6 +3790,27 @@ dependencies = [ "str_stack", ] +[[package]] +name = "inlinable_string" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" + +[[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 = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + [[package]] name = "is-terminal" version = "0.4.16" @@ -2926,6 +3837,15 @@ 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" @@ -2994,7 +3914,7 @@ dependencies = [ "ecdsa 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", "elliptic-curve", "once_cell", - "sha2", + "sha2 0.10.9", "signature", ] @@ -3010,7 +3930,7 @@ dependencies = [ "elliptic-curve", "hex", "once_cell", - "sha2", + "sha2 0.10.9", ] [[package]] @@ -3032,6 +3952,36 @@ dependencies = [ "sha3-asm", ] +[[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", + "regex", + "regex-syntax 0.8.5", + "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 0.4.13", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -3081,10 +4031,56 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags", + "bitflags 2.9.0", "libc", ] +[[package]] +name = "libsecp256k1" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79019718125edc905a079a70cfa5f3820bc76139fc91d6f9abc27ea2a887139" +dependencies = [ + "arrayref", + "base64 0.22.1", + "digest 0.9.0", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.5", + "serde", + "sha2 0.9.9", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + [[package]] name = "libz-sys" version = "1.1.22" @@ -3140,6 +4136,17 @@ dependencies = [ "hashbrown 0.15.3", ] +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", +] + [[package]] name = "matchers" version = "0.1.0" @@ -3159,6 +4166,26 @@ dependencies = [ "rawpointer", ] +[[package]] +name = "maybe-rayon" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest 0.10.7", +] + [[package]] name = "memchr" version = "2.7.4" @@ -3204,7 +4231,7 @@ dependencies = [ "once_cell", "tracing", "tracing-core", - "tracing-subscriber", + "tracing-subscriber 0.3.19", ] [[package]] @@ -3226,6 +4253,12 @@ dependencies = [ "sketches-ddsketch", ] +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + [[package]] name = "miniz_oxide" version = "0.8.8" @@ -3233,6 +4266,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" dependencies = [ "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +dependencies = [ + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.61.1", ] [[package]] @@ -3253,7 +4298,7 @@ dependencies = [ "serde", "sumcheck", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.19", "transcript", "whir", "witness", @@ -3289,6 +4334,12 @@ dependencies = [ "rawpointer", ] +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + [[package]] name = "nibble_vec" version = "0.1.0" @@ -3304,7 +4355,7 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags", + "bitflags 2.9.0", "cfg-if", "libc", ] @@ -3522,6 +4573,7 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 2.0.101", @@ -3536,6 +4588,12 @@ dependencies = [ "libc", ] +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + [[package]] name = "nums" version = "0.1.0" @@ -3583,10 +4641,41 @@ version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[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 = "openvm" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "bytemuck", "num-bigint 0.4.6", @@ -3599,7 +4688,7 @@ dependencies = [ [[package]] name = "openvm-algebra-circuit" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -3628,7 +4717,7 @@ dependencies = [ [[package]] name = "openvm-algebra-complex-macros" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-macros-common", "quote", @@ -3638,7 +4727,7 @@ dependencies = [ [[package]] name = "openvm-algebra-guest" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "halo2curves-axiom", "num-bigint 0.4.6", @@ -3654,7 +4743,7 @@ dependencies = [ [[package]] name = "openvm-algebra-moduli-macros" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "num-bigint 0.4.6", "num-prime", @@ -3666,7 +4755,7 @@ dependencies = [ [[package]] name = "openvm-algebra-transpiler" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-algebra-guest", "openvm-instructions", @@ -3680,7 +4769,7 @@ dependencies = [ [[package]] name = "openvm-bigint-circuit" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -3703,7 +4792,7 @@ dependencies = [ [[package]] name = "openvm-bigint-guest" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-platform", "strum_macros", @@ -3712,7 +4801,7 @@ dependencies = [ [[package]] name = "openvm-bigint-transpiler" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-bigint-guest", "openvm-instructions", @@ -3727,7 +4816,7 @@ dependencies = [ [[package]] name = "openvm-build" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "cargo_metadata 0.18.1", "eyre", @@ -3739,7 +4828,7 @@ dependencies = [ [[package]] name = "openvm-circuit" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "backtrace", "cfg-if", @@ -3767,7 +4856,7 @@ dependencies = [ "p3-baby-bear", "p3-field", "rand 0.8.5", - "rustc-hash", + "rustc-hash 2.1.1", "serde", "serde-big-array", "static_assertions", @@ -3778,7 +4867,7 @@ dependencies = [ [[package]] name = "openvm-circuit-derive" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "itertools 0.14.0", "proc-macro2", @@ -3789,7 +4878,7 @@ dependencies = [ [[package]] name = "openvm-circuit-primitives" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "derive-new 0.6.0", "itertools 0.14.0", @@ -3807,7 +4896,7 @@ dependencies = [ [[package]] name = "openvm-circuit-primitives-derive" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "itertools 0.14.0", "quote", @@ -3817,7 +4906,7 @@ dependencies = [ [[package]] name = "openvm-continuations" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "derivative", "openvm-circuit", @@ -3854,7 +4943,7 @@ dependencies = [ "p3-merkle-tree", "p3-symmetric", "p3-util", - "rustc-hash", + "rustc-hash 2.1.1", "serde", "serde_json", "thiserror 1.0.69", @@ -3887,7 +4976,7 @@ dependencies = [ [[package]] name = "openvm-custom-insn" version = "0.1.0" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "proc-macro2", "quote", @@ -3897,7 +4986,7 @@ dependencies = [ [[package]] name = "openvm-ecc-circuit" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -3926,7 +5015,7 @@ dependencies = [ [[package]] name = "openvm-ecc-guest" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "ecdsa 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", "elliptic-curve", @@ -3945,7 +5034,7 @@ dependencies = [ [[package]] name = "openvm-ecc-sw-macros" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-macros-common", "quote", @@ -3955,7 +5044,7 @@ dependencies = [ [[package]] name = "openvm-ecc-transpiler" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-ecc-guest", "openvm-instructions", @@ -3969,7 +5058,7 @@ dependencies = [ [[package]] name = "openvm-instructions" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "backtrace", "derive-new 0.6.0", @@ -3986,7 +5075,7 @@ dependencies = [ [[package]] name = "openvm-instructions-derive" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "quote", "syn 2.0.101", @@ -3995,7 +5084,7 @@ dependencies = [ [[package]] name = "openvm-keccak256-circuit" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -4020,7 +5109,7 @@ dependencies = [ [[package]] name = "openvm-keccak256-guest" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-platform", ] @@ -4028,7 +5117,7 @@ dependencies = [ [[package]] name = "openvm-keccak256-transpiler" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-instructions", "openvm-instructions-derive", @@ -4042,7 +5131,7 @@ dependencies = [ [[package]] name = "openvm-macros-common" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "syn 2.0.101", ] @@ -4050,7 +5139,7 @@ dependencies = [ [[package]] name = "openvm-mod-circuit-builder" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "itertools 0.14.0", "num-bigint 0.4.6", @@ -4068,7 +5157,7 @@ dependencies = [ [[package]] name = "openvm-native-circuit" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -4099,7 +5188,7 @@ dependencies = [ [[package]] name = "openvm-native-compiler" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "backtrace", "itertools 0.14.0", @@ -4113,6 +5202,7 @@ dependencies = [ "openvm-stark-backend", "openvm-stark-sdk", "serde", + "snark-verifier-sdk", "strum", "strum_macros", "zkhash", @@ -4121,7 +5211,7 @@ dependencies = [ [[package]] name = "openvm-native-compiler-derive" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "quote", "syn 2.0.101", @@ -4130,11 +5220,12 @@ dependencies = [ [[package]] name = "openvm-native-recursion" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "cfg-if", "itertools 0.14.0", "lazy_static", + "once_cell", "openvm-circuit", "openvm-native-circuit", "openvm-native-compiler", @@ -4148,13 +5239,15 @@ dependencies = [ "rand 0.8.5", "serde", "serde_json", + "serde_with", + "snark-verifier-sdk", "tracing", ] [[package]] name = "openvm-native-transpiler" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-instructions", "openvm-transpiler", @@ -4164,7 +5257,7 @@ dependencies = [ [[package]] name = "openvm-pairing-circuit" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -4193,7 +5286,7 @@ dependencies = [ [[package]] name = "openvm-pairing-guest" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "halo2curves-axiom", "hex-literal", @@ -4214,7 +5307,7 @@ dependencies = [ [[package]] name = "openvm-pairing-transpiler" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-instructions", "openvm-pairing-guest", @@ -4227,7 +5320,7 @@ dependencies = [ [[package]] name = "openvm-platform" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "libm", "openvm-custom-insn", @@ -4237,7 +5330,7 @@ dependencies = [ [[package]] name = "openvm-poseidon2-air" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "derivative", "lazy_static", @@ -4255,7 +5348,7 @@ dependencies = [ [[package]] name = "openvm-rv32-adapters" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "derive-new 0.6.0", "itertools 0.14.0", @@ -4272,7 +5365,7 @@ dependencies = [ [[package]] name = "openvm-rv32im-circuit" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -4295,7 +5388,7 @@ dependencies = [ [[package]] name = "openvm-rv32im-guest" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-custom-insn", "p3-field", @@ -4305,7 +5398,7 @@ dependencies = [ [[package]] name = "openvm-rv32im-transpiler" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-instructions", "openvm-instructions-derive", @@ -4321,8 +5414,9 @@ dependencies = [ [[package]] name = "openvm-sdk" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ + "alloy-sol-types", "bitcode", "bon", "cfg-if", @@ -4330,6 +5424,7 @@ dependencies = [ "derivative", "derive_more 1.0.0", "eyre", + "forge-fmt", "getset", "hex", "itertools 0.14.0", @@ -4366,27 +5461,29 @@ dependencies = [ "serde", "serde_json", "serde_with", + "snark-verifier", + "snark-verifier-sdk", "tempfile", "thiserror 1.0.69", - "toml", + "toml 0.8.22", "tracing", ] [[package]] name = "openvm-sha256-air" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-circuit-primitives", "openvm-stark-backend", "rand 0.8.5", - "sha2", + "sha2 0.10.9", ] [[package]] name = "openvm-sha256-circuit" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -4402,14 +5499,14 @@ dependencies = [ "openvm-stark-sdk", "rand 0.8.5", "serde", - "sha2", + "sha2 0.10.9", "strum", ] [[package]] name = "openvm-sha256-guest" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-platform", ] @@ -4417,7 +5514,7 @@ dependencies = [ [[package]] name = "openvm-sha256-transpiler" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "openvm-instructions", "openvm-instructions-derive", @@ -4449,10 +5546,11 @@ dependencies = [ "p3-uni-stark", "p3-util", "rayon", - "rustc-hash", + "rustc-hash 2.1.1", "serde", "serde_json", "thiserror 1.0.69", + "tikv-jemallocator", "tracing", ] @@ -4486,17 +5584,17 @@ dependencies = [ "serde", "serde_json", "static_assertions", - "toml", + "toml 0.8.22", "tracing", "tracing-forest", - "tracing-subscriber", + "tracing-subscriber 0.3.19", "zkhash", ] [[package]] name = "openvm-transpiler" version = "1.4.1" -source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Fv1.4.1-scroll-ext#ac5d1b48b46fc37981f56ed943fa4ae6fb580827" +source = "git+https://github.com/scroll-tech/openvm.git?branch=feat%2Foptional_native_sumcheck#3b83c3a98c6739dc16f5bdb16d409b3b83d73cbd" dependencies = [ "elf", "eyre", @@ -4507,6 +5605,12 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "ordered-float" version = "4.6.0" @@ -4531,7 +5635,7 @@ dependencies = [ "ecdsa 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", "elliptic-curve", "primeorder 0.13.6 (registry+https://github.com/rust-lang/crates.io-index)", - "sha2", + "sha2 0.10.9", ] [[package]] @@ -4544,7 +5648,7 @@ dependencies = [ "ecdsa 0.16.9 (registry+https://github.com/rust-lang/crates.io-index)", "elliptic-curve", "primeorder 0.13.6 (git+https://github.com/scroll-tech/elliptic-curves?branch=ceno%2Fk256-13.4)", - "sha2", + "sha2 0.10.9", ] [[package]] @@ -4988,6 +6092,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "487f2ccd1e17ce8c1bfab3a65c89525af41cfad4c8659021a1e9a2aacd73b89b" +[[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" @@ -5024,6 +6139,47 @@ 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 0.10.9", +] + +[[package]] +name = "pear" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" +dependencies = [ + "inlinable_string", + "pear_codegen", + "yansi 1.0.1", +] + +[[package]] +name = "pear_codegen" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147" +dependencies = [ + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.101", +] + [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -5050,12 +6206,70 @@ dependencies = [ "ucd-trie", ] +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.9.0", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project-lite" version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "pkcs8" version = "0.10.2" @@ -5125,6 +6339,21 @@ dependencies = [ "serde", ] +[[package]] +name = "poseidon-primitives" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4aaeda7a092e21165cc5f0cbc738e72a46f31c03c3cbd87b71ceae9d2d93bc" +dependencies = [ + "bitvec", + "ff 0.13.1", + "lazy_static", + "log", + "rand 0.8.5", + "rand_xorshift", + "thiserror 1.0.69", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -5162,6 +6391,12 @@ dependencies = [ "zerocopy 0.8.25", ] +[[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.2.34" @@ -5211,6 +6446,9 @@ checksum = "0b34d9fd68ae0b74a41b21c03c2f62847aa0ffea044eee893b4c140b37e244e2" dependencies = [ "fixed-hash", "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", "uint", ] @@ -5264,15 +6502,28 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "version_check", + "yansi 1.0.1", +] + [[package]] name = "proptest" version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ - "bit-set", - "bit-vec", - "bitflags", + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.9.0", "lazy_static", "num-traits", "rand 0.8.5", @@ -5354,6 +6605,7 @@ dependencies = [ "libc", "rand_chacha 0.3.1", "rand_core 0.6.4", + "serde", ] [[package]] @@ -5422,7 +6674,7 @@ version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags", + "bitflags 2.9.0", ] [[package]] @@ -5457,7 +6709,7 @@ version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" dependencies = [ - "bitflags", + "bitflags 2.9.0", ] [[package]] @@ -5535,6 +6787,209 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "reqwest" +version = "0.11.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +dependencies = [ + "base64 0.21.7", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "system-configuration", + "tokio", + "tokio-rustls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", + "winreg", +] + +[[package]] +name = "revm" +version = "24.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d277408ff8d6f747665ad9e52150ab4caf8d5eaf0d787614cf84633c8337b4" +dependencies = [ + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database", + "revm-database-interface", + "revm-handler", + "revm-inspector", + "revm-interpreter", + "revm-precompile 21.0.0", + "revm-primitives 19.2.0", + "revm-state", +] + +[[package]] +name = "revm-bytecode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "942fe4724cf552fd28db6b0a2ca5b79e884d40dd8288a4027ed1e9090e0c6f49" +dependencies = [ + "bitvec", + "once_cell", + "phf", + "revm-primitives 19.2.0", + "serde", +] + +[[package]] +name = "revm-context" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b01aad49e1233f94cebda48a4e5cef022f7c7ed29b4edf0d202b081af23435ef" +dependencies = [ + "cfg-if", + "derive-where", + "revm-bytecode", + "revm-context-interface", + "revm-database-interface", + "revm-primitives 19.2.0", + "revm-state", + "serde", +] + +[[package]] +name = "revm-context-interface" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b844f48a411e62c7dde0f757bf5cce49c85b86d6fc1d3b2722c07f2bec4c3ce" +dependencies = [ + "alloy-eip2930", + "alloy-eip7702", + "auto_impl", + "either", + "revm-database-interface", + "revm-primitives 19.2.0", + "revm-state", + "serde", +] + +[[package]] +name = "revm-database" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad3fbe34f6bb00a9c3155723b3718b9cb9f17066ba38f9eb101b678cd3626775" +dependencies = [ + "alloy-eips", + "revm-bytecode", + "revm-database-interface", + "revm-primitives 19.2.0", + "revm-state", + "serde", +] + +[[package]] +name = "revm-database-interface" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b8acd36784a6d95d5b9e1b7be3ce014f1e759abb59df1fa08396b30f71adc2a" +dependencies = [ + "auto_impl", + "revm-primitives 19.2.0", + "revm-state", + "serde", +] + +[[package]] +name = "revm-handler" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "481e8c3290ff4fa1c066592fdfeb2b172edfd14d12e6cade6f6f5588cad9359a" +dependencies = [ + "auto_impl", + "revm-bytecode", + "revm-context", + "revm-context-interface", + "revm-database-interface", + "revm-interpreter", + "revm-precompile 21.0.0", + "revm-primitives 19.2.0", + "revm-state", + "serde", +] + +[[package]] +name = "revm-inspector" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc1167ef8937d8867888e63581d8ece729a72073d322119ef4627d813d99ecb" +dependencies = [ + "auto_impl", + "revm-context", + "revm-database-interface", + "revm-handler", + "revm-interpreter", + "revm-primitives 19.2.0", + "revm-state", + "serde", + "serde_json", +] + +[[package]] +name = "revm-interpreter" +version = "20.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5ee65e57375c6639b0f50555e92a4f1b2434349dd32f52e2176f5c711171697" +dependencies = [ + "revm-bytecode", + "revm-context-interface", + "revm-primitives 19.2.0", + "serde", +] + +[[package]] +name = "revm-precompile" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f9311e735123d8d53a02af2aa81877bba185be7c141be7f931bb3d2f3af449c" +dependencies = [ + "ark-bls12-381", + "ark-bn254", + "ark-ec", + "ark-ff 0.5.0", + "ark-serialize 0.5.0", + "aurora-engine-modexp", + "blst", + "c-kzg", + "cfg-if", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libsecp256k1", + "once_cell", + "p256 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", + "revm-primitives 19.2.0", + "ripemd", + "secp256k1", + "sha2 0.10.9", +] + [[package]] name = "revm-precompile" version = "27.0.0" @@ -5551,9 +7006,36 @@ dependencies = [ "cfg-if", "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", "p256 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", - "revm-primitives", + "revm-primitives 20.2.1", "ripemd", - "sha2", + "sha2 0.10.9", +] + +[[package]] +name = "revm-primitives" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51187b852d9e458816a2e19c81f1dd6c924077e1a8fccd16e4f044f865f299d7" +dependencies = [ + "alloy-primitives 0.4.2", + "alloy-rlp", + "auto_impl", + "bitflags 2.9.0", + "bitvec", + "enumn", + "hashbrown 0.14.5", + "hex", +] + +[[package]] +name = "revm-primitives" +version = "19.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c1588093530ec4442461163be49c433c07a3235d1ca6f6799fef338dacc50d3" +dependencies = [ + "alloy-primitives 1.4.0", + "num_enum 0.7.4", + "serde", ] [[package]] @@ -5562,11 +7044,23 @@ version = "20.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5aa29d9da06fe03b249b6419b33968ecdf92ad6428e2f012dc57bcd619b5d94e" dependencies = [ - "alloy-primitives", + "alloy-primitives 1.4.0", "num_enum 0.7.4", "once_cell", ] +[[package]] +name = "revm-state" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0040c61c30319254b34507383ba33d85f92949933adf6525a2cede05d165e1fa" +dependencies = [ + "bitflags 2.9.0", + "revm-bytecode", + "revm-primitives 19.2.0", + "serde", +] + [[package]] name = "rfc6979" version = "0.4.0" @@ -5595,6 +7089,20 @@ dependencies = [ "bytemuck", ] +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + [[package]] name = "ripemd" version = "0.1.3" @@ -5611,9 +7119,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" dependencies = [ "bytes", + "rlp-derive", "rustc-hex", ] +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "rrs-lib" version = "0.1.0" @@ -5686,6 +7206,12 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc-hash" version = "2.1.1" @@ -5722,13 +7248,44 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags", + "bitflags 2.9.0", "errno", "libc", "linux-raw-sys", "windows-sys 0.59.0", ] +[[package]] +name = "rustls" +version = "0.21.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64 0.21.7", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "rustversion" version = "1.0.22" @@ -5816,6 +7373,16 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "sec1" version = "0.7.3" @@ -5943,6 +7510,7 @@ version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ + "indexmap 2.9.0", "itoa", "memchr", "serde", @@ -5950,6 +7518,16 @@ dependencies = [ "zmij", ] +[[package]] +name = "serde_regex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" +dependencies = [ + "regex", + "serde", +] + [[package]] name = "serde_spanned" version = "0.6.9" @@ -5959,13 +7537,25 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + [[package]] name = "serde_with" version = "3.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c522100790450cf78eeac1507263d0a350d4d5b30df0c8e1fe051a10c22b376e" dependencies = [ - "base64", + "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", @@ -5991,6 +7581,30 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + [[package]] name = "sha2" version = "0.10.9" @@ -6037,6 +7651,16 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + [[package]] name = "signature" version = "2.2.0" @@ -6047,12 +7671,30 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + [[package]] name = "sketches-ddsketch" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85636c14b73d81f541e525f585c0a2109e6744e1565b5c1668e31c70c10ed65c" +[[package]] +name = "slab" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" + [[package]] name = "smallvec" version = "1.15.0" @@ -6062,14 +7704,93 @@ dependencies = [ "serde", ] +[[package]] +name = "snark-verifier" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9203c416ff9de0762667270b21573ba5e6edaeda08743b3ca37dc8a5e0a4480" +dependencies = [ + "halo2-base", + "halo2-ecc", + "hex", + "itertools 0.11.0", + "lazy_static", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "pairing 0.23.0", + "rand 0.8.5", + "revm", + "ruint", + "serde", + "sha3", +] + +[[package]] +name = "snark-verifier-sdk" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290ae6e750d9d5fdf05393bbcae6bf7a63e3408eab023abf7d466156a234ac85" +dependencies = [ + "bincode 1.3.3", + "ethereum-types", + "getset", + "halo2-base", + "hex", + "itertools 0.11.0", + "lazy_static", + "num-bigint 0.4.6", + "num-integer", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "serde_json", + "snark-verifier", +] + [[package]] name = "snowbridge-amcl" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +checksum = "460a9ed63cdf03c1b9847e8a12a5f5ba19c4efd5869e4a737e05be25d7c427e5" +dependencies = [ + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "socket2" +version = "0.5.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "socket2" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881" +dependencies = [ + "libc", + "windows-sys 0.60.2", +] + +[[package]] +name = "solang-parser" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cb9fa2fa2fa6837be8a2495486ff92e3ffe68a99b6eeba288e139efdd842457" dependencies = [ - "parity-scale-codec", - "scale-info", + "itertools 0.11.0", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror 1.0.69", + "unicode-xid", ] [[package]] @@ -6134,6 +7855,18 @@ 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", + "phf_shared", + "precomputed-hash", +] + [[package]] name = "strsim" version = "0.11.1" @@ -6228,6 +7961,39 @@ dependencies = [ "syn 2.0.101", ] +[[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", + "semver 1.0.26", + "serde", + "serde_json", + "sha2 0.10.9", + "thiserror 1.0.69", + "url", + "zip", +] + +[[package]] +name = "svm-rs-builds" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa64b5e8eecd3a8af7cfc311e29db31a268a62d5953233d3e8243ec77a71c4e3" +dependencies = [ + "build_const", + "hex", + "semver 1.0.26", + "serde_json", + "svm-rs", +] + [[package]] name = "symbolic-common" version = "12.15.5" @@ -6273,6 +8039,24 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn-solidity" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab4e6eed052a117409a1a744c8bda9c3ea6934597cf7419f791cb7d590871c4c" +dependencies = [ + "paste", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "synstructure" version = "0.13.2" @@ -6284,6 +8068,27 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -6314,6 +8119,39 @@ dependencies = [ "winapi", ] +[[package]] +name = "test-case" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2550dd13afcd286853192af8601920d959b14c401fcece38071d53bf0768a8" +dependencies = [ + "test-case-macros", +] + +[[package]] +name = "test-case-core" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" +dependencies = [ + "cfg-if", + "proc-macro2", + "quote", + "syn 2.0.101", +] + +[[package]] +name = "test-case-macros" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.101", + "test-case-core", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -6466,6 +8304,57 @@ dependencies = [ "serde_json", ] +[[package]] +name = "tokio" +version = "1.49.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.6.1", + "windows-sys 0.61.1", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "indexmap 2.9.0", + "serde", + "serde_spanned", + "toml_datetime 0.6.9", + "toml_edit 0.19.15", +] + [[package]] name = "toml" version = "0.8.22" @@ -6503,6 +8392,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap 2.9.0", + "serde", + "serde_spanned", "toml_datetime 0.6.9", "winnow 0.5.40", ] @@ -6548,6 +8439,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + [[package]] name = "tracing" version = "0.1.41" @@ -6590,7 +8487,7 @@ dependencies = [ "smallvec", "thiserror 1.0.69", "tracing", - "tracing-subscriber", + "tracing-subscriber 0.3.19", ] [[package]] @@ -6604,6 +8501,15 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-subscriber" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" +dependencies = [ + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.3.19" @@ -6643,6 +8549,12 @@ dependencies = [ "strength_reduce", ] +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + [[package]] name = "typenum" version = "1.19.0" @@ -6673,6 +8585,15 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-ident" version = "1.0.18" @@ -6707,6 +8628,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "unty" version = "0.0.4" @@ -6833,6 +8760,15 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -6874,6 +8810,19 @@ dependencies = [ "wasm-bindgen-shared", ] +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +dependencies = [ + "cfg-if", + "js-sys", + "once_cell", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "wasm-bindgen-macro" version = "0.2.100" @@ -6916,6 +8865,12 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-roots" +version = "0.25.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" + [[package]] name = "whir" version = "0.1.0" @@ -7029,6 +8984,24 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.59.0" @@ -7047,6 +9020,30 @@ dependencies = [ "windows-targets 0.53.4", ] +[[package]] +name = "windows-sys" +version = "0.61.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -7080,6 +9077,12 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -7092,6 +9095,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -7104,6 +9113,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -7128,6 +9143,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -7140,6 +9161,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -7152,6 +9179,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -7164,6 +9197,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -7194,13 +9233,23 @@ dependencies = [ "memchr", ] +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + [[package]] name = "wit-bindgen-rt" version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags", + "bitflags 2.9.0", ] [[package]] @@ -7237,6 +9286,18 @@ dependencies = [ "tap", ] +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "yoke" version = "0.7.5" @@ -7364,6 +9425,26 @@ dependencies = [ "syn 2.0.101", ] +[[package]] +name = "zip" +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", + "sha1", + "time", + "zstd", +] + [[package]] name = "zkhash" version = "0.2.0" @@ -7385,7 +9466,7 @@ dependencies = [ "pasta_curves 0.5.1", "rand 0.8.5", "serde", - "sha2", + "sha2 0.10.9", "sha3", "subtle", ] @@ -7395,3 +9476,32 @@ name = "zmij" version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94f63c051f4fe3c1509da62131a678643c5b6fbdc9273b2b79d4378ebda003d2" + +[[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", +] + +[[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", +] + +[[package]] +name = "zstd-sys" +version = "2.0.16+zstd.1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" +dependencies = [ + "cc", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml index 0a75e8c40..b22213fb2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -92,16 +92,16 @@ ceno_gpu = { git = "https://github.com/scroll-tech/ceno-gpu-mock.git", package = cudarc = { version = "0.17.3", features = ["driver", "cuda-version-from-build-system"] } # ceno-recursion dependencies -openvm = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/v1.4.1-scroll-ext", default-features = false } -openvm-circuit = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/v1.4.1-scroll-ext", default-features = false } -openvm-continuations = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/v1.4.1-scroll-ext", default-features = false } -openvm-instructions = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/v1.4.1-scroll-ext", default-features = false } -openvm-native-circuit = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/v1.4.1-scroll-ext", default-features = false } -openvm-native-compiler = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/v1.4.1-scroll-ext", default-features = false } -openvm-native-compiler-derive = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/v1.4.1-scroll-ext", default-features = false } -openvm-native-recursion = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/v1.4.1-scroll-ext", default-features = false } -openvm-rv32im-circuit = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/v1.4.1-scroll-ext", default-features = false } -openvm-sdk = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/v1.4.1-scroll-ext", default-features = false } +openvm = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/optional_native_sumcheck", default-features = false } +openvm-circuit = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/optional_native_sumcheck", default-features = false } +openvm-continuations = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/optional_native_sumcheck", default-features = false } +openvm-instructions = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/optional_native_sumcheck", default-features = false } +openvm-native-circuit = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/optional_native_sumcheck", default-features = false } +openvm-native-compiler = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/optional_native_sumcheck", default-features = false } +openvm-native-compiler-derive = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/optional_native_sumcheck", default-features = false } +openvm-native-recursion = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/optional_native_sumcheck", default-features = false } +openvm-rv32im-circuit = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/optional_native_sumcheck", default-features = false } +openvm-sdk = { git = "https://github.com/scroll-tech/openvm.git", branch = "feat/optional_native_sumcheck", features = ["evm-prove", "evm-verify"] } openvm-cuda-backend = { git = "https://github.com/openvm-org/stark-backend.git", tag = "v1.2.1", default-features = false } openvm-stark-backend = { git = "https://github.com/openvm-org/stark-backend.git", tag = "v1.2.1", default-features = false } diff --git a/ceno_recursion/Cargo.toml b/ceno_recursion/Cargo.toml index 3b978aa56..9f21adb5d 100644 --- a/ceno_recursion/Cargo.toml +++ b/ceno_recursion/Cargo.toml @@ -46,6 +46,7 @@ tracing-subscriber.workspace = true transcript.workspace = true whir.workspace = true witness.workspace = true +anyhow.workspace = true [[bin]] name = "e2e_aggregate" diff --git a/ceno_recursion/src/aggregation/mod.rs b/ceno_recursion/src/aggregation/mod.rs index 1430ce100..bc68fe079 100644 --- a/ceno_recursion/src/aggregation/mod.rs +++ b/ceno_recursion/src/aggregation/mod.rs @@ -1,5 +1,5 @@ use crate::{ - aggregation::root::CenoRootVmVerifierConfig, + aggregation::{root::CenoRootVmVerifierConfig, statics::StaticProverVerifier}, zkvm_verifier::{ binding::{E, F, ZKVMProofInput, ZKVMProofInputVariable}, verifier::verify_zkvm_proof, @@ -37,15 +37,21 @@ use openvm_native_compiler::{ conversion::{CompilerOptions, convert_program}, prelude::*, }; -use openvm_native_recursion::hints::Hintable; +use openvm_native_recursion::{halo2::RawEvmProof, hints::Hintable}; use openvm_sdk::{ SC, config::DEFAULT_NUM_CHILDREN_INTERNAL, - prover::vm::{new_local_prover, types::VmProvingKey}, + keygen::{RootVerifierProvingKey, perm::AirIdPermutation}, + prover::{ + RootVerifierLocalProver, + vm::{new_local_prover, types::VmProvingKey}, + }, + util::check_max_constraint_degrees, }; use openvm_stark_backend::{ config::{Com, StarkGenericConfig}, engine::StarkEngine, + proof::Proof, }; #[cfg(not(feature = "gpu"))] use openvm_stark_sdk::config::baby_bear_poseidon2::BabyBearPoseidon2Engine; @@ -63,17 +69,20 @@ use serde::{Deserialize, Serialize}; use std::{fs::File, sync::Arc, time::Instant}; pub type RecPcs = Basefold; use crate::aggregation::types::{InternalVmVerifierPvs, VmVerifierPvs}; -use openvm_circuit::arch::{PUBLIC_VALUES_AIR_ID, SingleSegmentVmProver, instructions::exe::VmExe}; +use anyhow::Result; +use openvm_circuit::arch::{ + PUBLIC_VALUES_AIR_ID, PreflightExecutionOutput, SingleSegmentVmProver, instructions::exe::VmExe, +}; use openvm_continuations::RootSC; +use openvm_native_circuit::extension::Native; use openvm_native_compiler::{ asm::AsmConfig, ir::{Builder, Config, Felt}, }; -use openvm_sdk::util::check_max_constraint_degrees; -use openvm_stark_backend::proof::Proof; mod internal; mod root; +mod statics; mod types; pub type InnerConfig = AsmConfig; @@ -87,12 +96,17 @@ const VM_MAX_TRACE_HEIGHTS: &[u32] = &[ 4194304, 4, 128, 2097152, 8388608, 4194304, 262144, 8388608, 16777216, 2097152, 16777216, 2097152, 8388608, 262144, 2097152, 1048576, 4194304, 1048576, 262144, ]; - +const ROOT_VM_MAX_TRACE_HEIGHTS: &[u32] = &[ + 4194304, 4, 128, 2097152, 8388608, 4194304, 262144, 2097152, 16777216, 2097152, 8388608, + 262144, 2097152, 1048576, 4194304, 1048576, 262144, +]; pub struct CenoAggregationProver { pub base_vk: ZKVMVerifyingKey>, pub leaf_prover: VmInstance, pub internal_prover: VmInstance, pub root_prover: VmInstance, + pub permuted_root_prover: Option, + pub static_prover_verifier: StaticProverVerifier, pub vk: CenoRecursionVerifierKeys, pub pk: CenoRecursionProvingKeys, } @@ -110,6 +124,8 @@ impl CenoAggregationProver { leaf_prover, internal_prover, root_prover, + permuted_root_prover: None, + static_prover_verifier: StaticProverVerifier::new(), vk: pk.get_vk(), pk, } @@ -134,7 +150,7 @@ impl CenoAggregationProver { .with_max_segment_len((1 << 24) - 100) .with_profiling() .without_continuations(), - native: Default::default(), + native: Native(true), }; // Leaf layer keygen @@ -187,7 +203,7 @@ impl CenoAggregationProver { .with_max_segment_len((1 << 24) - 100) .with_profiling() .without_continuations(), - native: Default::default(), + native: Native(true), }; // Internal keygen @@ -232,7 +248,7 @@ impl CenoAggregationProver { system: SystemConfig::new( SBOX_SIZE.min(ROOT_MAX_CONSTRAINT_DEG), MemoryConfig { - max_access_adapter_n: 16, + max_access_adapter_n: 8, ..Default::default() }, ROOT_NUM_PUBLIC_VALUES, @@ -240,11 +256,12 @@ impl CenoAggregationProver { .without_continuations() .with_max_segment_len((1 << 24) - 100) .with_profiling(), - native: Default::default(), + native: Native(false), }; let mut root_engine = BabyBearPoseidon2RootEngine::new(root_fri_params); root_engine.max_constraint_degree = ROOT_MAX_CONSTRAINT_DEG; + let (root_vm, root_vm_pk) = VirtualMachine::<_, NativeCpuBuilder>::new_with_keygen( root_engine, Default::default(), @@ -263,7 +280,6 @@ impl CenoAggregationProver { root_program.into(), root_vm.engine.config().pcs(), )); - let root_vm_pk = Arc::new(VmProvingKey { fri_params: root_fri_params, vm_config: root_vm_config, @@ -292,6 +308,7 @@ impl CenoAggregationProver { internal_committed_exe, root_vm_pk, root_committed_exe, + permuted_root_pk: None, }; Self { @@ -299,6 +316,8 @@ impl CenoAggregationProver { leaf_prover, internal_prover, root_prover, + permuted_root_prover: None, + static_prover_verifier: StaticProverVerifier::new(), vk, pk, } @@ -416,6 +435,11 @@ impl CenoAggregationProver { let last_internal = proofs.pop().unwrap(); + // Export last internal proof + let file = + File::create("./src/exports/internal_proof.bin").expect("Create export proof file"); + bincode::serialize_into(file, &last_internal).expect("failed to serialize internal proof"); + // _todo: possible multi-layer wrapping for reducing AIR heights let root_input = RootVmVerifierInput { @@ -423,32 +447,109 @@ impl CenoAggregationProver { public_values: user_public_values, }; + // Initiate the root prover with AIR height permutation + // This step is skipped if the permuted root prover is already initiated + // (either from a run of `generate_root_proof`` or with a dummy) + let root_permutation_start_timestamp = Instant::now(); + if self.permuted_root_prover.is_none() { + self.init_root_prover_with_permutation(&root_input); + } + println!( + "Root - AIR-permuted root prover is not initiated. Completed initiation at: {:?}", + root_permutation_start_timestamp.elapsed() + ); + + // Generate root proof (AIR-permuted) let root_start_timestamp = Instant::now(); - let root_proof = SingleSegmentVmProver::prove( - &mut self.root_prover, + let air_permuted_root_proof = SingleSegmentVmProver::prove( + self.permuted_root_prover.as_mut().unwrap(), root_input.write(), - VM_MAX_TRACE_HEIGHTS, + ROOT_VM_MAX_TRACE_HEIGHTS, ) - .expect("root proof generation should pass"); + .expect("root proof"); + + // Export root proof + let file = File::create("./src/exports/root_proof.bin").expect("Create export proof file"); + bincode::serialize_into(file, &air_permuted_root_proof) + .expect("failed to serialize root proof"); + println!( "Root - Completed root proof at: {:?}", root_start_timestamp.elapsed() ); - // Export root proof - let file = File::create("root_proof.bin").expect("Create export proof file"); - bincode::serialize_into(file, &root_proof).expect("failed to serialize internal proof"); + air_permuted_root_proof + } + + pub fn prove_static(&mut self, root_proof: &Proof) -> RawEvmProof { + let halo2_proof = self + .static_prover_verifier + .prove_static(root_proof, &self.pk); - root_proof + // Export halo2 proof + let file = File::create("./src/exports/halo2_proof.bin").expect("Create export proof file"); + bincode::serialize_into(file, &halo2_proof).expect("failed to serialize halo2 proof"); + + halo2_proof } - pub fn verify_root_proof(&self, root_proof: &Proof) -> Result<(), VerificationError> { - self.root_prover - .vm - .engine - .verify(&self.vk.root_vm_vk, root_proof)?; + pub fn verify_static(&mut self, halo2_proof: RawEvmProof) -> Result<()> { + let _ = self.static_prover_verifier.verify_static(halo2_proof); Ok(()) } + + pub fn init_root_prover_with_permutation(&mut self, root_input: &RootVmVerifierInput) { + self.root_prover.reset_state(root_input.write()); + let mut trace_heights = ROOT_VM_MAX_TRACE_HEIGHTS.to_vec(); + + let num_public_values = self.root_prover.vm.config().as_ref().num_public_values as u32; + trace_heights[PUBLIC_VALUES_AIR_ID] = num_public_values; + + let state = self + .root_prover + .state + .take() + .expect("vm state should exist"); + let vm = &mut self.root_prover.vm; + vm.transport_init_memory_to_device(&state.memory); + + let PreflightExecutionOutput { + system_records, + record_arenas, + to_state: _, + } = vm + .execute_preflight( + &mut self.root_prover.interpreter, + state, + None, + &trace_heights, + ) + .expect("execute preflight"); + + let ctx = vm + .generate_proving_ctx(system_records, record_arenas) + .expect("proving context"); + let air_heights: Vec = ctx + .into_iter() + .map(|(_, air_ctx)| air_ctx.main_trace_height().next_power_of_two() as u32) + .collect(); + let root_air_perm = AirIdPermutation::compute(&air_heights); + let mut root_vm_pk = self.pk.root_vm_pk.vm_pk.clone(); + root_air_perm.permute(&mut root_vm_pk.per_air); + + let root_permuted_pk = RootVerifierProvingKey { + vm_pk: Arc::new(VmProvingKey { + fri_params: self.pk.root_vm_pk.fri_params, + vm_config: self.pk.root_vm_pk.vm_config.clone(), + vm_pk: root_vm_pk, + }), + root_committed_exe: self.pk.root_committed_exe.clone(), + air_heights, + }; + self.permuted_root_prover = + Some(RootVerifierLocalProver::new(&root_permuted_pk).expect("create a root prover")); + self.pk.permuted_root_pk = Some(Arc::new(root_permuted_pk)); + } } pub fn verify_root_proof( @@ -588,6 +689,7 @@ pub struct CenoRecursionProvingKeys { pub internal_committed_exe: Arc>, pub root_vm_pk: Arc>, pub root_committed_exe: Arc>, + pub permuted_root_pk: Option>, } impl Clone for CenoRecursionProvingKeys { @@ -599,6 +701,7 @@ impl Clone for CenoRecursionProvingKeys { internal_committed_exe: self.internal_committed_exe.clone(), root_vm_pk: self.root_vm_pk.clone(), root_committed_exe: self.root_committed_exe.clone(), + permuted_root_pk: self.permuted_root_pk.clone(), } } } @@ -720,7 +823,10 @@ pub fn verify_proofs( #[cfg(test)] mod tests { use crate::{ - aggregation::{CenoAggregationProver, verify_proofs, verify_root_proof}, + aggregation::{ + CenoAggregationProver, F, RootVmVerifierInput, ZKVMProofInput, verify_proofs, + verify_root_proof, + }, zkvm_verifier::binding::E, }; use ceno_zkvm::{ @@ -729,9 +835,50 @@ mod tests { structs::ZKVMVerifyingKey, }; use mpcs::{Basefold, BasefoldRSParams}; + use openvm_sdk::SC; + use openvm_stark_backend::proof::Proof; use openvm_stark_sdk::config::setup_tracing_with_log_level; use std::fs::File; + pub fn root_proof_permutation_inner_thread() { + setup_tracing_with_log_level(tracing::Level::WARN); + + let proof_path = "./src/imported/proof.bin"; + let vk_path = "./src/imported/vk.bin"; + let internal_proof_path = "./src/exports/internal_proof.bin"; + + let zkvm_proofs: Vec>> = + bincode::deserialize_from(File::open(proof_path).expect("Failed to open proof file")) + .expect("Failed to deserialize proof file"); + + let vk: ZKVMVerifyingKey> = + bincode::deserialize_from(File::open(vk_path).expect("Failed to open vk file")) + .expect("Failed to deserialize vk file"); + let mut agg_prover = CenoAggregationProver::from_base_vk(vk); + + // _debug + let internal_proof: Proof = bincode::deserialize_from( + File::open(internal_proof_path).expect("Failed to open proof file"), + ) + .expect("Failed to deserialize proof file"); + + let zkvm_proof_inputs: Vec = zkvm_proofs + .into_iter() + .enumerate() + .map(|(shard_id, p)| ZKVMProofInput::from_proof(shard_id, p, &agg_prover.base_vk)) + .collect(); + let user_public_values: Vec = zkvm_proof_inputs + .iter() + .flat_map(|p| p.raw_pi.iter().flat_map(|v| v.clone()).collect::>()) + .collect(); + let root_input = RootVmVerifierInput { + proofs: vec![internal_proof], + public_values: user_public_values, + }; + + agg_prover.init_root_prover_with_permutation(&root_input); + } + pub fn aggregation_inner_thread() { setup_tracing_with_log_level(tracing::Level::WARN); @@ -748,16 +895,10 @@ mod tests { let mut agg_prover = CenoAggregationProver::from_base_vk(vk); let root_proof = agg_prover.generate_root_proof(zkvm_proofs); - - // Verify generated aggregated root_proof - // Method 1: Verify the root proof using the aggregation prover + let halo2_proof = agg_prover.prove_static(&root_proof); agg_prover - .verify_root_proof(&root_proof) - .expect("root proof verification should pass"); - - // Method 2: Use stand-alone verification with only vk - verify_root_proof(&agg_prover.vk, &root_proof) - .expect("root proof verification should pass"); + .verify_static(halo2_proof) + .expect("halo2 proof is ok"); } pub fn verify_single_inner_thread() { @@ -797,9 +938,22 @@ mod tests { #[test] #[ignore = "need to generate proof first"] - pub fn test_aggregation() { + pub fn test_root_proof_permutation() { let stack_size = 256 * 1024 * 1024; // 64 MB + let handler = std::thread::Builder::new() + .stack_size(stack_size) + .spawn(root_proof_permutation_inner_thread) + .expect("Failed to spawn thread"); + + handler.join().expect("Thread panicked"); + } + + #[test] + #[ignore = "need to generate proof first"] + pub fn test_aggregation() { + let stack_size = 1024 * 1024 * 1024; // 512 MB + let handler = std::thread::Builder::new() .stack_size(stack_size) .spawn(aggregation_inner_thread) diff --git a/ceno_recursion/src/aggregation/root.rs b/ceno_recursion/src/aggregation/root.rs index cc93532cd..f506e97ac 100644 --- a/ceno_recursion/src/aggregation/root.rs +++ b/ceno_recursion/src/aggregation/root.rs @@ -77,6 +77,16 @@ impl CenoRootVmVerifierPvs { ret.extend(self.public_values); ret } + + pub fn from_flatten(flatten: Vec) -> Self { + let init_pc = flatten[1]; + let public_values = flatten[1..].to_vec(); + + Self { + init_pc, + public_values, + } + } } impl CenoRootVmVerifierConfig { diff --git a/ceno_recursion/src/aggregation/statics.rs b/ceno_recursion/src/aggregation/statics.rs new file mode 100644 index 000000000..ab66a5c88 --- /dev/null +++ b/ceno_recursion/src/aggregation/statics.rs @@ -0,0 +1,194 @@ +use crate::{ + aggregation::{CenoRecursionProvingKeys, root::CenoRootVmVerifierPvs}, + zkvm_verifier::binding::F, +}; +use anyhow::Result; +use openvm_continuations::{ + RootSC, static_verifier::StaticVerifierPvHandler, verifier::common::types::SpecialAirIds, +}; +#[cfg(feature = "gpu")] +use openvm_cuda_backend::engine::GpuBabyBearPoseidon2Engine as BabyBearPoseidon2Engine; +use openvm_native_circuit::NativeConfig; +use openvm_native_compiler::ir::Builder; +use openvm_native_recursion::{ + config::outer::OuterConfig, + halo2::{ + RawEvmProof, + utils::{CacheHalo2ParamsReader, Halo2ParamsReader}, + wrapper::{FallbackEvmVerifier, Halo2WrapperProvingKey}, + }, + vars::StarkProofVariable, +}; +use openvm_sdk::{config::Halo2Config, keygen::Halo2ProvingKey, prover::Halo2Prover}; +use openvm_stark_backend::proof::Proof; +use openvm_stark_sdk::config::baby_bear_poseidon2::BabyBearPoseidon2Config; +use p3::field::FieldAlgebra; +use std::sync::Arc; + +pub const HALO2_VERIFIER_K: usize = 23; + +pub struct StaticProverVerifier { + config: Halo2Config, + params_reader: CacheHalo2ParamsReader, + static_pv_handler: StaticPvHandler, + prover: Option, // expensive to construct + verifier: Option, +} + +pub struct StaticPvHandler { + pub _init_pc: F, +} +impl StaticPvHandler { + pub fn init() -> Self { + Self { _init_pc: F::ZERO } + } +} + +impl StaticVerifierPvHandler for StaticPvHandler { + fn handle_public_values( + &self, + builder: &mut Builder, + input: &StarkProofVariable, + special_air_ids: &SpecialAirIds, + ) -> usize { + let pv_air = builder.get(&input.per_air, special_air_ids.public_values_air_id); + let public_values: Vec<_> = pv_air + .public_values + .vec() + .into_iter() + .map(|x| builder.cast_felt_to_var(x)) + .collect(); + let pvs = CenoRootVmVerifierPvs::from_flatten(public_values); + + pvs.public_values.len() + } +} +impl Default for StaticProverVerifier { + fn default() -> Self { + Self::new() + } +} +impl StaticProverVerifier { + pub fn new() -> Self { + let params_reader = CacheHalo2ParamsReader::new("./src/params/"); + let halo2_config = Halo2Config { + verifier_k: HALO2_VERIFIER_K, + wrapper_k: None, // Auto-tuned + profiling: false, + }; + let static_pv_handler = StaticPvHandler::init(); + Self { + config: halo2_config, + params_reader, + static_pv_handler, + prover: None, + verifier: None, + } + } + pub fn init( + &mut self, + root_proof: &Proof, + ceno_recursion_key: &CenoRecursionProvingKeys, + ) { + assert!(ceno_recursion_key.permuted_root_pk.is_some()); + + let verifier = ceno_recursion_key + .permuted_root_pk + .as_ref() + .unwrap() + .keygen_static_verifier( + &self.params_reader.read_params(self.config.verifier_k), + root_proof.clone(), + &self.static_pv_handler, + ); + let dummy_snark = verifier.generate_dummy_snark(&self.params_reader); + let wrapper = if let Some(wrapper_k) = self.config.wrapper_k { + Halo2WrapperProvingKey::keygen(&self.params_reader.read_params(wrapper_k), dummy_snark) + } else { + Halo2WrapperProvingKey::keygen_auto_tune(&self.params_reader, dummy_snark) + }; + + let halo2_pk = Halo2ProvingKey { + verifier: Arc::new(verifier), + wrapper: Arc::new(wrapper), + profiling: self.config.profiling, + }; + + // Update prover/verifier + let wrapper_k = halo2_pk.wrapper.pinning.metadata.config_params.k; + let params = self.params_reader.read_params(wrapper_k); + let static_verifier = halo2_pk.wrapper.generate_fallback_evm_verifier(¶ms); + let prover = Halo2Prover::new(&self.params_reader, halo2_pk); + + self.prover = Some(prover); + self.verifier = Some(static_verifier); + } + + pub fn prove_static( + &mut self, + root_proof: &Proof, + ceno_recursion_key: &CenoRecursionProvingKeys, + ) -> RawEvmProof { + if self.prover.is_none() { + self.init(root_proof, ceno_recursion_key); + } + self.prover + .as_ref() + .unwrap() + .prove_for_evm(root_proof) + .try_into() + .expect("generate halo2 proof") + } + + pub fn verify_static(&mut self, proof: RawEvmProof) -> Result<()> { + let static_verifier = self + .verifier + .as_ref() + .expect("static verifier must be initiated"); + Halo2WrapperProvingKey::evm_verify(static_verifier, &proof).unwrap(); + Ok(()) + } +} + +#[cfg(test)] +mod tests { + use crate::{aggregation::CenoAggregationProver, zkvm_verifier::binding::E}; + use ceno_zkvm::structs::ZKVMVerifyingKey; + use mpcs::{Basefold, BasefoldRSParams}; + use openvm_continuations::RootSC; + use openvm_stark_backend::proof::Proof; + use openvm_stark_sdk::config::setup_tracing_with_log_level; + use std::fs::File; + + pub fn test_static_verifier_inner_thread() { + setup_tracing_with_log_level(tracing::Level::WARN); + + let vk_path = "./src/imported/vk.bin"; + let vk: ZKVMVerifyingKey> = + bincode::deserialize_from(File::open(vk_path).expect("Failed to open vk file")) + .expect("Failed to deserialize vk file"); + let mut agg_prover = CenoAggregationProver::from_base_vk(vk); + + let root_proof_path = "./src/exports/root_proof.bin"; + let root_proof: Proof = bincode::deserialize_from( + File::open(root_proof_path).expect("Failed to open proof file"), + ) + .expect("Deserialize root proof"); + + // let halo2_proof = agg_prover.prove_static(&root_proof); + // agg_prover.verify_static(halo2_proof); + } + + #[test] + // #[ignore = "need to generate proof first"] + pub fn test_static_verifier() { + let stack_size = 256 * 1024 * 1024; // 64 MB + + let handler = std::thread::Builder::new() + .stack_size(stack_size) + .spawn(test_static_verifier_inner_thread) + .expect("Failed to spawn thread"); + + handler.join().expect("Thread panicked"); + } +} diff --git a/ceno_recursion/src/arithmetics/mod.rs b/ceno_recursion/src/arithmetics/mod.rs index 4d78d0315..5635b68d6 100644 --- a/ceno_recursion/src/arithmetics/mod.rs +++ b/ceno_recursion/src/arithmetics/mod.rs @@ -1063,7 +1063,7 @@ mod tests { let system_config = SystemConfig::default() .with_public_values(20) .with_max_segment_len((1 << 22) - 100); - let config = NativeConfig::new(system_config, Native); + let config = NativeConfig::new(system_config, Native(true)); let executor = VmExecutor::::new(config).expect("executor initiation"); let exe = VmExe::new(program); diff --git a/ceno_recursion/src/basefold_verifier/hash.rs b/ceno_recursion/src/basefold_verifier/hash.rs index d13d790ac..d177d20b4 100644 --- a/ceno_recursion/src/basefold_verifier/hash.rs +++ b/ceno_recursion/src/basefold_verifier/hash.rs @@ -74,7 +74,7 @@ mod tests { // configure the VM executor let system_config = SystemConfig::default().with_max_segment_len(1 << 20); - let config = NativeConfig::new(system_config, Native); + let config = NativeConfig::new(system_config, Native(true)); let executor = VmExecutor::new(config).unwrap(); // prepare input diff --git a/ceno_recursion/src/basefold_verifier/mmcs.rs b/ceno_recursion/src/basefold_verifier/mmcs.rs index d4a59e0ad..973a67501 100644 --- a/ceno_recursion/src/basefold_verifier/mmcs.rs +++ b/ceno_recursion/src/basefold_verifier/mmcs.rs @@ -255,7 +255,7 @@ pub mod tests { let system_config = SystemConfig::default() .with_public_values(4) .with_max_segment_len((1 << 25) - 100); - let config = NativeConfig::new(system_config, Native); + let config = NativeConfig::new(system_config, Native(true)); let executor = VmExecutor::::new(config).unwrap(); diff --git a/ceno_recursion/src/basefold_verifier/query_phase.rs b/ceno_recursion/src/basefold_verifier/query_phase.rs index 6bf40113f..a158fa4b7 100644 --- a/ceno_recursion/src/basefold_verifier/query_phase.rs +++ b/ceno_recursion/src/basefold_verifier/query_phase.rs @@ -944,7 +944,7 @@ pub mod tests { let system_config = SystemConfig::default() .with_public_values(4) .with_max_segment_len((1 << 25) - 100); - let config = NativeConfig::new(system_config, Native); + let config = NativeConfig::new(system_config, Native(true)); let exe = VmExe::new(program); let executor = VmExecutor::::new(config.clone()).unwrap(); diff --git a/ceno_recursion/src/basefold_verifier/rs.rs b/ceno_recursion/src/basefold_verifier/rs.rs index c70ce2d49..305753a30 100644 --- a/ceno_recursion/src/basefold_verifier/rs.rs +++ b/ceno_recursion/src/basefold_verifier/rs.rs @@ -274,7 +274,7 @@ pub mod tests { let system_config = SystemConfig::default() .with_public_values(4) .with_max_segment_len((1 << 25) - 100); - let config = NativeConfig::new(system_config, Native); + let config = NativeConfig::new(system_config, Native(true)); let executor = VmExecutor::::new(config).unwrap(); let exe = VmExe::new(program); diff --git a/ceno_recursion/src/basefold_verifier/verifier.rs b/ceno_recursion/src/basefold_verifier/verifier.rs index c343660d0..6ce433eab 100644 --- a/ceno_recursion/src/basefold_verifier/verifier.rs +++ b/ceno_recursion/src/basefold_verifier/verifier.rs @@ -374,7 +374,7 @@ pub mod tests { .with_public_values(4) .with_max_segment_len((1 << 25) - 100) .with_profiling(); - let config = NativeConfig::new(system_config, Native); + let config = NativeConfig::new(system_config, Native(true)); // _debug // let executor = VmExecutor::::new(config); diff --git a/ceno_recursion/src/bin/e2e_aggregate.rs b/ceno_recursion/src/bin/e2e_aggregate.rs index 7f6e94120..ca5235877 100644 --- a/ceno_recursion/src/bin/e2e_aggregate.rs +++ b/ceno_recursion/src/bin/e2e_aggregate.rs @@ -270,5 +270,6 @@ fn main() { let vk = result.vk.expect("PrepSanityCheck should yield vk."); let mut agg_prover = CenoAggregationProver::from_base_vk(vk); - let _ = agg_prover.generate_root_proof(zkvm_proofs); + let root_proof = agg_prover.generate_root_proof(zkvm_proofs); + let _halo2_proof = agg_prover.prove_static(&root_proof); } diff --git a/ceno_recursion/src/extensions/mod.rs b/ceno_recursion/src/extensions/mod.rs index 6e92fbd60..d518774f8 100644 --- a/ceno_recursion/src/extensions/mod.rs +++ b/ceno_recursion/src/extensions/mod.rs @@ -49,7 +49,7 @@ mod tests { .with_public_values(4) .with_max_segment_len((1 << 25) - 100); system_config.profiling = true; - let config = NativeConfig::new(system_config, Native); + let config = NativeConfig::new(system_config, Native(true)); let executor = VmExecutor::::new(config).unwrap(); let exe = VmExe::new(program);