diff --git a/Cargo.lock b/Cargo.lock index 43547d8b..f46a5f1f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -75,7 +75,7 @@ dependencies = [ "c-kzg", "derive_more 2.1.1", "either", - "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "k256", "once_cell", "rand 0.8.6", "secp256k1", @@ -130,7 +130,7 @@ checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives", "alloy-rlp", - "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "k256", "serde", "serde_with", "thiserror", @@ -244,7 +244,7 @@ dependencies = [ "hashbrown 0.17.1", "indexmap 2.14.0", "itoa", - "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "k256", "paste", "rand 0.9.4", "ruint", @@ -945,17 +945,6 @@ dependencies = [ "wyz", ] -[[package]] -name = "blake2b_simd" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b79834656f71332577234b50bfc009996f7449e0c056884e6a02492ded0ca2f3" -dependencies = [ - "arrayref", - "arrayvec", - "constant_time_eq", -] - [[package]] name = "blake3" version = "1.8.5" @@ -988,31 +977,6 @@ dependencies = [ "hybrid-array", ] -[[package]] -name = "bls12_381" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7bc6d6292be3a19e6379786dac800f551e5865a5bb51ebbe3064ab80433f403" -dependencies = [ - "ff", - "group", - "pairing", - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "bls12_381" -version = "0.8.0" -source = "git+https://github.com/zkcrypto/bls12_381?rev=6bb96951d5c2035caf4989b6e4a018435379590f#6bb96951d5c2035caf4989b6e4a018435379590f" -dependencies = [ - "digest 0.10.7", - "ff", - "group", - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "blst" version = "0.3.16" @@ -1733,7 +1697,7 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "ere-catalog" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "ere-util-build", "serde", @@ -1743,12 +1707,12 @@ dependencies = [ [[package]] name = "ere-codec" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" [[package]] name = "ere-compiler-core" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "serde", ] @@ -1756,7 +1720,7 @@ dependencies = [ [[package]] name = "ere-dockerized" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "anyhow", "ere-catalog", @@ -1773,12 +1737,12 @@ dependencies = [ [[package]] name = "ere-platform-core" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" [[package]] name = "ere-prover-core" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "anyhow", "auto_impl", @@ -1795,7 +1759,7 @@ dependencies = [ [[package]] name = "ere-server-api" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "prost", "serde", @@ -1805,7 +1769,7 @@ dependencies = [ [[package]] name = "ere-server-client" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "bincode 2.0.1", "ere-prover-core", @@ -1817,7 +1781,7 @@ dependencies = [ [[package]] name = "ere-util-build" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "cargo_metadata", ] @@ -1825,7 +1789,7 @@ dependencies = [ [[package]] name = "ere-util-tokio" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "tokio", ] @@ -1833,7 +1797,7 @@ dependencies = [ [[package]] name = "ere-verifier-core" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "auto_impl", "ere-codec", @@ -1898,7 +1862,7 @@ dependencies = [ "libssz-derive", "libssz-merkle", "libssz-types", - "lru 0.16.4", + "lru", "once_cell", "rkyv", "rustc-hash", @@ -1920,11 +1884,11 @@ dependencies = [ "blst", "ethereum-types", "hex-literal 0.4.1", - "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "k256", "kzg-rs", "malachite", "num-bigint 0.4.6", - "p256 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", + "p256", "ripemd 0.1.3", "secp256k1", "sha2 0.10.9", @@ -1964,7 +1928,7 @@ dependencies = [ "ethereum-types", "ethrex-common", "ethrex-crypto", - "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "k256", "lambdaworks-crypto", "rkyv", "serde", @@ -2363,33 +2327,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "halo2curves-axiom" -version = "0.7.3" -source = "git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.3#d744f712fbeaf62576b2b10842822919551c5ef8" -dependencies = [ - "blake2b_simd", - "digest 0.10.7", - "ff", - "group", - "hex", - "lazy_static", - "num-bigint 0.4.6", - "num-traits", - "pairing", - "pasta_curves", - "paste", - "rand 0.8.6", - "rand_core 0.6.4", - "rayon", - "serde", - "serde_arrays 0.1.0", - "sha2 0.10.9", - "static_assertions", - "subtle", - "unroll", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -2409,7 +2346,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", - "equivalent", "foldhash 0.1.5", ] @@ -2453,9 +2389,6 @@ name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] [[package]] name = "hex-conservative" @@ -2904,24 +2837,6 @@ dependencies = [ "signature", ] -[[package]] -name = "k256" -version = "0.13.4" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "ecdsa", - "elliptic-curve", - "ff", - "hex-literal 1.1.0", - "num-bigint 0.4.6", - "openvm 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-algebra-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-algebra-moduli-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-ecc-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-ecc-sw-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "serde", -] - [[package]] name = "keccak" version = "0.1.6" @@ -2964,10 +2879,10 @@ checksum = "ee8b4f55c3dedcfaa8668de1dfc8469e7a32d441c28edf225ed1f566fb32977d" dependencies = [ "ff", "hex", - "serde_arrays 0.2.0", + "serde_arrays", "sha2 0.10.9", "sp1_bls12_381", - "spin 0.9.8", + "spin", ] [[package]] @@ -3003,9 +2918,6 @@ name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin 0.9.8", -] [[package]] name = "libc" @@ -3097,15 +3009,6 @@ version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" -[[package]] -name = "lru" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" -dependencies = [ - "hashbrown 0.15.5", -] - [[package]] name = "lru" version = "0.16.4" @@ -3345,7 +3248,6 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", - "rand 0.8.6", ] [[package]] @@ -3383,33 +3285,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-modular" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a5fe11d4135c3bcdf3a95b18b194afa9608a5f6ff034f5d857bc9a27fb0119" -dependencies = [ - "num-bigint 0.4.6", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-prime" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e238432a7881ec7164503ccc516c014bf009be7984cde1ba56837862543bdec3" -dependencies = [ - "bitvec", - "either", - "lru 0.12.5", - "num-bigint 0.4.6", - "num-integer", - "num-modular", - "num-traits", - "rand 0.8.6", -] - [[package]] name = "num-rational" version = "0.4.2" @@ -3534,398 +3409,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "openvm" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "bytemuck", - "num-bigint 0.4.6", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-mem 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-platform 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-riscv-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "serde", -] - -[[package]] -name = "openvm" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "bytemuck", - "num-bigint 0.4.6", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-mem 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-platform 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-riscv-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "serde", -] - -[[package]] -name = "openvm-algebra-complex-macros" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "openvm-macros-common 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "openvm-algebra-complex-macros" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "openvm-macros-common 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "openvm-algebra-guest" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "halo2curves-axiom", - "num-bigint 0.4.6", - "once_cell", - "openvm-algebra-complex-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-algebra-moduli-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-riscv-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "serde-big-array", - "strum_macros 0.26.4", -] - -[[package]] -name = "openvm-algebra-guest" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "halo2curves-axiom", - "num-bigint 0.4.6", - "once_cell", - "openvm-algebra-complex-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-algebra-moduli-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-riscv-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "serde-big-array", - "strum_macros 0.26.4", -] - -[[package]] -name = "openvm-algebra-moduli-macros" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "num-bigint 0.4.6", - "num-prime", - "openvm-macros-common 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "openvm-algebra-moduli-macros" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "num-bigint 0.4.6", - "num-prime", - "openvm-macros-common 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "openvm-curve-utils" -version = "0.4.0" -source = "git+https://github.com/axiom-crypto/openvm-eth?rev=e61e82d6645637317efe106ae90bc740043ff81c#e61e82d6645637317efe106ae90bc740043ff81c" -dependencies = [ - "hex-literal 1.1.0", - "openvm-ecc-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-pairing 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", -] - -[[package]] -name = "openvm-custom-insn" -version = "0.1.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "openvm-custom-insn" -version = "0.1.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "openvm-ecc-guest" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "ecdsa", - "elliptic-curve", - "group", - "halo2curves-axiom", - "once_cell", - "openvm 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-algebra-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-ecc-sw-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-riscv-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "serde", - "strum_macros 0.26.4", -] - -[[package]] -name = "openvm-ecc-guest" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "ecdsa", - "elliptic-curve", - "group", - "halo2curves-axiom", - "once_cell", - "openvm 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-algebra-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-ecc-sw-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-riscv-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "serde", - "strum_macros 0.26.4", -] - -[[package]] -name = "openvm-ecc-sw-macros" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "openvm-macros-common 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "openvm-ecc-sw-macros" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "openvm-macros-common 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "quote", - "syn 2.0.118", -] - -[[package]] -name = "openvm-keccak256" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "openvm-keccak256-guest", - "spin 0.10.0", - "tiny-keccak", -] - -[[package]] -name = "openvm-keccak256-guest" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "openvm-platform 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", -] - -[[package]] -name = "openvm-kzg" -version = "0.4.0" -source = "git+https://github.com/axiom-crypto/openvm-eth?rev=e61e82d6645637317efe106ae90bc740043ff81c#e61e82d6645637317efe106ae90bc740043ff81c" -dependencies = [ - "bls12_381 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hex", - "hex-literal 1.1.0", - "openvm-algebra-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-curve-utils", - "openvm-ecc-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-pairing 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "serde", - "serde-big-array", - "spin 0.10.0", -] - -[[package]] -name = "openvm-macros-common" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "syn 2.0.118", -] - -[[package]] -name = "openvm-macros-common" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "syn 2.0.118", -] - -[[package]] -name = "openvm-mem" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" - -[[package]] -name = "openvm-mem" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" - -[[package]] -name = "openvm-pairing" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "group", - "hex-literal 1.1.0", - "itertools 0.14.0", - "num-bigint 0.4.6", - "num-traits", - "openvm 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-algebra-complex-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-algebra-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-algebra-moduli-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-ecc-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-ecc-sw-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-pairing-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-platform 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-riscv-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "serde", -] - -[[package]] -name = "openvm-pairing" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "group", - "hex-literal 1.1.0", - "itertools 0.14.0", - "num-bigint 0.4.6", - "num-traits", - "openvm 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-algebra-complex-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-algebra-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-algebra-moduli-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-ecc-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-ecc-sw-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-pairing-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-platform 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-riscv-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "serde", -] - -[[package]] -name = "openvm-pairing-guest" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "hex-literal 1.1.0", - "itertools 0.14.0", - "lazy_static", - "num-bigint 0.4.6", - "num-traits", - "openvm 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-algebra-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-algebra-moduli-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-ecc-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "serde", - "strum_macros 0.26.4", -] - -[[package]] -name = "openvm-pairing-guest" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "hex-literal 1.1.0", - "itertools 0.14.0", - "lazy_static", - "num-bigint 0.4.6", - "num-traits", - "openvm 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-algebra-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-algebra-moduli-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-ecc-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "serde", - "strum_macros 0.26.4", -] - -[[package]] -name = "openvm-platform" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "libm", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-riscv-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", -] - -[[package]] -name = "openvm-platform" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "libm", - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "openvm-riscv-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", -] - -[[package]] -name = "openvm-riscv-guest" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "strum_macros 0.26.4", -] - -[[package]] -name = "openvm-riscv-guest" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0#4bc27807e1d54ba67c1ed97157ff3f70a2153332" -dependencies = [ - "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?branch=develop-v2.1.0)", - "strum_macros 0.26.4", -] - -[[package]] -name = "openvm-sha2" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "openvm-sha2-guest", - "sha2 0.10.9", -] - -[[package]] -name = "openvm-sha2-guest" -version = "2.0.0" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "openvm-platform 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", -] - [[package]] name = "outref" version = "0.5.2" @@ -3944,24 +3427,6 @@ dependencies = [ "sha2 0.10.9", ] -[[package]] -name = "p256" -version = "0.13.2" -source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" -dependencies = [ - "ecdsa", - "elliptic-curve", - "ff", - "hex-literal 1.1.0", - "num-bigint 0.4.6", - "openvm 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-algebra-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-algebra-moduli-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-ecc-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-ecc-sw-macros 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "serde", -] - [[package]] name = "p3-bn254-fr" version = "0.4.3-succinct" @@ -4155,21 +3620,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "pasta_curves" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e57598f73cc7e1b2ac63c79c517b31a0877cd7c402cdcaa311b5208de7a095" -dependencies = [ - "blake2b_simd", - "ff", - "group", - "lazy_static", - "rand 0.8.6", - "static_assertions", - "subtle", -] - [[package]] name = "paste" version = "1.0.15" @@ -5137,8 +4587,8 @@ dependencies = [ "arrayref", "aurora-engine-modexp", "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)", + "k256", + "p256", "revm-context-interface", "revm-primitives", "ripemd 0.2.0", @@ -5489,24 +4939,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-big-array" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11fc7cc2c76d73e0f27ee52abbd64eec84d46f370c88371120433196934e4b7f" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_arrays" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38636132857f68ec3d5f3eb121166d2af33cb55174c4d5ff645db6165cbef0fd" -dependencies = [ - "serde", -] - [[package]] name = "serde_arrays" version = "0.2.0" @@ -5877,12 +5309,6 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -[[package]] -name = "spin" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" - [[package]] name = "spki" version = "0.7.3" @@ -5986,21 +5412,12 @@ dependencies = [ name = "stateless-validator-ethrex" version = "0.14.1" dependencies = [ - "bls12_381 0.8.0 (git+https://github.com/zkcrypto/bls12_381?rev=6bb96951d5c2035caf4989b6e4a018435379590f)", "ere-dockerized", "ere-platform-core", "ethrex-common", "ethrex-crypto", "ethrex-guest-program", "hex-literal 1.1.0", - "k256 0.13.4 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-curve-utils", - "openvm-ecc-guest 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-keccak256", - "openvm-kzg", - "openvm-pairing 2.0.0 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", - "openvm-sha2", - "p256 0.13.2 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", "paste", "stateless-validator-common", "stateless-validator-test", @@ -6020,7 +5437,6 @@ dependencies = [ "ere-dockerized", "ere-platform-core", "once_cell", - "openvm-sha2", "paste", "reth-chainspec", "reth-ethereum-primitives", @@ -6096,19 +5512,6 @@ dependencies = [ "strum_macros 0.28.0", ] -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.118", -] - [[package]] name = "strum_macros" version = "0.27.2" @@ -6630,16 +6033,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unroll" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad948c1cb799b1a70f836077721a92a35ac177d4daddf4c20a633786d4cf618" -dependencies = [ - "quote", - "syn 1.0.109", -] - [[package]] name = "untrusted" version = "0.9.0" diff --git a/Cargo.toml b/Cargo.toml index 54a95e86..303429f5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -73,7 +73,6 @@ alloy-rpc-types-engine = { version = "2.2.0", default-features = false } revm = { version = "42.0.1", default-features = false } # reth -# FIXME: Switch back to a released tag once glamsterdam-devnet-7 is released. reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "f804dc1eaa06927b1bdf17f2b67572f6f6b2deee", default-features = false } reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "f804dc1eaa06927b1bdf17f2b67572f6f6b2deee", default-features = false } reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "f804dc1eaa06927b1bdf17f2b67572f6f6b2deee", default-features = false } @@ -93,25 +92,14 @@ libssz-derive = { version = "0.2.2" } libssz-merkle = { version = "0.2.2", default-features = false, features = ["alloc"] } libssz-types = { version = "0.2.2", default-features = false, features = ["alloc"] } -# openvm -openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview" } -openvm-sha2 = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview" } -openvm-pairing = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview" } -openvm-k256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview", package = "k256" } -openvm-p256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview", package = "p256" } -openvm-keccak256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview" } -openvm-curve-utils = { git = "https://github.com/axiom-crypto/openvm-eth", rev = "e61e82d6645637317efe106ae90bc740043ff81c" } -openvm-kzg = { git = "https://github.com/axiom-crypto/openvm-eth", rev = "e61e82d6645637317efe106ae90bc740043ff81c" } -bls12_381 = { git = "https://github.com/zkcrypto/bls12_381", rev = "6bb96951d5c2035caf4989b6e4a018435379590f", default-features = false } - # zkvm-standard zkvm-interface = { git = "https://github.com/eth-act/zkvm-standards", rev = "282cd356c3a0498416bb0619f9c8a347ce9933fb" } # ere -ere-catalog = { git = "https://github.com/eth-act/ere", rev = "c8d621df229526fbab3c8012656c38213e079b50" } -ere-dockerized = { git = "https://github.com/eth-act/ere", rev = "c8d621df229526fbab3c8012656c38213e079b50" } -ere-platform-core = { git = "https://github.com/eth-act/ere", rev = "c8d621df229526fbab3c8012656c38213e079b50" } -ere-util-build = { git = "https://github.com/eth-act/ere", rev = "c8d621df229526fbab3c8012656c38213e079b50" } +ere-catalog = { git = "https://github.com/eth-act/ere", rev = "153b092064a11e4c9c031a89940cbb232c98d59d" } +ere-dockerized = { git = "https://github.com/eth-act/ere", rev = "153b092064a11e4c9c031a89940cbb232c98d59d" } +ere-platform-core = { git = "https://github.com/eth-act/ere", rev = "153b092064a11e4c9c031a89940cbb232c98d59d" } +ere-util-build = { git = "https://github.com/eth-act/ere", rev = "153b092064a11e4c9c031a89940cbb232c98d59d" } # local stateless-validator-catalog = { path = "crates/stateless-validator-catalog" } diff --git a/bin/stateless-validator-ethrex/openvm/Cargo.lock b/bin/stateless-validator-ethrex/openvm/Cargo.lock index 1b3b20f8..9659fc4a 100644 --- a/bin/stateless-validator-ethrex/openvm/Cargo.lock +++ b/bin/stateless-validator-ethrex/openvm/Cargo.lock @@ -14,6 +14,15 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "aho-corasick" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" +dependencies = [ + "memchr", +] + [[package]] name = "allocator-api2" version = "0.2.21" @@ -171,6 +180,16 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" +[[package]] +name = "aurora-engine-modexp" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "518bc5745a6264b5fd7b09dffb9667e400ee9e2bbe18555fac75e1fe9afa0df9" +dependencies = [ + "hex", + "num", +] + [[package]] name = "autocfg" version = "1.5.1" @@ -195,6 +214,26 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex 1.3.0", + "syn 2.0.118", +] + [[package]] name = "bitflags" version = "2.13.0" @@ -330,7 +369,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e228eec9be7c17ccb640b59b36a5cd805ea2a564a4c5e162c2f659fea30d3b96" dependencies = [ "find-msvc-tools", - "shlex", + "shlex 2.0.1", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", ] [[package]] @@ -351,6 +399,17 @@ dependencies = [ "windows-link", ] +[[package]] +name = "clang-sys" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "const-hex" version = "1.19.1" @@ -686,15 +745,28 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "ere-platform-core" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" [[package]] name = "ere-platform-openvm" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ + "aurora-engine-modexp", + "bls12_381 0.8.0 (git+https://github.com/zkcrypto/bls12_381?rev=6bb96951d5c2035caf4989b6e4a018435379590f)", "ere-platform-core", + "k256 0.13.4 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", "openvm", + "openvm-algebra-guest", + "openvm-curve-utils", + "openvm-ecc-guest", + "openvm-keccak256", + "openvm-kzg", + "openvm-pairing", + "openvm-sha2", + "p256 0.13.2 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", + "ripemd", + "zkvm-interface", ] [[package]] @@ -993,6 +1065,12 @@ dependencies = [ "wasip2", ] +[[package]] +name = "glob" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" + [[package]] name = "group" version = "0.13.0" @@ -1254,7 +1332,7 @@ dependencies = [ [[package]] name = "k256" version = "0.13.4" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "ecdsa", "elliptic-curve", @@ -1336,6 +1414,16 @@ version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + [[package]] name = "libm" version = "0.2.16" @@ -1459,6 +1547,12 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "munge" version = "0.4.7" @@ -1479,6 +1573,30 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -1490,6 +1608,15 @@ dependencies = [ "rand 0.8.6", ] +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + [[package]] name = "num-conv" version = "0.2.2" @@ -1505,6 +1632,16 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-iter" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-modular" version = "0.5.1" @@ -1532,6 +1669,17 @@ dependencies = [ "rand 0.8.6", ] +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -1550,7 +1698,7 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "openvm" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "bytemuck", "getrandom 0.2.17", @@ -1566,7 +1714,7 @@ dependencies = [ [[package]] name = "openvm-algebra-complex-macros" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-macros-common", "quote", @@ -1576,7 +1724,7 @@ dependencies = [ [[package]] name = "openvm-algebra-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "halo2curves-axiom", "num-bigint", @@ -1592,7 +1740,7 @@ dependencies = [ [[package]] name = "openvm-algebra-moduli-macros" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "num-bigint", "num-prime", @@ -1604,7 +1752,7 @@ dependencies = [ [[package]] name = "openvm-curve-utils" version = "0.4.0" -source = "git+https://github.com/axiom-crypto/openvm-eth?rev=e61e82d6645637317efe106ae90bc740043ff81c#e61e82d6645637317efe106ae90bc740043ff81c" +source = "git+https://github.com/han0110/openvm-eth?branch=patch%2Fv2.1.0-preview#2ed8f057bf5dbc53bc75149af45010ec2327ff48" dependencies = [ "hex-literal 1.1.0", "openvm-ecc-guest", @@ -1614,7 +1762,7 @@ dependencies = [ [[package]] name = "openvm-custom-insn" version = "0.1.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "proc-macro2", "quote", @@ -1624,7 +1772,7 @@ dependencies = [ [[package]] name = "openvm-ecc-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "ecdsa", "elliptic-curve", @@ -1643,7 +1791,7 @@ dependencies = [ [[package]] name = "openvm-ecc-sw-macros" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-macros-common", "quote", @@ -1653,7 +1801,7 @@ dependencies = [ [[package]] name = "openvm-keccak256" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-keccak256-guest", "spin 0.10.0", @@ -1663,7 +1811,7 @@ dependencies = [ [[package]] name = "openvm-keccak256-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-platform", ] @@ -1671,7 +1819,7 @@ dependencies = [ [[package]] name = "openvm-kzg" version = "0.4.0" -source = "git+https://github.com/axiom-crypto/openvm-eth?rev=e61e82d6645637317efe106ae90bc740043ff81c#e61e82d6645637317efe106ae90bc740043ff81c" +source = "git+https://github.com/han0110/openvm-eth?branch=patch%2Fv2.1.0-preview#2ed8f057bf5dbc53bc75149af45010ec2327ff48" dependencies = [ "bls12_381 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex", @@ -1688,7 +1836,7 @@ dependencies = [ [[package]] name = "openvm-macros-common" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "syn 2.0.118", ] @@ -1696,12 +1844,12 @@ dependencies = [ [[package]] name = "openvm-mem" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" [[package]] name = "openvm-pairing" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "group", "hex-literal 1.1.0", @@ -1724,7 +1872,7 @@ dependencies = [ [[package]] name = "openvm-pairing-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "hex-literal 1.1.0", "itertools 0.14.0", @@ -1743,7 +1891,7 @@ dependencies = [ [[package]] name = "openvm-platform" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "libm", "openvm-custom-insn", @@ -1753,7 +1901,7 @@ dependencies = [ [[package]] name = "openvm-riscv-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-custom-insn", "strum_macros 0.26.4", @@ -1762,7 +1910,7 @@ dependencies = [ [[package]] name = "openvm-sha2" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-sha2-guest", "sha2", @@ -1771,7 +1919,7 @@ dependencies = [ [[package]] name = "openvm-sha2-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-platform", ] @@ -1797,7 +1945,7 @@ dependencies = [ [[package]] name = "p256" version = "0.13.2" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "ecdsa", "elliptic-curve", @@ -1901,6 +2049,16 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.118", +] + [[package]] name = "primeorder" version = "0.13.6" @@ -2109,6 +2267,35 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + [[package]] name = "rend" version = "0.5.3" @@ -2362,6 +2549,12 @@ dependencies = [ "keccak", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "shlex" version = "2.0.1" @@ -2436,22 +2629,14 @@ dependencies = [ name = "stateless-validator-ethrex" version = "0.14.1" dependencies = [ - "bls12_381 0.8.0 (git+https://github.com/zkcrypto/bls12_381?rev=6bb96951d5c2035caf4989b6e4a018435379590f)", "ere-platform-core", "ethrex-common", "ethrex-crypto", "ethrex-guest-program", "hex-literal 1.1.0", - "k256 0.13.4 (git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview)", - "openvm-curve-utils", - "openvm-ecc-guest", - "openvm-keccak256", - "openvm-kzg", - "openvm-pairing", - "openvm-sha2", - "p256 0.13.2 (git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview)", "stateless-validator-common", "thiserror", + "zkvm-interface", ] [[package]] @@ -2459,9 +2644,6 @@ name = "stateless-validator-ethrex-openvm" version = "0.1.0" dependencies = [ "ere-platform-openvm", - "openvm", - "openvm-algebra-guest", - "openvm-ecc-guest", "stateless-validator-ethrex", ] @@ -2948,6 +3130,14 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "zkvm-interface" +version = "0.1.0" +source = "git+https://github.com/eth-act/zkvm-standards?rev=282cd356c3a0498416bb0619f9c8a347ce9933fb#282cd356c3a0498416bb0619f9c8a347ce9933fb" +dependencies = [ + "bindgen", +] + [[package]] name = "zmij" version = "1.0.21" diff --git a/bin/stateless-validator-ethrex/openvm/Cargo.toml b/bin/stateless-validator-ethrex/openvm/Cargo.toml index 831a272d..2e72ca57 100644 --- a/bin/stateless-validator-ethrex/openvm/Cargo.toml +++ b/bin/stateless-validator-ethrex/openvm/Cargo.toml @@ -6,16 +6,10 @@ edition = "2024" version = "0.1.0" [dependencies] -# openvm -openvm = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview", features = [ - "std", -] } -openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview" } -openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview" } - # ere -ere-platform-openvm = { git = "https://github.com/eth-act/ere", rev = "c8d621df229526fbab3c8012656c38213e079b50", features = [ +ere-platform-openvm = { git = "https://github.com/eth-act/ere", rev = "153b092064a11e4c9c031a89940cbb232c98d59d", features = [ "std", + "zkvm-accelerator", ] } # local @@ -24,26 +18,6 @@ stateless-validator-ethrex = { path = "../../../crates/stateless-validator-ethre "openvm", ] } -[patch."https://github.com/openvm-org/openvm.git"] -openvm = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-algebra-complex-macros = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-algebra-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-algebra-moduli-macros = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-custom-insn = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-ecc-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-ecc-sw-macros = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-k256 = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview", package = "k256" } -openvm-keccak256 = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-keccak256-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-macros-common = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-p256 = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview", package = "p256" } -openvm-pairing = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-pairing-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-platform = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-riscv-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-sha2 = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-sha2-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } - [profile.release] codegen-units = 1 lto = "fat" diff --git a/bin/stateless-validator-ethrex/openvm/openvm_init.rs b/bin/stateless-validator-ethrex/openvm/openvm_init.rs deleted file mode 100644 index 257afb31..00000000 --- a/bin/stateless-validator-ethrex/openvm/openvm_init.rs +++ /dev/null @@ -1,4 +0,0 @@ -// This file is automatically generated by cargo openvm. Do not rename or edit. -openvm_algebra_guest::moduli_macros::moduli_init! { "21888242871839275222246405745257275088696311157297823662689037894645226208583", "21888242871839275222246405745257275088548364400416034343698204186575808495617", "115792089237316195423570985008687907853269984665640564039457584007908834671663", "115792089237316195423570985008687907852837564279074904382605163141518161494337", "115792089210356248762697446949407573530086143415290314195533631308867097853951", "115792089210356248762697446949407573529996955224135760342422259061068512044369", "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", "52435875175126190479447740508185965837690552500527637822603658699938581184513" } -openvm_algebra_guest::complex_macros::complex_init! { "Bn254Fp2" { mod_idx = 0 }, "Bls12_381Fp2" { mod_idx = 6 } } -openvm_ecc_guest::sw_macros::sw_init! { "Bn254G1Affine", "Secp256k1Point", "P256Point", "Bls12_381G1Affine" } diff --git a/bin/stateless-validator-ethrex/openvm/src/main.rs b/bin/stateless-validator-ethrex/openvm/src/main.rs index 72cae1f7..0b563656 100644 --- a/bin/stateless-validator-ethrex/openvm/src/main.rs +++ b/bin/stateless-validator-ethrex/openvm/src/main.rs @@ -3,8 +3,6 @@ use ere_platform_openvm::OpenVMPlatform; use stateless_validator_ethrex::guest::entrypoint; -openvm::init!(); - fn main() { entrypoint::(); } diff --git a/bin/stateless-validator-ethrex/sp1/Cargo.lock b/bin/stateless-validator-ethrex/sp1/Cargo.lock index b3ad9a8a..61b76178 100644 --- a/bin/stateless-validator-ethrex/sp1/Cargo.lock +++ b/bin/stateless-validator-ethrex/sp1/Cargo.lock @@ -821,12 +821,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "ere-platform-core" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" [[package]] name = "ere-platform-sp1" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "ere-platform-core", "libzkevm", diff --git a/bin/stateless-validator-ethrex/sp1/Cargo.toml b/bin/stateless-validator-ethrex/sp1/Cargo.toml index 4f9a6a39..41ca5d90 100644 --- a/bin/stateless-validator-ethrex/sp1/Cargo.toml +++ b/bin/stateless-validator-ethrex/sp1/Cargo.toml @@ -7,7 +7,7 @@ version = "0.1.0" [dependencies] # ere -ere-platform-sp1 = { git = "https://github.com/eth-act/ere", rev = "c8d621df229526fbab3c8012656c38213e079b50" } +ere-platform-sp1 = { git = "https://github.com/eth-act/ere", rev = "153b092064a11e4c9c031a89940cbb232c98d59d" } # local stateless-validator-ethrex = { path = "../../../crates/stateless-validator-ethrex", features = [ diff --git a/bin/stateless-validator-ethrex/zisk/Cargo.lock b/bin/stateless-validator-ethrex/zisk/Cargo.lock index e14f527a..b3f2a2fc 100644 --- a/bin/stateless-validator-ethrex/zisk/Cargo.lock +++ b/bin/stateless-validator-ethrex/zisk/Cargo.lock @@ -774,12 +774,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "ere-platform-core" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" [[package]] name = "ere-platform-zisk" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "ere-platform-core", "ziskos", diff --git a/bin/stateless-validator-ethrex/zisk/Cargo.toml b/bin/stateless-validator-ethrex/zisk/Cargo.toml index 886aca1b..20c67807 100644 --- a/bin/stateless-validator-ethrex/zisk/Cargo.toml +++ b/bin/stateless-validator-ethrex/zisk/Cargo.toml @@ -10,7 +10,7 @@ version = "0.1.0" # NOTE: Using `default-features = false, features = ["inputcpy"]` mainly to disable the other # feature enabled by default `user-hints`, which this binary doesn't use but introduces lots # of dependencies. -ere-platform-zisk = { git = "https://github.com/eth-act/ere", rev = "c8d621df229526fbab3c8012656c38213e079b50", default-features = false, features = ["inputcpy"] } +ere-platform-zisk = { git = "https://github.com/eth-act/ere", rev = "153b092064a11e4c9c031a89940cbb232c98d59d", default-features = false, features = ["inputcpy"] } # local stateless-validator-ethrex = { path = "../../../crates/stateless-validator-ethrex", features = [ diff --git a/bin/stateless-validator-reth/openvm/Cargo.lock b/bin/stateless-validator-reth/openvm/Cargo.lock index 8efe56f7..44cd0401 100644 --- a/bin/stateless-validator-reth/openvm/Cargo.lock +++ b/bin/stateless-validator-reth/openvm/Cargo.lock @@ -14,6 +14,15 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "aho-corasick" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" +dependencies = [ + "memchr", +] + [[package]] name = "allocator-api2" version = "0.2.21" @@ -292,7 +301,7 @@ dependencies = [ "alloy-rlp", "alloy-serde", "alloy-sol-types", - "itertools", + "itertools 0.14.0", "serde", "serde_json", "thiserror", @@ -432,7 +441,7 @@ dependencies = [ "educe", "fnv", "hashbrown 0.17.1", - "itertools", + "itertools 0.14.0", "num-bigint", "num-integer", "num-traits", @@ -584,6 +593,26 @@ version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex 1.3.0", + "syn 2.0.118", +] + [[package]] name = "bitcoin-io" version = "0.1.4" @@ -664,6 +693,18 @@ dependencies = [ "subtle", ] +[[package]] +name = "bls12_381" +version = "0.8.0" +source = "git+https://github.com/zkcrypto/bls12_381?rev=6bb96951d5c2035caf4989b6e4a018435379590f#6bb96951d5c2035caf4989b6e4a018435379590f" +dependencies = [ + "digest 0.10.7", + "ff", + "group", + "rand_core 0.6.4", + "subtle", +] + [[package]] name = "blst" version = "0.3.16" @@ -724,7 +765,16 @@ dependencies = [ "find-msvc-tools", "jobserver", "libc", - "shlex", + "shlex 2.0.1", +] + +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", ] [[package]] @@ -743,6 +793,17 @@ dependencies = [ "serde", ] +[[package]] +name = "clang-sys" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "const-hex" version = "1.19.1" @@ -1106,15 +1167,28 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "ere-platform-core" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" [[package]] name = "ere-platform-openvm" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ + "aurora-engine-modexp", + "bls12_381 0.8.0 (git+https://github.com/zkcrypto/bls12_381?rev=6bb96951d5c2035caf4989b6e4a018435379590f)", "ere-platform-core", + "k256 0.13.4 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", "openvm", + "openvm-algebra-guest", + "openvm-curve-utils", + "openvm-ecc-guest", + "openvm-keccak256", + "openvm-kzg", + "openvm-pairing", + "openvm-sha2", + "p256 0.13.2 (git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview)", + "ripemd 0.1.3", + "zkvm-interface", ] [[package]] @@ -1507,6 +1581,15 @@ dependencies = [ "serde_core", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.14.0" @@ -1548,7 +1631,7 @@ dependencies = [ [[package]] name = "k256" version = "0.13.4" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "ecdsa", "elliptic-curve", @@ -1588,6 +1671,16 @@ version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link", +] + [[package]] name = "libm" version = "0.2.16" @@ -1650,6 +1743,12 @@ dependencies = [ "scopeguard", ] +[[package]] +name = "log" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + [[package]] name = "lru" version = "0.12.5" @@ -1676,6 +1775,12 @@ version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "modular-bitfield" version = "0.13.1" @@ -1697,6 +1802,16 @@ dependencies = [ "syn 2.0.118", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "nonmax" version = "0.5.5" @@ -1871,7 +1986,7 @@ dependencies = [ [[package]] name = "openvm" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "bytemuck", "getrandom 0.2.17", @@ -1887,7 +2002,7 @@ dependencies = [ [[package]] name = "openvm-algebra-complex-macros" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-macros-common", "quote", @@ -1897,7 +2012,7 @@ dependencies = [ [[package]] name = "openvm-algebra-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "halo2curves-axiom", "num-bigint", @@ -1913,7 +2028,7 @@ dependencies = [ [[package]] name = "openvm-algebra-moduli-macros" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "num-bigint", "num-prime", @@ -1925,7 +2040,7 @@ dependencies = [ [[package]] name = "openvm-curve-utils" version = "0.4.0" -source = "git+https://github.com/axiom-crypto/openvm-eth?rev=e61e82d6645637317efe106ae90bc740043ff81c#e61e82d6645637317efe106ae90bc740043ff81c" +source = "git+https://github.com/han0110/openvm-eth?branch=patch%2Fv2.1.0-preview#2ed8f057bf5dbc53bc75149af45010ec2327ff48" dependencies = [ "hex-literal", "openvm-ecc-guest", @@ -1935,7 +2050,7 @@ dependencies = [ [[package]] name = "openvm-custom-insn" version = "0.1.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "proc-macro2", "quote", @@ -1945,7 +2060,7 @@ dependencies = [ [[package]] name = "openvm-ecc-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "ecdsa", "elliptic-curve", @@ -1964,7 +2079,7 @@ dependencies = [ [[package]] name = "openvm-ecc-sw-macros" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-macros-common", "quote", @@ -1974,7 +2089,7 @@ dependencies = [ [[package]] name = "openvm-keccak256" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-keccak256-guest", "spin 0.10.0", @@ -1984,7 +2099,7 @@ dependencies = [ [[package]] name = "openvm-keccak256-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-platform", ] @@ -1992,9 +2107,9 @@ dependencies = [ [[package]] name = "openvm-kzg" version = "0.4.0" -source = "git+https://github.com/axiom-crypto/openvm-eth?rev=e61e82d6645637317efe106ae90bc740043ff81c#e61e82d6645637317efe106ae90bc740043ff81c" +source = "git+https://github.com/han0110/openvm-eth?branch=patch%2Fv2.1.0-preview#2ed8f057bf5dbc53bc75149af45010ec2327ff48" dependencies = [ - "bls12_381", + "bls12_381 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex", "hex-literal", "openvm-algebra-guest", @@ -2009,7 +2124,7 @@ dependencies = [ [[package]] name = "openvm-macros-common" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "syn 2.0.118", ] @@ -2017,16 +2132,16 @@ dependencies = [ [[package]] name = "openvm-mem" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" [[package]] name = "openvm-pairing" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "group", "hex-literal", - "itertools", + "itertools 0.14.0", "num-bigint", "num-traits", "openvm", @@ -2045,10 +2160,10 @@ dependencies = [ [[package]] name = "openvm-pairing-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "hex-literal", - "itertools", + "itertools 0.14.0", "lazy_static", "num-bigint", "num-traits", @@ -2064,7 +2179,7 @@ dependencies = [ [[package]] name = "openvm-platform" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "libm", "openvm-custom-insn", @@ -2074,7 +2189,7 @@ dependencies = [ [[package]] name = "openvm-riscv-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-custom-insn", "strum_macros 0.26.4", @@ -2083,7 +2198,7 @@ dependencies = [ [[package]] name = "openvm-sha2" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-sha2-guest", "sha2 0.10.9", @@ -2092,7 +2207,7 @@ dependencies = [ [[package]] name = "openvm-sha2-guest" version = "2.0.0" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "openvm-platform", ] @@ -2112,7 +2227,7 @@ dependencies = [ [[package]] name = "p256" version = "0.13.2" -source = "git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" +source = "git+https://github.com/openvm-org/openvm.git?tag=v2.1.0-preview#538c5488130da56c8442d33445efe3c1fe5ea8b8" dependencies = [ "ecdsa", "elliptic-curve", @@ -2271,6 +2386,16 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.118", +] + [[package]] name = "primeorder" version = "0.13.6" @@ -2445,6 +2570,35 @@ dependencies = [ "bitflags", ] +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + [[package]] name = "reth-chainspec" version = "2.4.1" @@ -2777,7 +2931,7 @@ dependencies = [ "alloy-rlp", "alloy-trie", "derive_more", - "itertools", + "itertools 0.14.0", "nybbles", "reth-primitives-traits", "revm", @@ -2945,7 +3099,7 @@ dependencies = [ "p256 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", "revm-context-interface", "revm-primitives", - "ripemd", + "ripemd 0.2.0", "sha2 0.11.0", ] @@ -2984,6 +3138,15 @@ dependencies = [ "subtle", ] +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + [[package]] name = "ripemd" version = "0.2.0" @@ -3015,6 +3178,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" +[[package]] +name = "rustc-hash" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + [[package]] name = "rustc_version" version = "0.4.1" @@ -3209,6 +3378,12 @@ dependencies = [ "keccak", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "shlex" version = "2.0.1" @@ -3320,7 +3495,6 @@ dependencies = [ "alloy-rpc-types-engine", "ere-platform-core", "once_cell", - "openvm-sha2", "reth-chainspec", "reth-ethereum-primitives", "reth-evm-ethereum", @@ -3331,27 +3505,15 @@ dependencies = [ "stateless-validator-common", "thiserror", "tries", + "zkvm-interface", ] [[package]] name = "stateless-validator-reth-openvm" version = "0.1.0" dependencies = [ - "alloy-consensus", "alloy-primitives", - "aurora-engine-modexp", "ere-platform-openvm", - "k256 0.13.4 (git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview)", - "openvm", - "openvm-algebra-guest", - "openvm-curve-utils", - "openvm-ecc-guest", - "openvm-keccak256", - "openvm-kzg", - "openvm-pairing", - "openvm-sha2", - "p256 0.13.2 (git+https://github.com/openvm-org//openvm.git?tag=v2.1.0-preview)", - "revm", "stateless-validator-reth", ] @@ -3822,6 +3984,14 @@ dependencies = [ "arrayvec", ] +[[package]] +name = "zkvm-interface" +version = "0.1.0" +source = "git+https://github.com/eth-act/zkvm-standards?rev=282cd356c3a0498416bb0619f9c8a347ce9933fb#282cd356c3a0498416bb0619f9c8a347ce9933fb" +dependencies = [ + "bindgen", +] + [[package]] name = "zmij" version = "1.0.21" diff --git a/bin/stateless-validator-reth/openvm/Cargo.toml b/bin/stateless-validator-reth/openvm/Cargo.toml index 2b413488..d3420c1c 100644 --- a/bin/stateless-validator-reth/openvm/Cargo.toml +++ b/bin/stateless-validator-reth/openvm/Cargo.toml @@ -7,64 +7,20 @@ edition = "2024" [dependencies] # enable features -alloy-consensus = { version = "2.2.0", default-features = false, features = [ - "crypto-backend", -] } alloy-primitives = { version = "1.6.1", default-features = false, features = [ "map-hashbrown", "native-keccak", ] } -# revm -revm = { version = "42.0.1", default-features = false } - -# openvm -openvm = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview", features = [ - "std", -] } -openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview" } -openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview" } -openvm-sha2 = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview" } -openvm-pairing = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview", features = [ - "bn254", - "bls12_381", -] } -openvm-k256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview", package = "k256" } -openvm-p256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview", package = "p256" } -openvm-keccak256 = { git = "https://github.com/openvm-org/openvm.git", tag = "v2.1.0-preview" } -openvm-curve-utils = { git = "https://github.com/axiom-crypto/openvm-eth", rev = "e61e82d6645637317efe106ae90bc740043ff81c" } -openvm-kzg = { git = "https://github.com/axiom-crypto/openvm-eth", rev = "e61e82d6645637317efe106ae90bc740043ff81c" } -aurora-engine-modexp = { version = "1.2.0", default-features = false } - # ere -ere-platform-openvm = { git = "https://github.com/eth-act/ere", rev = "c8d621df229526fbab3c8012656c38213e079b50", features = [ +ere-platform-openvm = { git = "https://github.com/eth-act/ere", rev = "153b092064a11e4c9c031a89940cbb232c98d59d", features = [ "std", + "zkvm-accelerator", ] } # local stateless-validator-reth = { path = "../../../crates/stateless-validator-reth", features = ["openvm"] } -[patch."https://github.com/openvm-org/openvm.git"] -openvm = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-algebra-complex-macros = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-algebra-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-algebra-moduli-macros = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-custom-insn = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-ecc-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-ecc-sw-macros = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-k256 = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview", package = "k256" } -openvm-keccak256 = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-keccak256-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-macros-common = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-p256 = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview", package = "p256" } -openvm-pairing = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-pairing-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-platform = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-riscv-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-sha2 = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } -openvm-sha2-guest = { git = "https://github.com/openvm-org//openvm.git", tag = "v2.1.0-preview" } - [profile.release] codegen-units = 1 lto = "fat" - diff --git a/bin/stateless-validator-reth/openvm/openvm_init.rs b/bin/stateless-validator-reth/openvm/openvm_init.rs deleted file mode 100644 index 257afb31..00000000 --- a/bin/stateless-validator-reth/openvm/openvm_init.rs +++ /dev/null @@ -1,4 +0,0 @@ -// This file is automatically generated by cargo openvm. Do not rename or edit. -openvm_algebra_guest::moduli_macros::moduli_init! { "21888242871839275222246405745257275088696311157297823662689037894645226208583", "21888242871839275222246405745257275088548364400416034343698204186575808495617", "115792089237316195423570985008687907853269984665640564039457584007908834671663", "115792089237316195423570985008687907852837564279074904382605163141518161494337", "115792089210356248762697446949407573530086143415290314195533631308867097853951", "115792089210356248762697446949407573529996955224135760342422259061068512044369", "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", "52435875175126190479447740508185965837690552500527637822603658699938581184513" } -openvm_algebra_guest::complex_macros::complex_init! { "Bn254Fp2" { mod_idx = 0 }, "Bls12_381Fp2" { mod_idx = 6 } } -openvm_ecc_guest::sw_macros::sw_init! { "Bn254G1Affine", "Secp256k1Point", "P256Point", "Bls12_381G1Affine" } diff --git a/bin/stateless-validator-reth/openvm/src/main.rs b/bin/stateless-validator-reth/openvm/src/main.rs index 88e36e46..0e45f92b 100644 --- a/bin/stateless-validator-reth/openvm/src/main.rs +++ b/bin/stateless-validator-reth/openvm/src/main.rs @@ -1,15 +1,9 @@ //! OpenVM Reth stateless validator guest program. use ere_platform_openvm::OpenVMPlatform; -use stateless_validator_reth::guest::entrypoint; - -#[rustfmt::skip] -mod openvm_revm_crypto; - -openvm::init!(); +use stateless_validator_reth::guest::{crypto::zkvm_interface, entrypoint}; fn main() { - openvm_revm_crypto::install_openvm_crypto() - .expect("failed to install OpenVM revm crypto provider"); + zkvm_interface::install_crypto(); entrypoint::(); } diff --git a/bin/stateless-validator-reth/openvm/src/openvm_revm_crypto.rs b/bin/stateless-validator-reth/openvm/src/openvm_revm_crypto.rs deleted file mode 100644 index a7695930..00000000 --- a/bin/stateless-validator-reth/openvm/src/openvm_revm_crypto.rs +++ /dev/null @@ -1,600 +0,0 @@ -//! OpenVM Crypto Implementation for REVM -//! -//! This module provides OpenVM-optimized implementations of cryptographic operations -//! for both transaction validation (via Alloy crypto provider) and precompile execution. - -extern crate alloc; - -use alloc::{sync::Arc, vec::Vec}; - -use alloy_consensus::crypto::{ - backend::{install_default_provider, CryptoProvider}, - RecoveryError, -}; -use alloy_primitives::Address; -use openvm_curve_utils::SubgroupCheck; -use openvm_ecc_guest::{ - algebra::IntMod, - weierstrass::{IntrinsicCurve, WeierstrassPoint}, - AffinePoint, Group, -}; -use openvm_k256::ecdsa::{signature::hazmat::PrehashVerifier, RecoveryId, Signature, VerifyingKey}; -use openvm_keccak256::keccak256; -use openvm_kzg::{Bytes32, Bytes48, KzgProof}; -use openvm_pairing::{ - bls12_381::{self as bls, Bls12_381}, - bn254::{self as bn, Bn254}, - PairingCheck, -}; -use openvm_sha2::{Digest, Sha256}; -use revm::{ - install_crypto, - precompile::{ - bls12_381::{ - G1Point as BlsG1Point, G1PointScalar as BlsG1PointScalar, G2Point as BlsG2Point, - G2PointScalar as BlsG2PointScalar, - }, - bls12_381_const::{ - FP_LENGTH as BLS_FP_LEN, G1_LENGTH as BLS_G1_LEN, G2_LENGTH as BLS_G2_LEN, - SCALAR_LENGTH as BLS_SCALAR_LEN, - }, - Crypto, PrecompileHalt, - }, -}; - -// BN254 constants -const BN_FQ_LEN: usize = 32; -const BN_G1_LEN: usize = 64; -const BN_G2_LEN: usize = 128; -/// BN_SCALAR_LEN specifies the number of bytes needed to represent an Fr element. -/// This is an element in the scalar field of BN254. -const BN_SCALAR_LEN: usize = 32; - -/// OpenVM k256 backend for Alloy crypto operations (transaction validation) -#[derive(Debug, Default)] -struct OpenVmK256Provider; - -impl CryptoProvider for OpenVmK256Provider { - fn recover_signer_unchecked( - &self, - sig: &[u8; 65], - msg: &[u8; 32], - ) -> Result { - // Extract components: sig[0..32]=r, sig[32..64]=s, sig[64]=recovery_id - // Parse signature using OpenVM k256 - let mut signature = Signature::from_slice(&sig[..64]).map_err(|_| RecoveryError::new())?; - - // Normalize signature if needed - let mut recid = sig[64]; - if let Some(sig_normalized) = signature.normalize_s() { - signature = sig_normalized; - recid ^= 1; - } - - // Create recovery ID - let recovery_id = RecoveryId::from_byte(recid).ok_or(RecoveryError::new())?; - - // Recover public key using OpenVM - let recovered_key = - VerifyingKey::recover_from_prehash_noverify(msg, &signature.to_bytes(), recovery_id) - .map_err(|_| RecoveryError::new())?; - - // Hash the uncompressed SEC1 key without the 0x04 prefix. - let public_key = recovered_key.to_encoded_point(false); - let encoded_pubkey = &public_key.as_bytes()[1..65]; - - // Hash to get Ethereum address - let pubkey_hash = keccak256(encoded_pubkey); - let address_bytes = &pubkey_hash[12..32]; // Last 20 bytes - - Ok(Address::from_slice(address_bytes)) - } - - fn verify_and_compute_signer_unchecked( - &self, - pubkey: &[u8; 65], - sig: &[u8; 64], - msg: &[u8; 32], - ) -> Result { - let vk = VerifyingKey::from_sec1_bytes(pubkey).map_err(|_| RecoveryError::new())?; - - let mut signature = Signature::from_slice(sig).map_err(|_| RecoveryError::new())?; - if let Some(sig_normalized) = signature.normalize_s() { - signature = sig_normalized; - } - - vk.verify_prehash(msg.as_ref(), &signature) - .map_err(|_| RecoveryError::new())?; - - // Compute address directly from the provided pubkey bytes (skip 0x04 prefix) - let pubkey_hash = keccak256(&pubkey[1..65]); - Ok(Address::from_slice(&pubkey_hash[12..32])) - } -} - -/// OpenVM custom crypto implementation for faster precompiles -#[derive(Debug, Default)] -struct OpenVmCrypto; - -impl Crypto for OpenVmCrypto { - /// Custom SHA-256 implementation with openvm optimization - fn sha256(&self, input: &[u8]) -> [u8; 32] { - Sha256::digest(input).into() - } - - /// Custom BN254 G1 addition with openvm optimization - fn bn254_g1_add(&self, p1_bytes: &[u8], p2_bytes: &[u8]) -> Result<[u8; 64], PrecompileHalt> { - let p1 = read_bn_g1_point(p1_bytes)?; - let p2 = read_bn_g1_point(p2_bytes)?; - let result = p1 + p2; - Ok(encode_bn_g1_point(result)) - } - - /// Custom BN254 G1 scalar multiplication with openvm optimization - fn bn254_g1_mul( - &self, - point_bytes: &[u8], - scalar_bytes: &[u8], - ) -> Result<[u8; 64], PrecompileHalt> { - let p = read_bn_g1_point(point_bytes)?; - let s = read_bn_scalar(scalar_bytes); - let result = Bn254::msm(&[s], &[p]); - Ok(encode_bn_g1_point(result)) - } - - /// Custom BN254 pairing check with openvm optimization - fn bn254_pairing_check(&self, pairs: &[(&[u8], &[u8])]) -> Result { - if pairs.is_empty() { - return Ok(true); - } - let mut g1_points = Vec::with_capacity(pairs.len()); - let mut g2_points = Vec::with_capacity(pairs.len()); - - for (g1_bytes, g2_bytes) in pairs { - let g1 = read_bn_g1_point(g1_bytes)?; - let g2 = read_bn_g2_point(g2_bytes)?; - - let (g1_x, g1_y) = g1.into_coords(); - let g1 = AffinePoint::new(g1_x, g1_y); - - let (g2_x, g2_y) = g2.into_coords(); - let g2 = AffinePoint::new(g2_x, g2_y); - - g1_points.push(g1); - g2_points.push(g2); - } - - let pairing_result = Bn254::pairing_check(&g1_points, &g2_points).is_ok(); - Ok(pairing_result) - } - - /// Custom BLS12-381 G1 addition with openvm optimization - fn bls12_381_g1_add( - &self, - a: BlsG1Point, - b: BlsG1Point, - ) -> Result<[u8; BLS_G1_LEN], PrecompileHalt> { - // EIP-2537 G1ADD validates on-curve only, not subgroup membership. - let p1 = read_bls_g1_point_no_subgroup_check(&a)?; - let p2 = read_bls_g1_point_no_subgroup_check(&b)?; - let sum = p1 + p2; - Ok(encode_bls_g1_point(&sum)) - } - - /// Custom BLS12-381 G1 MSM with openvm optimization - fn bls12_381_g1_msm( - &self, - pairs: &mut dyn Iterator>, - ) -> Result<[u8; BLS_G1_LEN], PrecompileHalt> { - let mut scalars = Vec::new(); - let mut points = Vec::new(); - - for pair in pairs { - let (point_bytes, scalar_bytes) = pair?; - points.push(read_bls_g1_point(&point_bytes)?); - scalars.push(read_bls_scalar(&scalar_bytes)); - } - - if points.is_empty() { - return Ok([0u8; BLS_G1_LEN]); - } - - let result = Bls12_381::msm(&scalars, &points); - Ok(encode_bls_g1_point(&result)) - } - - /// Custom BLS12-381 G2 addition with openvm optimization - fn bls12_381_g2_add( - &self, - a: BlsG2Point, - b: BlsG2Point, - ) -> Result<[u8; BLS_G2_LEN], PrecompileHalt> { - // EIP-2537 G2ADD validates on-curve only, not subgroup membership. - let p1 = read_bls_g2_point_no_subgroup_check(&a)?; - let p2 = read_bls_g2_point_no_subgroup_check(&b)?; - let sum = p1 + p2; - Ok(encode_bls_g2_point(&sum)) - } - - /// Custom BLS12-381 G2 MSM with openvm optimization - fn bls12_381_g2_msm( - &self, - pairs: &mut dyn Iterator>, - ) -> Result<[u8; BLS_G2_LEN], PrecompileHalt> { - let mut scalars = Vec::new(); - let mut points = Vec::new(); - - for pair in pairs { - let (point_bytes, scalar_bytes) = pair?; - points.push(read_bls_g2_point(&point_bytes)?); - scalars.push(read_bls_scalar(&scalar_bytes)); - } - - if points.is_empty() { - return Ok([0u8; BLS_G2_LEN]); - } - - // directly using openvm_ecc_guest::msm here - let result = openvm_ecc_guest::msm(&scalars, &points); - Ok(encode_bls_g2_point(&result)) - } - - /// Custom BLS12-381 pairing check with openvm optimization - fn bls12_381_pairing_check( - &self, - pairs: &[(BlsG1Point, BlsG2Point)], - ) -> Result { - if pairs.is_empty() { - return Ok(true); - } - - let mut g1_points = Vec::with_capacity(pairs.len()); - let mut g2_points = Vec::with_capacity(pairs.len()); - - for (g1_bytes, g2_bytes) in pairs { - let g1 = read_bls_g1_point(g1_bytes)?; - let g2 = read_bls_g2_point(g2_bytes)?; - - let (g1_x, g1_y) = g1.into_coords(); - let (g2_x, g2_y) = g2.into_coords(); - - g1_points.push(AffinePoint::new(g1_x, g1_y)); - g2_points.push(AffinePoint::new(g2_x, g2_y)); - } - - let pairing_result = Bls12_381::pairing_check(&g1_points, &g2_points).is_ok(); - Ok(pairing_result) - } - - /// Custom secp256k1 ECDSA signature recovery with openvm optimization - fn secp256k1_ecrecover( - &self, - sig_bytes: &[u8; 64], - mut recid: u8, - msg_hash: &[u8; 32], - ) -> Result<[u8; 32], PrecompileHalt> { - let mut sig = Signature::from_slice(sig_bytes) - .map_err(|_| PrecompileHalt::other("Invalid signature format"))?; - - if let Some(sig_normalized) = sig.normalize_s() { - sig = sig_normalized; - recid ^= 1; - } - - let recovery_id = RecoveryId::from_byte(recid) - .ok_or_else(|| PrecompileHalt::other("Invalid recovery ID"))?; - - let recovered_key = - VerifyingKey::recover_from_prehash_noverify(msg_hash, &sig.to_bytes(), recovery_id) - .map_err(|_| PrecompileHalt::other("Key recovery failed"))?; - - let public_key = recovered_key.to_encoded_point(false); - let encoded_pubkey = &public_key.as_bytes()[1..65]; - - let pubkey_hash = keccak256(encoded_pubkey); - let mut address = [0u8; 32]; - address[12..].copy_from_slice(&pubkey_hash[12..]); - - Ok(address) - } - - /// Custom secp256r1 signature verification with openvm optimization - fn secp256r1_verify_signature(&self, msg: &[u8; 32], sig: &[u8; 64], pk: &[u8; 64]) -> bool { - use openvm_p256::{ - ecdsa::{signature::hazmat::PrehashVerifier, Signature, VerifyingKey}, - EncodedPoint, - }; - - // Can fail only if the input is not exact length. - let Ok(signature) = Signature::from_slice(sig) else { - return false; - }; - // Decode the public key bytes (x,y coordinates) using EncodedPoint - let encoded_point = EncodedPoint::from_untagged_bytes(&(*pk).into()); - // Create VerifyingKey from the encoded point - let Ok(public_key) = VerifyingKey::from_encoded_point(&encoded_point) else { - return false; - }; - - public_key.verify_prehash(msg, &signature).is_ok() - } - - /// Custom KZG point evaluation with configurable backends - fn verify_kzg_proof( - &self, - z: &[u8; 32], - y: &[u8; 32], - commitment: &[u8; 48], - proof: &[u8; 48], - ) -> Result<(), PrecompileHalt> { - let env = openvm_kzg::EnvKzgSettings::default(); - let kzg_settings = env.get(); - - let commitment_bytes = Bytes48::from_slice(commitment) - .map_err(|_| PrecompileHalt::other("invalid commitment bytes"))?; - let z_bytes = - Bytes32::from_slice(z).map_err(|_| PrecompileHalt::other("invalid z bytes"))?; - let y_bytes = - Bytes32::from_slice(y).map_err(|_| PrecompileHalt::other("invalid y bytes"))?; - let proof_bytes = - Bytes48::from_slice(proof).map_err(|_| PrecompileHalt::other("invalid proof bytes"))?; - - let valid = KzgProof::verify_kzg_proof( - &commitment_bytes, - &z_bytes, - &y_bytes, - &proof_bytes, - kzg_settings, - ) - .map_err(|_| PrecompileHalt::other("openvm kzg proof verification failed"))?; - if valid { - Ok(()) - } else { - Err(PrecompileHalt::BlobVerifyKzgProofFailed) - } - } - - /// Custom modular exponentiation with BN254 Fr acceleration - fn modexp(&self, base: &[u8], exp: &[u8], modulus: &[u8]) -> Result, PrecompileHalt> { - if is_bn254_fr(modulus) { - return Ok(accelerated_modexp_bn254_fr(base, exp)); - } - Ok(aurora_engine_modexp::modexp(base, exp, modulus)) - } -} - -/// Returns true if the modulus (big-endian, possibly with leading zeros) equals BN254 Fr. -fn is_bn254_fr(modulus: &[u8]) -> bool { - // Strip leading zeros - let stripped = match modulus.iter().position(|&b| b != 0) { - Some(i) => &modulus[i..], - None => return false, // all zeros - }; - // bn::Scalar::MODULUS is little-endian; compare against reversed input - stripped.len() == BN_SCALAR_LEN - && stripped - .iter() - .rev() - .eq(bn::Scalar::MODULUS.as_ref().iter()) -} - -/// Accelerated modexp for BN254 Fr using field arithmetic intrinsics. -fn accelerated_modexp_bn254_fr(base: &[u8], exp: &[u8]) -> Vec { - use openvm_ecc_guest::algebra::{ExpBytes, Reduce}; - - // OpenVM's field reduction requires inputs to be aligned to the field byte size. - let padded_len = base - .len() - .next_multiple_of(BN_SCALAR_LEN) - .max(BN_SCALAR_LEN); - let mut padded = vec![0u8; padded_len]; - padded[padded_len - base.len()..].copy_from_slice(base); - let base_fr = bn::Scalar::reduce_be_bytes(&padded); - - base_fr.exp_bytes(true, exp).to_be_bytes().as_ref().to_vec() -} - -/// Install OpenVM crypto implementations globally -pub fn install_openvm_crypto() -> Result> { - // Install OpenVM k256 provider for Alloy (transaction validation) - install_default_provider(Arc::new(OpenVmK256Provider))?; - - // Install OpenVM crypto for REVM precompiles - let installed = install_crypto(OpenVmCrypto); - - Ok(installed) -} - -// Helper functions for BN254 operations - -#[inline] -fn read_bn_fq(input: &[u8]) -> Result { - if input.len() < BN_FQ_LEN { - Err(PrecompileHalt::Bn254FieldPointNotAMember) - } else { - bn::Fp::from_be_bytes(&input[..BN_FQ_LEN]).ok_or(PrecompileHalt::Bn254FieldPointNotAMember) - } -} - -#[inline] -fn read_bn_fq2(input: &[u8]) -> Result { - let y = read_bn_fq(&input[..BN_FQ_LEN])?; - let x = read_bn_fq(&input[BN_FQ_LEN..BN_FQ_LEN * 2])?; - Ok(bn::Fp2::new(x, y)) -} - -#[inline] -fn read_bn_g1_point(input: &[u8]) -> Result { - if input.len() != BN_G1_LEN { - return Err(PrecompileHalt::Bn254PairLength); - } - let px = read_bn_fq(&input[0..BN_FQ_LEN])?; - let py = read_bn_fq(&input[BN_FQ_LEN..BN_G1_LEN])?; - // SAFETY: `read_bn_fq` produces canonical Fp elements; `from_xy` itself checks the curve - // equation and returns `None` if `(px, py)` is not on the curve. - let point = unsafe { bn::G1Affine::from_xy(px, py) } - .ok_or(PrecompileHalt::Bn254AffineGFailedToCreate)?; - if point.is_in_correct_subgroup() { - Ok(point) - } else { - Err(PrecompileHalt::Bn254AffineGFailedToCreate) - } -} - -#[inline] -fn read_bn_g2_point(input: &[u8]) -> Result { - if input.len() != BN_G2_LEN { - return Err(PrecompileHalt::Bn254PairLength); - } - let c0 = read_bn_fq2(&input[0..BN_G1_LEN])?; - let c1 = read_bn_fq2(&input[BN_G1_LEN..BN_G2_LEN])?; - // SAFETY: `read_bn_fq2` produces canonical Fp2 elements; `from_xy` itself checks the curve - // equation and returns `None` if `(c0, c1)` is not on the twist. - let point = unsafe { bn::G2Affine::from_xy(c0, c1) } - .ok_or(PrecompileHalt::Bn254AffineGFailedToCreate)?; - if point.is_in_correct_subgroup() { - Ok(point) - } else { - Err(PrecompileHalt::Bn254AffineGFailedToCreate) - } -} - -#[inline] -fn encode_bn_g1_point(point: bn::G1Affine) -> [u8; BN_G1_LEN] { - let mut output = [0u8; BN_G1_LEN]; - - let x_bytes: &[u8] = point.x().as_le_bytes(); - let y_bytes: &[u8] = point.y().as_le_bytes(); - for i in 0..BN_FQ_LEN { - output[i] = x_bytes[BN_FQ_LEN - 1 - i]; - output[i + BN_FQ_LEN] = y_bytes[BN_FQ_LEN - 1 - i]; - } - output -} - -/// Reads a scalar from the input slice -/// -/// Note: The scalar does not need to be canonical. -/// -/// # Panics -/// -/// If `input.len()` is not equal to [`BN_SCALAR_LEN`]. -#[inline] -fn read_bn_scalar(input: &[u8]) -> bn::Scalar { - assert_eq!( - input.len(), - BN_SCALAR_LEN, - "unexpected scalar length. got {}, expected {BN_SCALAR_LEN}", - input.len() - ); - bn::Scalar::from_be_bytes_unchecked(input) -} - -// Helper functions for BLS12-381 operations - -#[inline] -fn read_bls_fp(input: &[u8]) -> Result { - if input.len() != BLS_FP_LEN { - return Err(PrecompileHalt::other("invalid BLS12-381 fp length")); - } - bls::Fp::from_be_bytes(input) - .ok_or_else(|| PrecompileHalt::other("element not in BLS12-381 base field")) -} - -#[inline] -fn read_bls_fp2(c0: &[u8], c1: &[u8]) -> Result { - let real = read_bls_fp(c0)?; - let imag = read_bls_fp(c1)?; - Ok(bls::Fp2::new(real, imag)) -} - -#[inline] -fn read_bls_g1_point_no_subgroup_check( - point: &BlsG1Point, -) -> Result { - let px = read_bls_fp(&point.0)?; - let py = read_bls_fp(&point.1)?; - // SAFETY: `read_bls_fp` produces canonical Fp elements; `from_xy` itself checks the curve - // equation and returns `None` if `(px, py)` is not on the curve. - unsafe { bls::G1Affine::from_xy(px, py) }.ok_or(PrecompileHalt::Bls12381G1NotOnCurve) -} - -#[inline] -fn read_bls_g1_point(point: &BlsG1Point) -> Result { - let point = read_bls_g1_point_no_subgroup_check(point)?; - if point.is_in_correct_subgroup() { - Ok(point) - } else { - Err(PrecompileHalt::Bls12381G1NotInSubgroup) - } -} - -#[inline] -fn read_bls_g2_point_no_subgroup_check( - point: &BlsG2Point, -) -> Result { - let x = read_bls_fp2(&point.0, &point.1)?; - let y = read_bls_fp2(&point.2, &point.3)?; - // SAFETY: `read_bls_fp2` produces canonical Fp2 elements; `from_xy` itself checks the curve - // equation and returns `None` if `(x, y)` is not on the twist. - unsafe { bls::G2Affine::from_xy(x, y) }.ok_or(PrecompileHalt::Bls12381G2NotOnCurve) -} - -#[inline] -fn read_bls_g2_point(point: &BlsG2Point) -> Result { - let point = read_bls_g2_point_no_subgroup_check(point)?; - if point.is_in_correct_subgroup() { - Ok(point) - } else { - Err(PrecompileHalt::Bls12381G2NotInSubgroup) - } -} - -#[inline] -fn read_bls_scalar(input: &[u8]) -> bls::Scalar { - assert_eq!( - input.len(), - BLS_SCALAR_LEN, - "unexpected scalar length. got {}, expected {BLS_SCALAR_LEN}", - input.len() - ); - bls::Scalar::from_be_bytes_unchecked(input) -} - -#[inline] -fn encode_bls_g1_point(point: &bls::G1Affine) -> [u8; BLS_G1_LEN] { - if point.is_identity() { - return [0u8; BLS_G1_LEN]; - } - - let mut output = [0u8; BLS_G1_LEN]; - let x_bytes: &[u8] = point.x().as_le_bytes(); - let y_bytes: &[u8] = point.y().as_le_bytes(); - for i in 0..BLS_FP_LEN { - output[i] = x_bytes[BLS_FP_LEN - 1 - i]; - output[i + BLS_FP_LEN] = y_bytes[BLS_FP_LEN - 1 - i]; - } - output -} - -#[inline] -fn encode_bls_g2_point(point: &bls::G2Affine) -> [u8; BLS_G2_LEN] { - if point.is_identity() { - return [0u8; BLS_G2_LEN]; - } - - let mut output = [0u8; BLS_G2_LEN]; - let x = point.x(); - let y = point.y(); - let x_c0 = x.c0.as_le_bytes(); - let x_c1 = x.c1.as_le_bytes(); - let y_c0 = y.c0.as_le_bytes(); - let y_c1 = y.c1.as_le_bytes(); - for i in 0..BLS_FP_LEN { - output[i] = x_c0[BLS_FP_LEN - 1 - i]; - output[i + BLS_FP_LEN] = x_c1[BLS_FP_LEN - 1 - i]; - output[i + (2 * BLS_FP_LEN)] = y_c0[BLS_FP_LEN - 1 - i]; - output[i + (3 * BLS_FP_LEN)] = y_c1[BLS_FP_LEN - 1 - i]; - } - output -} diff --git a/bin/stateless-validator-reth/sp1/Cargo.lock b/bin/stateless-validator-reth/sp1/Cargo.lock index e3f0acd7..5daa5088 100644 --- a/bin/stateless-validator-reth/sp1/Cargo.lock +++ b/bin/stateless-validator-reth/sp1/Cargo.lock @@ -1225,12 +1225,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "ere-platform-core" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" [[package]] name = "ere-platform-sp1" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "ere-platform-core", "libzkevm", diff --git a/bin/stateless-validator-reth/sp1/Cargo.toml b/bin/stateless-validator-reth/sp1/Cargo.toml index 7085b5c2..6dfcc698 100644 --- a/bin/stateless-validator-reth/sp1/Cargo.toml +++ b/bin/stateless-validator-reth/sp1/Cargo.toml @@ -13,7 +13,7 @@ alloy-primitives = { version = "1.6.1", default-features = false, features = [ ] } # ere -ere-platform-sp1 = { git = "https://github.com/eth-act/ere", rev = "c8d621df229526fbab3c8012656c38213e079b50" } +ere-platform-sp1 = { git = "https://github.com/eth-act/ere", rev = "153b092064a11e4c9c031a89940cbb232c98d59d" } # local stateless-validator-reth = { path = "../../../crates/stateless-validator-reth", features = [ diff --git a/bin/stateless-validator-reth/zisk/Cargo.lock b/bin/stateless-validator-reth/zisk/Cargo.lock index 8f2753f6..6b92fafb 100644 --- a/bin/stateless-validator-reth/zisk/Cargo.lock +++ b/bin/stateless-validator-reth/zisk/Cargo.lock @@ -1273,12 +1273,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "ere-platform-core" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" [[package]] name = "ere-platform-zisk" version = "0.14.0" -source = "git+https://github.com/eth-act/ere?rev=c8d621df229526fbab3c8012656c38213e079b50#c8d621df229526fbab3c8012656c38213e079b50" +source = "git+https://github.com/eth-act/ere?rev=153b092064a11e4c9c031a89940cbb232c98d59d#153b092064a11e4c9c031a89940cbb232c98d59d" dependencies = [ "ere-platform-core", "ziskos", diff --git a/bin/stateless-validator-reth/zisk/Cargo.toml b/bin/stateless-validator-reth/zisk/Cargo.toml index c99c8ca1..029c0278 100644 --- a/bin/stateless-validator-reth/zisk/Cargo.toml +++ b/bin/stateless-validator-reth/zisk/Cargo.toml @@ -16,7 +16,7 @@ alloy-primitives = { version = "1.6.1", default-features = false, features = [ # NOTE: Using `default-features = false, features = ["inputcpy"]` mainly to disable the other # feature enabled by default `user-hints`, which this binary doesn't use but introduces lots # of dependencies. -ere-platform-zisk = { git = "https://github.com/eth-act/ere", rev = "c8d621df229526fbab3c8012656c38213e079b50", default-features = false, features = [ +ere-platform-zisk = { git = "https://github.com/eth-act/ere", rev = "153b092064a11e4c9c031a89940cbb232c98d59d", default-features = false, features = [ "inputcpy", ] } diff --git a/crates/stateless-validator-ethrex/Cargo.toml b/crates/stateless-validator-ethrex/Cargo.toml index 4be1e1b1..f2313131 100644 --- a/crates/stateless-validator-ethrex/Cargo.toml +++ b/crates/stateless-validator-ethrex/Cargo.toml @@ -17,18 +17,6 @@ ethrex-common.workspace = true ethrex-crypto.workspace = true ethrex-guest-program = { workspace = true, features = ["eip-8025"] } -# openvm - -openvm-ecc-guest = { workspace = true, optional = true } -openvm-sha2 = { workspace = true, optional = true } -openvm-pairing = { workspace = true, features = ["bn254", "bls12_381"], optional = true } -openvm-k256 = { workspace = true, optional = true } -openvm-p256 = { workspace = true, optional = true } -openvm-keccak256 = { workspace = true, optional = true } -openvm-curve-utils = { workspace = true, optional = true } -openvm-kzg = { workspace = true, optional = true } -bls12_381 = { workspace = true, features = ["experimental"], optional = true } - # zkvm-standard zkvm-interface = { workspace = true, optional = true } @@ -51,17 +39,7 @@ required-features = ["host"] # guest default = ["std"] std = ["stateless-validator-common/std"] -openvm = [ - "dep:openvm-ecc-guest", - "dep:openvm-sha2", - "dep:openvm-pairing", - "dep:openvm-k256", - "dep:openvm-p256", - "dep:openvm-keccak256", - "dep:openvm-curve-utils", - "dep:openvm-kzg", - "dep:bls12_381", -] +openvm = ["zkvm-interface"] sp1 = ["zkvm-interface"] zisk = ["zkvm-interface"] zkvm-interface = ["dep:zkvm-interface"] diff --git a/crates/stateless-validator-ethrex/src/guest/crypto.rs b/crates/stateless-validator-ethrex/src/guest/crypto.rs index 5f18a23e..458c0e5e 100644 --- a/crates/stateless-validator-ethrex/src/guest/crypto.rs +++ b/crates/stateless-validator-ethrex/src/guest/crypto.rs @@ -1,7 +1,5 @@ //! Crypto provider selection for the guest. -#[cfg(feature = "openvm")] -mod openvm; #[cfg(feature = "zkvm-interface")] mod zkvm_interface; @@ -11,13 +9,10 @@ use ethrex_crypto::Crypto; use stateless_validator_common::Sha256Hasher; /// Returns the [`Crypto`] implementation for the active zkVM feature. -#[allow(unreachable_code)] pub(crate) fn crypto() -> Arc { - #[cfg(feature = "openvm")] - return openvm::crypto(); #[cfg(feature = "zkvm-interface")] return zkvm_interface::crypto(); - #[cfg(not(any(feature = "openvm", feature = "zkvm-interface")))] + #[cfg(not(feature = "zkvm-interface"))] return Arc::new(ethrex_guest_program::crypto::NativeCrypto); } diff --git a/crates/stateless-validator-ethrex/src/guest/crypto/openvm.rs b/crates/stateless-validator-ethrex/src/guest/crypto/openvm.rs deleted file mode 100644 index db8f7b7a..00000000 --- a/crates/stateless-validator-ethrex/src/guest/crypto/openvm.rs +++ /dev/null @@ -1,550 +0,0 @@ -//! [`ethrex_crypto::Crypto`] implementation using OpenVM guest libraries. - -use alloc::{sync::Arc, vec, vec::Vec}; - -use bls12_381::hash_to_curve::MapToCurve; -use ethrex_crypto::{Crypto, CryptoError, NativeCrypto}; -use openvm_curve_utils::SubgroupCheck; -use openvm_ecc_guest::{ - AffinePoint, Group, - algebra::IntMod, - weierstrass::{IntrinsicCurve, WeierstrassPoint}, -}; -use openvm_k256::ecdsa::{RecoveryId, Signature, VerifyingKey}; -use openvm_keccak256::keccak256; -use openvm_kzg::{Bytes32, Bytes48, EnvKzgSettings, KzgProof}; -use openvm_p256::ecdsa::{ - Signature as P256Signature, VerifyingKey as P256VerifyingKey, - signature::hazmat::PrehashVerifier, -}; -use openvm_pairing::{ - PairingCheck, - bls12_381::{self as bls, Bls12_381}, - bn254::{self as bn, Bn254}, -}; -use openvm_sha2::{Digest, Sha256}; - -// BN254 constants -const BN_FQ_LEN: usize = 32; -const BN_G1_LEN: usize = 64; -const BN_G2_LEN: usize = 128; -/// BN_SCALAR_LEN specifies the number of bytes needed to represent an Fr element. -/// This is an element in the scalar field of BN254. -const BN_SCALAR_LEN: usize = 32; - -// BLS12-381 constants -const BLS_FP_LEN: usize = 48; -const BLS_G1_LEN: usize = 96; -const BLS_G2_LEN: usize = 192; - -/// Returns a [`Crypto`] implementation backed by OpenVM guest libraries. -#[inline] -pub(super) fn crypto() -> Arc { - Arc::new(OpenVmCrypto) -} - -#[derive(Debug, Default)] -struct OpenVmCrypto; - -impl Crypto for OpenVmCrypto { - #[inline] - fn secp256k1_ecrecover( - &self, - sig: &[u8; 64], - mut recid: u8, - msg: &[u8; 32], - ) -> Result<[u8; 32], CryptoError> { - let mut signature = - Signature::from_slice(sig).map_err(|_| CryptoError::InvalidSignature)?; - - if let Some(signature_normalized) = signature.normalize_s() { - signature = signature_normalized; - recid ^= 1; - } - - let recovery_id = RecoveryId::from_byte(recid).ok_or(CryptoError::InvalidRecoveryId)?; - - let recovered_key = - VerifyingKey::recover_from_prehash_noverify(msg, &signature.to_bytes(), recovery_id) - .map_err(|_| CryptoError::RecoveryFailed)?; - - // Hash the uncompressed SEC1 key without the 0x04 prefix. - let public_key = recovered_key.to_encoded_point(false); - Ok(keccak256(&public_key.as_bytes()[1..])) - } - - #[inline] - fn keccak256(&self, input: &[u8]) -> [u8; 32] { - keccak256(input) - } - - #[inline] - fn sha256(&self, input: &[u8]) -> [u8; 32] { - Sha256::digest(input).into() - } - - #[inline] - fn bn254_g1_add(&self, p1: &[u8], p2: &[u8]) -> Result<[u8; 64], CryptoError> { - let p1 = read_bn_g1_point(p1)?; - let p2 = read_bn_g1_point(p2)?; - Ok(encode_bn_g1_point(p1 + p2)) - } - - #[inline] - fn bn254_g1_mul(&self, point: &[u8], scalar: &[u8]) -> Result<[u8; 64], CryptoError> { - let point = read_bn_g1_point(point)?; - let scalar = read_bn_scalar(scalar)?; - Ok(encode_bn_g1_point(Bn254::msm(&[scalar], &[point]))) - } - - #[inline] - fn bn254_pairing_check(&self, pairs: &[(&[u8], &[u8])]) -> Result { - if pairs.is_empty() { - return Ok(true); - } - - let mut g1_points = Vec::with_capacity(pairs.len()); - let mut g2_points = Vec::with_capacity(pairs.len()); - for (g1_bytes, g2_bytes) in pairs { - let (g1_x, g1_y) = read_bn_g1_point(g1_bytes)?.into_coords(); - let (g2_x, g2_y) = read_bn_g2_point(g2_bytes)?.into_coords(); - g1_points.push(AffinePoint::new(g1_x, g1_y)); - g2_points.push(AffinePoint::new(g2_x, g2_y)); - } - - Ok(Bn254::pairing_check(&g1_points, &g2_points).is_ok()) - } - - #[inline] - fn modexp(&self, base: &[u8], exp: &[u8], modulus: &[u8]) -> Result, CryptoError> { - if is_bn254_fr(modulus) { - return Ok(accelerated_modexp_bn254_fr(base, exp)); - } - NativeCrypto.modexp(base, exp, modulus) - } - - #[inline] - fn secp256r1_verify(&self, msg: &[u8; 32], sig: &[u8; 64], pk: &[u8; 64]) -> bool { - // `from_slice` rejects zero and non-canonical r/s scalars. - let Ok(signature) = P256Signature::from_slice(sig) else { - return false; - }; - - let x_bytes: &[u8; 32] = match pk[..32].try_into() { - Ok(b) => b, - Err(_) => return false, - }; - let y_bytes: &[u8; 32] = match pk[32..].try_into() { - Ok(b) => b, - Err(_) => return false, - }; - let encoded_point = openvm_p256::EncodedPoint::from_affine_coordinates( - x_bytes.into(), - y_bytes.into(), - false, - ); - let Ok(verifying_key) = P256VerifyingKey::from_encoded_point(&encoded_point) else { - return false; - }; - - verifying_key.verify_prehash(msg, &signature).is_ok() - } - - #[inline] - fn verify_kzg_proof( - &self, - z: &[u8; 32], - y: &[u8; 32], - commitment: &[u8; 48], - proof: &[u8; 48], - ) -> Result<(), CryptoError> { - let env = EnvKzgSettings::default(); - let kzg_settings = env.get(); - - let commitment_bytes = Bytes48::from_slice(commitment) - .map_err(|_| CryptoError::InvalidInput("invalid commitment bytes"))?; - let z_bytes = - Bytes32::from_slice(z).map_err(|_| CryptoError::InvalidInput("invalid z bytes"))?; - let y_bytes = - Bytes32::from_slice(y).map_err(|_| CryptoError::InvalidInput("invalid y bytes"))?; - let proof_bytes = Bytes48::from_slice(proof) - .map_err(|_| CryptoError::InvalidInput("invalid proof bytes"))?; - - let valid = KzgProof::verify_kzg_proof( - &commitment_bytes, - &z_bytes, - &y_bytes, - &proof_bytes, - kzg_settings, - ) - .map_err(|_| CryptoError::VerificationFailed)?; - if valid { - Ok(()) - } else { - Err(CryptoError::VerificationFailed) - } - } - - #[inline] - fn bls12_381_g1_add( - &self, - a: ([u8; 48], [u8; 48]), - b: ([u8; 48], [u8; 48]), - ) -> Result<[u8; 96], CryptoError> { - // EIP-2537 G1ADD validates on-curve only, not subgroup membership. - let p1 = read_bls_g1_point_no_subgroup_check(&a)?; - let p2 = read_bls_g1_point_no_subgroup_check(&b)?; - Ok(encode_bls_g1_point(&(p1 + p2))) - } - - #[inline] - fn bls12_381_g1_msm( - &self, - pairs: &[(([u8; 48], [u8; 48]), [u8; 32])], - ) -> Result<[u8; 96], CryptoError> { - let mut points = Vec::with_capacity(pairs.len()); - let mut scalars = Vec::with_capacity(pairs.len()); - for (point, scalar) in pairs { - points.push(read_bls_g1_point(point)?); - scalars.push(read_bls_scalar(scalar)); - } - - if points.is_empty() { - return Ok([0u8; BLS_G1_LEN]); - } - - Ok(encode_bls_g1_point(&Bls12_381::msm(&scalars, &points))) - } - - #[inline] - fn bls12_381_g2_add( - &self, - a: ([u8; 48], [u8; 48], [u8; 48], [u8; 48]), - b: ([u8; 48], [u8; 48], [u8; 48], [u8; 48]), - ) -> Result<[u8; 192], CryptoError> { - // EIP-2537 G2ADD validates on-curve only, not subgroup membership. - let p1 = read_bls_g2_point_no_subgroup_check(&a)?; - let p2 = read_bls_g2_point_no_subgroup_check(&b)?; - Ok(encode_bls_g2_point(&(p1 + p2))) - } - - #[inline] - fn bls12_381_g2_msm( - &self, - pairs: &[(([u8; 48], [u8; 48], [u8; 48], [u8; 48]), [u8; 32])], - ) -> Result<[u8; 192], CryptoError> { - let mut points = Vec::with_capacity(pairs.len()); - let mut scalars = Vec::with_capacity(pairs.len()); - for (point, scalar) in pairs { - points.push(read_bls_g2_point(point)?); - scalars.push(read_bls_scalar(scalar)); - } - - if points.is_empty() { - return Ok([0u8; BLS_G2_LEN]); - } - - Ok(encode_bls_g2_point(&openvm_ecc_guest::msm( - &scalars, &points, - ))) - } - - #[inline] - fn bls12_381_pairing_check( - &self, - pairs: &[( - ([u8; 48], [u8; 48]), - ([u8; 48], [u8; 48], [u8; 48], [u8; 48]), - )], - ) -> Result { - if pairs.is_empty() { - return Ok(true); - } - - let mut g1_points = Vec::with_capacity(pairs.len()); - let mut g2_points = Vec::with_capacity(pairs.len()); - for (g1_bytes, g2_bytes) in pairs { - let (g1_x, g1_y) = read_bls_g1_point(g1_bytes)?.into_coords(); - let (g2_x, g2_y) = read_bls_g2_point(g2_bytes)?.into_coords(); - g1_points.push(AffinePoint::new(g1_x, g1_y)); - g2_points.push(AffinePoint::new(g2_x, g2_y)); - } - - Ok(Bls12_381::pairing_check(&g1_points, &g2_points).is_ok()) - } - - #[inline] - fn bls12_381_fp_to_g1(&self, fp: &[u8; 48]) -> Result<[u8; 96], CryptoError> { - type Fp = ::Field; - - let fp_elem = Fp::from_bytes(fp) - .into_option() - .ok_or(CryptoError::InvalidInput("invalid Fp element"))?; - - let point = bls12_381::G1Projective::map_to_curve(&fp_elem).clear_h(); - serialize_bls12_g1(&bls12_381::G1Affine::from(point)) - } - - #[inline] - fn bls12_381_fp2_to_g2(&self, fp2: ([u8; 48], [u8; 48])) -> Result<[u8; 192], CryptoError> { - type Fp = ::Field; - type Fp2 = ::Field; - - let c0 = Fp::from_bytes(&fp2.0) - .into_option() - .ok_or(CryptoError::InvalidInput("invalid Fp2.c0 element"))?; - let c1 = Fp::from_bytes(&fp2.1) - .into_option() - .ok_or(CryptoError::InvalidInput("invalid Fp2.c1 element"))?; - - let fp2_elem = Fp2 { c0, c1 }; - let point = bls12_381::G2Projective::map_to_curve(&fp2_elem).clear_h(); - serialize_bls12_g2(&bls12_381::G2Affine::from(point)) - } -} - -/// Returns true if the modulus (big-endian, possibly with leading zeros) equals BN254 Fr. -fn is_bn254_fr(modulus: &[u8]) -> bool { - // Strip leading zeros - let stripped = match modulus.iter().position(|&b| b != 0) { - Some(i) => &modulus[i..], - None => return false, // all zeros - }; - // bn::Scalar::MODULUS is little-endian; compare against reversed input - stripped.len() == BN_SCALAR_LEN - && stripped - .iter() - .rev() - .eq(bn::Scalar::MODULUS.as_ref().iter()) -} - -/// Accelerated modexp for BN254 Fr using field arithmetic intrinsics. -fn accelerated_modexp_bn254_fr(base: &[u8], exp: &[u8]) -> Vec { - use openvm_ecc_guest::algebra::{ExpBytes, Reduce}; - - // OpenVM's field reduction requires inputs to be aligned to the field byte size. - let padded_len = base - .len() - .next_multiple_of(BN_SCALAR_LEN) - .max(BN_SCALAR_LEN); - let mut padded = vec![0u8; padded_len]; - padded[padded_len - base.len()..].copy_from_slice(base); - let base_fr = bn::Scalar::reduce_be_bytes(&padded); - - base_fr.exp_bytes(true, exp).to_be_bytes().as_ref().to_vec() -} - -// Helper functions for BN254 operations - -#[inline] -fn read_bn_fq(input: &[u8]) -> Result { - if input.len() < BN_FQ_LEN { - Err(CryptoError::InvalidInput("BN254 fp must be 32 bytes")) - } else { - bn::Fp::from_be_bytes(&input[..BN_FQ_LEN]) - .ok_or(CryptoError::InvalidInput("element not in BN254 base field")) - } -} - -#[inline] -fn read_bn_fq2(input: &[u8]) -> Result { - let y = read_bn_fq(&input[..BN_FQ_LEN])?; - let x = read_bn_fq(&input[BN_FQ_LEN..BN_FQ_LEN * 2])?; - Ok(bn::Fp2::new(x, y)) -} - -#[inline] -fn read_bn_g1_point(input: &[u8]) -> Result { - if input.len() != BN_G1_LEN { - return Err(CryptoError::InvalidInput("BN254 G1 point must be 64 bytes")); - } - let px = read_bn_fq(&input[0..BN_FQ_LEN])?; - let py = read_bn_fq(&input[BN_FQ_LEN..BN_G1_LEN])?; - // SAFETY: `read_bn_fq` produces canonical Fp elements; `from_xy` itself checks the curve - // equation and returns `None` if `(px, py)` is not on the curve. - let point = unsafe { bn::G1Affine::from_xy(px, py) } - .ok_or(CryptoError::InvalidPoint("BN254 G1 point not on curve"))?; - if point.is_in_correct_subgroup() { - Ok(point) - } else { - Err(CryptoError::InvalidPoint("BN254 G1 point not in subgroup")) - } -} - -#[inline] -fn read_bn_g2_point(input: &[u8]) -> Result { - if input.len() != BN_G2_LEN { - return Err(CryptoError::InvalidInput( - "BN254 G2 point must be 128 bytes", - )); - } - let c0 = read_bn_fq2(&input[0..BN_G1_LEN])?; - let c1 = read_bn_fq2(&input[BN_G1_LEN..BN_G2_LEN])?; - // SAFETY: `read_bn_fq2` produces canonical Fp2 elements; `from_xy` itself checks the curve - // equation and returns `None` if `(c0, c1)` is not on the twist. - let point = unsafe { bn::G2Affine::from_xy(c0, c1) } - .ok_or(CryptoError::InvalidPoint("BN254 G2 point not on curve"))?; - if point.is_in_correct_subgroup() { - Ok(point) - } else { - Err(CryptoError::InvalidPoint("BN254 G2 point not in subgroup")) - } -} - -#[inline] -fn encode_bn_g1_point(point: bn::G1Affine) -> [u8; BN_G1_LEN] { - let mut output = [0u8; BN_G1_LEN]; - - let x_bytes: &[u8] = point.x().as_le_bytes(); - let y_bytes: &[u8] = point.y().as_le_bytes(); - for i in 0..BN_FQ_LEN { - output[i] = x_bytes[BN_FQ_LEN - 1 - i]; - output[i + BN_FQ_LEN] = y_bytes[BN_FQ_LEN - 1 - i]; - } - output -} - -/// Reads a scalar from the input slice. The scalar does not need to be canonical. -#[inline] -fn read_bn_scalar(input: &[u8]) -> Result { - if input.len() != BN_SCALAR_LEN { - return Err(CryptoError::InvalidInput("BN254 scalar must be 32 bytes")); - } - Ok(bn::Scalar::from_be_bytes_unchecked(input)) -} - -// Helper functions for BLS12-381 operations - -#[inline] -fn read_bls_fp(input: &[u8; 48]) -> Result { - bls::Fp::from_be_bytes(input).ok_or(CryptoError::InvalidInput( - "element not in BLS12-381 base field", - )) -} - -#[inline] -fn read_bls_fp2(c0: &[u8; 48], c1: &[u8; 48]) -> Result { - let real = read_bls_fp(c0)?; - let imag = read_bls_fp(c1)?; - Ok(bls::Fp2::new(real, imag)) -} - -#[inline] -fn read_bls_g1_point_no_subgroup_check( - point: &([u8; 48], [u8; 48]), -) -> Result { - let px = read_bls_fp(&point.0)?; - let py = read_bls_fp(&point.1)?; - // SAFETY: `read_bls_fp` produces canonical Fp elements; `from_xy` itself checks the curve - // equation and returns `None` if `(px, py)` is not on the curve. - unsafe { bls::G1Affine::from_xy(px, py) } - .ok_or(CryptoError::InvalidPoint("BLS12-381 G1 point not on curve")) -} - -#[inline] -fn read_bls_g1_point(point: &([u8; 48], [u8; 48])) -> Result { - let point = read_bls_g1_point_no_subgroup_check(point)?; - if point.is_in_correct_subgroup() { - Ok(point) - } else { - Err(CryptoError::InvalidPoint( - "BLS12-381 G1 point not in subgroup", - )) - } -} - -#[inline] -fn read_bls_g2_point_no_subgroup_check( - point: &([u8; 48], [u8; 48], [u8; 48], [u8; 48]), -) -> Result { - let x = read_bls_fp2(&point.0, &point.1)?; - let y = read_bls_fp2(&point.2, &point.3)?; - // SAFETY: `read_bls_fp2` produces canonical Fp2 elements; `from_xy` itself checks the curve - // equation and returns `None` if `(x, y)` is not on the twist. - unsafe { bls::G2Affine::from_xy(x, y) } - .ok_or(CryptoError::InvalidPoint("BLS12-381 G2 point not on curve")) -} - -#[inline] -fn read_bls_g2_point( - point: &([u8; 48], [u8; 48], [u8; 48], [u8; 48]), -) -> Result { - let point = read_bls_g2_point_no_subgroup_check(point)?; - if point.is_in_correct_subgroup() { - Ok(point) - } else { - Err(CryptoError::InvalidPoint( - "BLS12-381 G2 point not in subgroup", - )) - } -} - -/// Reads a scalar from the input bytes. The scalar does not need to be canonical. -#[inline] -fn read_bls_scalar(input: &[u8; 32]) -> bls::Scalar { - bls::Scalar::from_be_bytes_unchecked(input) -} - -#[inline] -fn encode_bls_g1_point(point: &bls::G1Affine) -> [u8; BLS_G1_LEN] { - if point.is_identity() { - return [0u8; BLS_G1_LEN]; - } - - let mut output = [0u8; BLS_G1_LEN]; - let x_bytes: &[u8] = point.x().as_le_bytes(); - let y_bytes: &[u8] = point.y().as_le_bytes(); - for i in 0..BLS_FP_LEN { - output[i] = x_bytes[BLS_FP_LEN - 1 - i]; - output[i + BLS_FP_LEN] = y_bytes[BLS_FP_LEN - 1 - i]; - } - output -} - -#[inline] -fn encode_bls_g2_point(point: &bls::G2Affine) -> [u8; BLS_G2_LEN] { - if point.is_identity() { - return [0u8; BLS_G2_LEN]; - } - - let mut output = [0u8; BLS_G2_LEN]; - let x = point.x(); - let y = point.y(); - let x_c0 = x.c0.as_le_bytes(); - let x_c1 = x.c1.as_le_bytes(); - let y_c0 = y.c0.as_le_bytes(); - let y_c1 = y.c1.as_le_bytes(); - for i in 0..BLS_FP_LEN { - output[i] = x_c0[BLS_FP_LEN - 1 - i]; - output[i + BLS_FP_LEN] = x_c1[BLS_FP_LEN - 1 - i]; - output[i + (2 * BLS_FP_LEN)] = y_c0[BLS_FP_LEN - 1 - i]; - output[i + (3 * BLS_FP_LEN)] = y_c1[BLS_FP_LEN - 1 - i]; - } - output -} - -/// Serialize a BLS12-381 G1Affine point to 96 unpadded bytes (x || y, each 48 bytes). -fn serialize_bls12_g1(point: &bls12_381::G1Affine) -> Result<[u8; 96], CryptoError> { - if bool::from(point.is_identity()) { - return Ok([0u8; 96]); - } - - Ok(point.to_uncompressed()) -} - -/// Serialize a BLS12-381 G2Affine point to 192 unpadded bytes. -/// bls12_381 serializes as x_1 || x_0 || y_1 || y_0 (192 bytes). -/// We output as x_0 || x_1 || y_0 || y_1 to match EIP-2537 convention. -fn serialize_bls12_g2(point: &bls12_381::G2Affine) -> Result<[u8; 192], CryptoError> { - if bool::from(point.is_identity()) { - return Ok([0u8; 192]); - } - - let raw = point.to_uncompressed(); - let mut out = [0u8; 192]; - out[0..48].copy_from_slice(&raw[48..96]); // x_0 - out[48..96].copy_from_slice(&raw[0..48]); // x_1 - out[96..144].copy_from_slice(&raw[144..192]); // y_0 - out[144..192].copy_from_slice(&raw[96..144]); // y_1 - Ok(out) -} diff --git a/crates/stateless-validator-reth/Cargo.toml b/crates/stateless-validator-reth/Cargo.toml index 08156bbe..6ea0961a 100644 --- a/crates/stateless-validator-reth/Cargo.toml +++ b/crates/stateless-validator-reth/Cargo.toml @@ -31,9 +31,6 @@ reth-primitives-traits.workspace = true reth-stateless.workspace = true reth-tries.workspace = true -# openvm -openvm-sha2 = { workspace = true, optional = true } - # zkvm-standard zkvm-interface = { workspace = true, optional = true } @@ -56,7 +53,7 @@ required-features = ["host"] # guest default = ["std"] std = ["once_cell/std", "stateless-validator-common/std"] -openvm = ["dep:openvm-sha2"] +openvm = ["zkvm-interface"] sp1 = ["zkvm-interface"] zisk = ["zkvm-interface"] zkvm-interface = ["alloy-consensus/crypto-backend", "dep:zkvm-interface"] diff --git a/crates/stateless-validator-reth/src/guest/crypto.rs b/crates/stateless-validator-reth/src/guest/crypto.rs index 50a5054b..8dbc8894 100644 --- a/crates/stateless-validator-reth/src/guest/crypto.rs +++ b/crates/stateless-validator-reth/src/guest/crypto.rs @@ -1,7 +1,5 @@ //! Crypto provider selection for the guest. -#[cfg(feature = "openvm")] -pub(crate) mod openvm; #[cfg(feature = "sp1")] pub(crate) mod sp1; #[cfg(feature = "zkvm-interface")] @@ -10,12 +8,12 @@ pub mod zkvm_interface; use stateless_validator_common::Sha256Hasher; /// Returns the [`Sha256Hasher`] implementation for the active zkVM feature. -#[allow(unreachable_code)] +#[cfg(feature = "zkvm-interface")] +pub(crate) fn sha256_hasher() -> impl Sha256Hasher { + zkvm_interface::sha256_hasher() +} + +#[cfg(not(feature = "zkvm-interface"))] pub(crate) fn sha256_hasher() -> impl Sha256Hasher { - #[cfg(feature = "openvm")] - return openvm::OpenVMSha256Hasher; - #[cfg(feature = "zkvm-interface")] - return zkvm_interface::sha256_hasher(); - #[cfg(not(any(feature = "openvm", feature = "zkvm-interface")))] - return stateless_validator_common::Sha2Hasher; + stateless_validator_common::Sha2Hasher } diff --git a/crates/stateless-validator-reth/src/guest/crypto/openvm.rs b/crates/stateless-validator-reth/src/guest/crypto/openvm.rs deleted file mode 100644 index 01136f6c..00000000 --- a/crates/stateless-validator-reth/src/guest/crypto/openvm.rs +++ /dev/null @@ -1,12 +0,0 @@ -use openvm_sha2::{Digest, Sha256}; -use stateless_validator_common::Sha256Hasher; - -/// OpenVM SHA-256 provider for SSZ tree hashing. -#[derive(Debug, Clone, Copy, Default)] -pub(crate) struct OpenVMSha256Hasher; - -impl Sha256Hasher for OpenVMSha256Hasher { - fn hash(&self, input: &[u8]) -> [u8; 32] { - Sha256::digest(input).into() - } -}