diff --git a/Cargo.lock b/Cargo.lock index 12339500..94afc0ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,54 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "abi_stable" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69d6512d3eb05ffe5004c59c206de7f99c34951504056ce23fc953842f12c445" +dependencies = [ + "abi_stable_derive", + "abi_stable_shared", + "const_panic", + "core_extensions", + "crossbeam-channel", + "generational-arena", + "libloading", + "lock_api", + "parking_lot", + "paste", + "repr_offset", + "rustc_version 0.4.1", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "abi_stable_derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7178468b407a4ee10e881bc7a328a65e739f0863615cca4429d43916b05e898" +dependencies = [ + "abi_stable_shared", + "as_derive_utils", + "core_extensions", + "proc-macro2", + "quote", + "rustc_version 0.4.1", + "syn 1.0.109", + "typed-arena", +] + +[[package]] +name = "abi_stable_shared" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b5df7688c123e63f4d4d649cba63f2967ba7f7861b1664fca3f77d3dad2b63" +dependencies = [ + "core_extensions", +] + [[package]] name = "addchain" version = "0.2.0" @@ -90,11 +138,20 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" +[[package]] +name = "alloy" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f07655fedc35188f3c50ff8fc6ee45703ae14ef1bc7ae7d80e23a747012184e3" +dependencies = [ + "alloy-core", +] + [[package]] name = "alloy-chains" -version = "0.2.18" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfaa9ea039a6f9304b4a593d780b1f23e1ae183acdee938b11b38795acacc9f1" +checksum = "ff8c665521d11efbb11d5e5c5d63971426bb63df00d24545baf97e7f3dc91c0c" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -105,20 +162,20 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad704069c12f68d0c742d0cad7e0a03882b42767350584627fbf8a47b1bf1846" +checksum = "2e318e25fb719e747a7e8db1654170fc185024f3ed5b10f86c08d448a912f6e2" dependencies = [ - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rlp", - "alloy-serde 1.1.1", + "alloy-serde 1.1.3", "alloy-trie 0.9.1", "alloy-tx-macros", "auto_impl", "borsh", "c-kzg", - "derive_more 2.0.1", + "derive_more 2.1.0", "either", "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell", @@ -132,18 +189,27 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc374f640a5062224d7708402728e3d6879a514ba10f377da62e7dfb14c673e6" +checksum = "364380a845193a317bcb7a5398fc86cdb66c47ebe010771dde05f6869bf9e64a" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rlp", - "alloy-serde 1.1.1", + "alloy-serde 1.1.3", "serde", ] +[[package]] +name = "alloy-core" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca96214615ec8cf3fa2a54b32f486eb49100ca7fe7eb0b8c1137cd316e7250a" +dependencies = [ + "alloy-primitives", +] + [[package]] name = "alloy-eip2124" version = "0.2.0" @@ -198,7 +264,7 @@ dependencies = [ "alloy-serde 0.14.0", "auto_impl", "c-kzg", - "derive_more 2.0.1", + "derive_more 2.1.0", "either", "serde", "sha2 0.10.9", @@ -206,20 +272,20 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e867b5fd52ed0372a95016f3a37cbff95a9d5409230fbaef2d8ea00e8618098" +checksum = "a4c4d7c5839d9f3a467900c625416b24328450c65702eb3d8caff8813e4d1d33" dependencies = [ "alloy-eip2124", "alloy-eip2930", "alloy-eip7702", "alloy-primitives", "alloy-rlp", - "alloy-serde 1.1.1", + "alloy-serde 1.1.3", "auto_impl", "borsh", "c-kzg", - "derive_more 2.0.1", + "derive_more 2.1.0", "either", "ethereum_ssz", "ethereum_ssz_derive", @@ -236,15 +302,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08e9e656d58027542447c1ca5aa4ca96293f09e6920c4651953b7451a7c35e4e" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-hardforks", "alloy-primitives", "alloy-rpc-types-engine", "alloy-rpc-types-eth", "alloy-sol-types", "auto_impl", - "derive_more 2.0.1", - "op-alloy-consensus 0.22.1", + "derive_more 2.1.0", + "op-alloy-consensus 0.22.4", "op-alloy-rpc-types-engine", "op-revm", "revm 30.1.1", @@ -253,13 +319,13 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b90be17e9760a6ba6d13cebdb049cea405ebc8bf57d90664ed708cc5bc348342" +checksum = "1ba4b1be0988c11f0095a2380aa596e35533276b8fa6c9e06961bbfe0aebcac5" dependencies = [ - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", - "alloy-serde 1.1.1", + "alloy-serde 1.1.3", "alloy-trie 0.9.1", "borsh", "serde", @@ -268,9 +334,9 @@ dependencies = [ [[package]] name = "alloy-hardforks" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e29d7eacf42f89c21d7f089916d0bdb4f36139a31698790e8837d2dbbd4b2c3" +checksum = "2d9a33550fc21fd77a3f8b63e99969d17660eec8dcc50a95a80f7c9964f7680b" dependencies = [ "alloy-chains", "alloy-eip2124", @@ -294,9 +360,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcab4c51fb1273e3b0f59078e0cdf8aa99f697925b09f0d2055c18be46b4d48c" +checksum = "f72cf87cda808e593381fb9f005ffa4d2475552b7a6c5ac33d087bf77d82abd0" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -309,24 +375,24 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196d7fd3f5d414f7bbd5886a628b7c42bd98d1b126f9a7cff69dbfd72007b39c" +checksum = "12aeb37b6f2e61b93b1c3d34d01ee720207c76fe447e2a2c217e433ac75b17f5" dependencies = [ "alloy-consensus", "alloy-consensus-any", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-json-rpc", "alloy-network-primitives", "alloy-primitives", "alloy-rpc-types-any", "alloy-rpc-types-eth", - "alloy-serde 1.1.1", + "alloy-serde 1.1.3", "alloy-signer", "alloy-sol-types", "async-trait", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.0", "futures-utils-wasm", "serde", "serde_json", @@ -335,14 +401,14 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d3ae2777e900a7a47ad9e3b8ab58eff3d93628265e73bbdee09acf90bf68f75" +checksum = "abd29ace62872083e30929cd9b282d82723196d196db589f3ceda67edcc05552" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", - "alloy-serde 1.1.1", + "alloy-serde 1.1.3", "serde", ] @@ -356,10 +422,10 @@ dependencies = [ "bytes", "cfg-if", "const-hex", - "derive_more 2.0.1", + "derive_more 2.1.0", "foldhash 0.2.0", - "hashbrown 0.16.0", - "indexmap 2.12.0", + "hashbrown 0.16.1", + "indexmap 2.12.1", "itoa", "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", "keccak-asm", @@ -376,13 +442,13 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f9bf40c9b2a90c7677f9c39bccd9f06af457f35362439c0497a706f16557703" +checksum = "9b710636d7126e08003b8217e24c09f0cca0b46d62f650a841736891b1ed1fc1" dependencies = [ "alloy-chains", "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-json-rpc", "alloy-network", "alloy-network-primitives", @@ -432,14 +498,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "alloy-rpc-client" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c2630fde9ff6033a780635e1af6ef40e92d74a9cacb8af3defc1b15cfebca5" +checksum = "d0882e72d2c1c0c79dcf4ab60a67472d3f009a949f774d4c17d0bdb669cfde05" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -460,39 +526,39 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b8429b5b62d21bf3691eb1ae12aaae9bb496894d5a114e3cc73e27e6800ec8" +checksum = "6a63fb40ed24e4c92505f488f9dd256e2afaed17faa1b7a221086ebba74f4122" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", - "alloy-serde 1.1.1", + "alloy-serde 1.1.3", ] [[package]] name = "alloy-rpc-types-debug" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01731601ea631bd825c652a225701ab466c09457f446b8d8129368a095389c5d" +checksum = "4936f579d9d10eae01772b2ab3497f9d568684f05f26f8175e12f9a1a2babc33" dependencies = [ "alloy-primitives", - "derive_more 2.0.1", + "derive_more 2.1.0", "serde", "serde_with", ] [[package]] name = "alloy-rpc-types-engine" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9981491bb98e76099983f516ec7de550db0597031f5828c994961eb4bb993cce" +checksum = "4c60bdce3be295924122732b7ecd0b2495ce4790bedc5370ca7019c08ad3f26e" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rlp", - "alloy-serde 1.1.1", - "derive_more 2.0.1", + "alloy-serde 1.1.3", + "derive_more 2.1.0", "ethereum_ssz", "ethereum_ssz_derive", "serde", @@ -501,17 +567,17 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29031a6bf46177d65efce661f7ab37829ca09dd341bc40afb5194e97600655cc" +checksum = "9eae0c7c40da20684548cbc8577b6b7447f7bf4ddbac363df95e3da220e41e72" dependencies = [ "alloy-consensus", "alloy-consensus-any", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-network-primitives", "alloy-primitives", "alloy-rlp", - "alloy-serde 1.1.1", + "alloy-serde 1.1.3", "alloy-sol-types", "itertools 0.14.0", "serde", @@ -533,9 +599,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01e856112bfa0d9adc85bd7c13db03fad0e71d1d6fb4c2010e475b6718108236" +checksum = "c0df1987ed0ff2d0159d76b52e7ddfc4e4fbddacc54d2fbee765e0d14d7c01b5" dependencies = [ "alloy-primitives", "serde", @@ -544,9 +610,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a4f629da632d5279bbc5731634f0f5c9484ad9c4cad0cd974d9669dc1f46d6" +checksum = "6ff69deedee7232d7ce5330259025b868c5e6a52fa8dffda2c861fb3a5889b24" dependencies = [ "alloy-primitives", "async-trait", @@ -568,7 +634,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -580,11 +646,11 @@ dependencies = [ "alloy-sol-macro-input", "const-hex", "heck 0.5.0", - "indexmap 2.12.0", + "indexmap 2.12.1", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "syn-solidity", "tiny-keccak", ] @@ -601,7 +667,7 @@ dependencies = [ "macro-string", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "syn-solidity", ] @@ -629,14 +695,14 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe215a2f9b51d5f1aa5c8cf22c8be8cdb354934de09c9a4e37aefb79b77552fd" +checksum = "be98b07210d24acf5b793c99b759e9a696e4a2e67593aec0487ae3b3e1a2478c" dependencies = [ "alloy-json-rpc", "auto_impl", - "base64", - "derive_more 2.0.1", + "base64 0.22.1", + "derive_more 2.1.0", "futures", "futures-utils-wasm", "governor", @@ -653,9 +719,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1b37b1a30d23deb3a8746e882c70b384c574d355bc2bbea9ea918b0c31366e" +checksum = "4198a1ee82e562cab85e7f3d5921aab725d9bd154b6ad5017f82df1695877c97" dependencies = [ "alloy-json-rpc", "alloy-transport", @@ -675,7 +741,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "arrayvec", - "derive_more 2.0.1", + "derive_more 2.1.0", "nybbles 0.3.4", "serde", "smallvec", @@ -691,7 +757,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "arrayvec", - "derive_more 2.0.1", + "derive_more 2.1.0", "nybbles 0.4.6", "serde", "smallvec", @@ -700,14 +766,14 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ccf423f6de62e8ce1d6c7a11fb7508ae3536d02e0d68aaeb05c8669337d0937" +checksum = "333544408503f42d7d3792bfc0f7218b643d968a03d2c0ed383ae558fb4a76d0" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -923,7 +989,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -961,7 +1027,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1050,7 +1116,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1099,6 +1165,18 @@ dependencies = [ "serde", ] +[[package]] +name = "as_derive_utils" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff3c96645900a44cf11941c111bd08a6573b0e2f9f69bc9264b179d8fae753c4" +dependencies = [ + "core_extensions", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "async-stream" version = "0.3.6" @@ -1118,7 +1196,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1129,7 +1207,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1156,7 +1234,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1177,14 +1255,14 @@ dependencies = [ "eyre", "flate2", "hex", - "openvm-build", + "openvm-build 1.4.1", "reqwest", "rustc_version 0.4.1", "scopeguard", "serde", "serde_json", "tar", - "toml_edit 0.23.7", + "toml_edit 0.23.9", "url", "walkdir", ] @@ -1211,12 +1289,34 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + [[package]] name = "base16ct" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +[[package]] +name = "base256emoji" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e9430d9a245a77c92176e649af6e275f20839a48389859d1661e9a128d077c" +dependencies = [ + "const-str", + "match-lookup", +] + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "base64" version = "0.22.1" @@ -1225,9 +1325,27 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.8.0" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bech32" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" + +[[package]] +name = "beef" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" [[package]] name = "bincode" @@ -1294,20 +1412,41 @@ checksum = "ffebfc2d28a12b262c303cb3860ee77b91bd83b1f20f0bd2a9693008e2f55a9e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "bitcoin-io" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b47c4ab7a93edb0c7198c5535ed9b52b63095f4e9b45279c6736cec4b856baf" +checksum = "2dee39a0ee5b4095224a0cfc6bf4cc1baf0f9624b96b367e53b66d974e51d953" + +[[package]] +name = "bitcoin-private" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73290177011694f38ec25e165d0387ab7ea749a4b81cd4c80dae5988229f7a57" + +[[package]] +name = "bitcoin-private" +version = "0.1.0" +source = "git+https://github.com/DogeOS69/rust-dogecoin.git?branch=dogeos#ea3c4f9891fa061696b96c91147ab1ef2fe0705d" [[package]] name = "bitcoin_hashes" -version = "0.14.0" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d7066118b13d4b20b23645932dfb3a81ce7e29f95726c2036fa33cd7b092501" +dependencies = [ + "bitcoin-private 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", +] + +[[package]] +name = "bitcoin_hashes" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb18c03d0db0247e147a21a6faafd5a7eb851c743db062de72018b6b7e8e4d16" +checksum = "26ec84b80c482df901772e931a9a681e26a1b9ee2302edeff23cb30328745c8b" dependencies = [ "bitcoin-io", "hex-conservative", @@ -1401,6 +1540,18 @@ dependencies = [ "hybrid-array", ] +[[package]] +name = "blockstore" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "509096e88e431095763b3f5ee1e1cdb09212e4d5b2eccc91ddea965deefedb7d" +dependencies = [ + "cid", + "dashmap", + "multihash", + "thiserror 2.0.17", +] + [[package]] name = "bls12_381" version = "0.7.1" @@ -1426,6 +1577,22 @@ dependencies = [ "zeroize", ] +[[package]] +name = "blstrs" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8a8ed6fefbeef4a8c7b460e4110e12c5e22a5b7cf32621aae6ad650c4dcf29" +dependencies = [ + "blst", + "byte-slice-cast", + "ff 0.13.1", + "group 0.13.0", + "pairing 0.23.0", + "rand_core 0.6.4", + "serde", + "subtle", +] + [[package]] name = "bon" version = "3.8.1" @@ -1448,14 +1615,14 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "borsh" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" dependencies = [ "borsh-derive", "cfg_aliases", @@ -1463,15 +1630,119 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", +] + +[[package]] +name = "bridge_adapters_zk" +version = "0.3.0" +source = "git+ssh://git@github.com/DogeOS69/dogeos-core.git?branch=scroll%2Fopenvm%2Fupgrade#177a521452107f87099dabb7e0fdb50ecb13d0c8" +dependencies = [ + "bincode 2.0.1", + "bridge_core", + "bridge_protocol", + "openvm", + "openvm-sdk", + "serde", +] + +[[package]] +name = "bridge_core" +version = "0.3.0" +source = "git+ssh://git@github.com/DogeOS69/dogeos-core.git?branch=scroll%2Fopenvm%2Fupgrade#177a521452107f87099dabb7e0fdb50ecb13d0c8" +dependencies = [ + "bincode 2.0.1", + "thiserror 2.0.17", +] + +[[package]] +name = "bridge_integrity" +version = "0.2.0" +source = "git+ssh://git@github.com/DogeOS69/dogeos-core.git?branch=scroll%2Fopenvm%2Fupgrade#177a521452107f87099dabb7e0fdb50ecb13d0c8" +dependencies = [ + "common_types", + "hex", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "bridge_protocol" +version = "0.3.0" +source = "git+ssh://git@github.com/DogeOS69/dogeos-core.git?branch=scroll%2Fopenvm%2Fupgrade#177a521452107f87099dabb7e0fdb50ecb13d0c8" +dependencies = [ + "bincode 2.0.1", + "bridge_core", + "serde", + "serde_bytes", +] + +[[package]] +name = "bridge_steps_da" +version = "0.3.0" +source = "git+ssh://git@github.com/DogeOS69/dogeos-core.git?branch=scroll%2Fopenvm%2Fupgrade#177a521452107f87099dabb7e0fdb50ecb13d0c8" +dependencies = [ + "bincode 2.0.1", + "bridge_core", + "bridge_integrity", + "bridge_protocol", + "celestia-proto", + "celestia-types", + "common_types", + "da_codec", + "hex", + "prost", + "serde", + "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "bridge_steps_deposit" +version = "0.3.0" +source = "git+ssh://git@github.com/DogeOS69/dogeos-core.git?branch=scroll%2Fopenvm%2Fupgrade#177a521452107f87099dabb7e0fdb50ecb13d0c8" +dependencies = [ + "bitcoin_hashes 0.12.0", + "bridge_core", + "bridge_protocol", + "bridge_transforms", + "byteorder", + "common_types", + "hex", + "nintondo-dogecoin", + "tracing", + "tracing-subscriber 0.3.22", + "url", +] + +[[package]] +name = "bridge_transforms" +version = "0.3.0" +source = "git+ssh://git@github.com/DogeOS69/dogeos-core.git?branch=scroll%2Fopenvm%2Fupgrade#177a521452107f87099dabb7e0fdb50ecb13d0c8" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "bridge_protocol", + "common_types", + "hex", + "thiserror 2.0.17", +] + +[[package]] +name = "bs58" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +dependencies = [ + "tinyvec", ] [[package]] @@ -1506,7 +1777,7 @@ checksum = "89385e82b5d1821d2219e0b095efa2cc1f246cbf99080f3be46a1a85c0d392d9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1532,9 +1803,9 @@ dependencies = [ [[package]] name = "bytesize" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c99fa31e08a43eaa5913ef68d7e01c37a2bdce6ed648168239ad33b7d30a9cd8" +checksum = "6bd91ee7b2422bcb158d90ef4d14f75ef67f340943fc4149891dcce8f8b972a3" [[package]] name = "c-kzg" @@ -1648,9 +1919,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.46" +version = "1.2.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97463e1064cb1b1c1384ad0a0b9c8abd0988e2a91f52606c80ef14aadb63e36" +checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" dependencies = [ "find-msvc-tools", "jobserver", @@ -1658,6 +1929,58 @@ dependencies = [ "shlex", ] +[[package]] +name = "celestia-proto" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a6bc833fe0048c158f4740cb4b08cbfb6f407f2bf8ff369d3f6ade932d628f" +dependencies = [ + "bytes", + "prost", + "prost-build", + "prost-types", + "protox", + "serde", + "subtle-encoding", + "tendermint-proto", + "tonic", + "tonic-build", +] + +[[package]] +name = "celestia-types" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68d248009d2b38857ad5d0b6d6c754754132b19e836ba205bdda14631065fa98" +dependencies = [ + "base64 0.22.1", + "bech32 0.11.1", + "bitvec", + "blockstore", + "bytes", + "celestia-proto", + "cid", + "const_format", + "enum_dispatch", + "getrandom 0.2.16", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "leopard-codec", + "libp2p-identity", + "lumina-utils", + "multiaddr", + "multihash", + "nmt-rs", + "prost", + "rust_decimal", + "serde", + "serde_repr", + "sha2 0.10.9", + "tendermint", + "tendermint-proto", + "thiserror 2.0.17", + "time", +] + [[package]] name = "cfg-if" version = "1.0.4" @@ -1684,6 +2007,18 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "cid" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3147d8272e8fa0ccd29ce51194dd98f79ddfb8191ba9e3409884e751798acf3a" +dependencies = [ + "core2", + "multibase", + "multihash", + "unsigned-varint", +] + [[package]] name = "cipher" version = "0.5.0-rc.1" @@ -1697,9 +2032,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.51" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" +checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" dependencies = [ "clap_builder", "clap_derive", @@ -1707,9 +2042,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.51" +version = "4.5.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" +checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" dependencies = [ "anstream", "anstyle", @@ -1726,7 +2061,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -1778,6 +2113,21 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "common_types" +version = "0.3.0" +source = "git+ssh://git@github.com/DogeOS69/dogeos-core.git?branch=scroll%2Fopenvm%2Fupgrade#177a521452107f87099dabb7e0fdb50ecb13d0c8" +dependencies = [ + "alloy-primitives", + "hex", + "nintondo-dogecoin", + "prost", + "prost-build", + "serde", + "thiserror 2.0.17", + "tracing", +] + [[package]] name = "console" version = "0.16.1" @@ -1787,7 +2137,7 @@ dependencies = [ "encode_unicode", "libc", "once_cell", - "unicode-width", + "unicode-width 0.2.2", "windows-sys 0.61.2", ] @@ -1809,6 +2159,12 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const-str" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f421161cb492475f1661ddc9815a745a1c894592070661180fdec3d4872e9c3" + [[package]] name = "const_format" version = "0.2.35" @@ -1829,6 +2185,15 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "const_panic" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e262cdaac42494e3ae34c43969f9cdeb7da178bdb4b66fa6a1ea2edb4c8ae652" +dependencies = [ + "typewit", +] + [[package]] name = "constant_time_eq" version = "0.3.1" @@ -1837,9 +2202,9 @@ checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "convert_case" -version = "0.7.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" dependencies = [ "unicode-segmentation", ] @@ -1860,6 +2225,30 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "core2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505" +dependencies = [ + "memchr", +] + +[[package]] +name = "core_extensions" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42bb5e5d0269fd4f739ea6cedaf29c16d81c27a7ce7582008e90eb50dcd57003" +dependencies = [ + "core_extensions_proc_macros", +] + +[[package]] +name = "core_extensions_proc_macros" +version = "1.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "533d38ecd2709b7608fb8e18e4504deb99e9a72879e6aa66373a76d8dc4259ea" + [[package]] name = "cpufeatures" version = "0.2.17" @@ -1871,9 +2260,9 @@ dependencies = [ [[package]] name = "crc" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9710d3b3739c2e349eb44fe848ad0b7c8cb1e42bd87ee49371df2f7acaf3e675" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" dependencies = [ "crc-catalog", ] @@ -1963,7 +2352,7 @@ checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ "bitflags", "crossterm_winapi", - "derive_more 2.0.1", + "derive_more 2.1.0", "document-features", "mio", "parking_lot", @@ -2090,6 +2479,36 @@ version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1871a911a2b9a3f66a285896a719159985683bf9903aa2cf89e0c9f53e14552" +[[package]] +name = "curve25519-dalek-ng" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.6.4", + "subtle-ng", + "zeroize", +] + +[[package]] +name = "da_codec" +version = "0.3.0" +source = "git+ssh://git@github.com/DogeOS69/dogeos-core.git?branch=scroll%2Fopenvm%2Fupgrade#177a521452107f87099dabb7e0fdb50ecb13d0c8" +dependencies = [ + "alloy", + "common_types", + "hex", + "once_cell", + "prost", + "scroll-codec", + "serde", + "serde_json", + "thiserror 2.0.17", + "tracing", +] + [[package]] name = "darling" version = "0.20.11" @@ -2121,7 +2540,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2136,7 +2555,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2147,7 +2566,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2158,7 +2577,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2176,6 +2595,32 @@ dependencies = [ "rayon", ] +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + +[[package]] +name = "data-encoding-macro" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47ce6c96ea0102f01122a185683611bd5ac8d99e62bc59dd12e6bda344ee673d" +dependencies = [ + "data-encoding", + "data-encoding-macro-internal", +] + +[[package]] +name = "data-encoding-macro-internal" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" +dependencies = [ + "data-encoding", + "syn 2.0.111", +] + [[package]] name = "der" version = "0.7.10" @@ -2215,7 +2660,7 @@ checksum = "d150dea618e920167e5973d70ae6ece4385b7164e0d799fe7c122dd0a5d912ad" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2226,7 +2671,7 @@ checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2237,7 +2682,7 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2251,11 +2696,11 @@ dependencies = [ [[package]] name = "derive_more" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +checksum = "10b768e943bed7bf2cab53df09f4bc34bfd217cdb57d971e769874c9a6710618" dependencies = [ - "derive_more-impl 2.0.1", + "derive_more-impl 2.1.0", ] [[package]] @@ -2266,20 +2711,21 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "unicode-xid", ] [[package]] name = "derive_more-impl" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +checksum = "6d286bfdaf75e988b4a78e013ecd79c581e06399ab53fbacd2d916c2f904f30b" dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.110", + "rustc_version 0.4.1", + "syn 2.0.111", "unicode-xid", ] @@ -2333,7 +2779,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2345,6 +2791,72 @@ dependencies = [ "litrs", ] +[[package]] +name = "dogeos-zkvm-batch-circuit" +version = "0.7.1" +dependencies = [ + "alloy-primitives", + "bincode 2.0.1", + "itertools 0.14.0", + "openvm", + "openvm-algebra-guest", + "openvm-ecc-guest", + "openvm-keccak256-guest", + "openvm-pairing", + "openvm-sha256-guest", + "scroll-zkvm-types-batch", + "scroll-zkvm-types-circuit", +] + +[[package]] +name = "dogeos-zkvm-bundle-circuit" +version = "0.7.1" +dependencies = [ + "alloy-primitives", + "bincode 2.0.1", + "openvm", + "openvm-keccak256-guest", + "scroll-zkvm-types-bundle", + "scroll-zkvm-types-circuit", +] + +[[package]] +name = "dogeos-zkvm-chunk-circuit" +version = "0.7.1" +dependencies = [ + "bincode 2.0.1", + "k256 0.13.4 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", + "openvm", + "openvm-algebra-complex-macros", + "openvm-algebra-guest", + "openvm-bigint-guest", + "openvm-ecc-guest", + "openvm-keccak256-guest", + "openvm-pairing", + "openvm-pairing-guest", + "openvm-rv32im-guest 1.4.2", + "openvm-sha2", + "p256 0.13.2 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", + "scroll-zkvm-types-chunk", + "scroll-zkvm-types-circuit", +] + +[[package]] +name = "dogeos-zkvm-integration" +version = "0.7.1" +dependencies = [ + "bridge_adapters_zk", + "bridge_core", + "bridge_protocol", + "bridge_steps_da", + "eyre", + "sbv-primitives", + "scroll-zkvm-integration", + "scroll-zkvm-prover", + "scroll-zkvm-types", + "serde_json", +] + [[package]] name = "dotenvy" version = "0.15.7" @@ -2412,6 +2924,29 @@ dependencies = [ "thiserror 2.0.17", ] +[[package]] +name = "ed25519" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" +dependencies = [ + "pkcs8", + "signature", +] + +[[package]] +name = "ed25519-consensus" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8465edc8ee7436ffea81d21a019b16676ee3db267aa8d5a8d729581ecf998b" +dependencies = [ + "curve25519-dalek-ng", + "hex", + "rand_core 0.6.4", + "sha2 0.9.9", + "zeroize", +] + [[package]] name = "educe" version = "0.6.0" @@ -2421,7 +2956,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2468,7 +3003,7 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoder-standard" version = "0.1.0" -source = "git+https://github.com/scroll-tech/da-codec.git#7a92e859b55094ba5b5c7d556c49c4dbd3f47ddb" +source = "git+https://github.com/scroll-tech/da-codec.git#54929786434f00efd00431517a332f1ec8ca58d4" dependencies = [ "zstd", ] @@ -2505,7 +3040,7 @@ checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2517,7 +3052,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2528,7 +3063,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2618,7 +3153,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2728,6 +3263,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" version = "1.1.5" @@ -2738,6 +3279,15 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "flex-error" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c606d892c9de11507fa0dcffc116434f94e105d0bbdc4e405b61519464c49d7b" +dependencies = [ + "paste", +] + [[package]] name = "fnv" version = "1.0.7" @@ -2842,7 +3392,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2902,6 +3452,15 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" +[[package]] +name = "generational-arena" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877e94aff08e743b651baaea359664321055749b398adff8740a7399af7796e7" +dependencies = [ + "cfg-if", +] + [[package]] name = "generic-array" version = "0.14.9" @@ -2920,8 +3479,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] @@ -2947,7 +3508,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -2982,7 +3543,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -3047,7 +3608,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff 0.13.1", + "rand 0.8.5", "rand_core 0.6.4", + "rand_xorshift 0.3.0", "subtle", ] @@ -3063,7 +3626,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.12.0", + "indexmap 2.12.1", "slab", "tokio", "tokio-util", @@ -3089,7 +3652,7 @@ dependencies = [ "crossbeam", "ff 0.13.1", "group 0.13.0", - "halo2curves-axiom", + "halo2curves-axiom 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.11.0", "maybe-rayon", "pairing 0.23.0", @@ -3213,6 +3776,33 @@ dependencies = [ "unroll", ] +[[package]] +name = "halo2curves-axiom" +version = "0.7.2" +source = "git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2#3a65a710e27fe03711f6fb4fc0c4469ae351974a" +dependencies = [ + "blake2b_simd", + "digest 0.10.7", + "ff 0.13.1", + "group 0.13.0", + "hex", + "lazy_static", + "num-bigint 0.4.6", + "num-traits", + "pairing 0.23.0", + "pasta_curves 0.5.1", + "paste", + "rand 0.8.5", + "rand_core 0.6.4", + "rayon", + "serde", + "serde_arrays", + "sha2 0.10.9", + "static_assertions", + "subtle", + "unroll", +] + [[package]] name = "halo2derive" version = "0.1.0" @@ -3255,12 +3845,13 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" dependencies = [ "foldhash 0.2.0", "serde", + "serde_core", ] [[package]] @@ -3292,9 +3883,9 @@ dependencies = [ [[package]] name = "hex-conservative" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5313b072ce3c597065a808dbf612c4c8e8590bdbf8b579508bf7a762c5eae6cd" +checksum = "fda06d18ac606267c40c04e41b9947729bf8b9efe74bd4e82b61a5f26a510b9f" dependencies = [ "arrayvec", ] @@ -3305,6 +3896,12 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +[[package]] +name = "hex_lit" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" + [[package]] name = "hkdf" version = "0.12.4" @@ -3325,12 +3922,11 @@ dependencies = [ [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -3428,11 +4024,11 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "futures-channel", "futures-core", @@ -3464,7 +4060,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.62.2", ] [[package]] @@ -3601,7 +4197,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -3623,12 +4219,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.12.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" +checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" dependencies = [ "equivalent", - "hashbrown 0.16.0", + "hashbrown 0.16.1", "serde", "serde_core", ] @@ -3653,7 +4249,7 @@ dependencies = [ "dyn-clone", "fuzzy-matcher", "unicode-segmentation", - "unicode-width", + "unicode-width 0.2.2", ] [[package]] @@ -3743,7 +4339,7 @@ checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -3773,9 +4369,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.82" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -3813,7 +4409,7 @@ dependencies = [ [[package]] name = "k256" version = "0.13.4" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "ecdsa", "elliptic-curve", @@ -3857,11 +4453,31 @@ dependencies = [ "spin", ] +[[package]] +name = "leopard-codec" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b397c7217467c5e5582fe413bc2f0e9f804367af8bc0f0374dc966f99d00f9c" +dependencies = [ + "bytes", + "thiserror 2.0.17", +] + [[package]] name = "libc" -version = "0.2.177" +version = "0.2.178" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" + +[[package]] +name = "libloading" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] [[package]] name = "libm" @@ -3869,6 +4485,21 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +[[package]] +name = "libp2p-identity" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3104e13b51e4711ff5738caa1fb54467c8604c2e94d607e27745bcf709068774" +dependencies = [ + "bs58", + "hkdf", + "multihash", + "quick-protobuf", + "sha2 0.10.9", + "thiserror 2.0.17", + "tracing", +] + [[package]] name = "libredox" version = "0.1.10" @@ -3887,7 +4518,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e79019718125edc905a079a70cfa5f3820bc76139fc91d6f9abc27ea2a887139" dependencies = [ "arrayref", - "base64", + "base64 0.22.1", "digest 0.9.0", "libsecp256k1-core", "libsecp256k1-gen-ecmult", @@ -3961,9 +4592,43 @@ checksum = "9374ef4228402d4b7e403e5838cb880d9ee663314b0a900d5a6aabf0c213552e" [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "logos" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff472f899b4ec2d99161c51f60ff7075eeb3097069a36050d8037a6325eb8154" +dependencies = [ + "logos-derive", +] + +[[package]] +name = "logos-codegen" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "192a3a2b90b0c05b27a0b2c43eecdb7c415e29243acc3f89cc8247a5b693045c" +dependencies = [ + "beef", + "fnv", + "lazy_static", + "proc-macro2", + "quote", + "regex-syntax", + "rustc_version 0.4.1", + "syn 2.0.111", +] + +[[package]] +name = "logos-derive" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "605d9697bcd5ef3a42d38efc51541aa3d6a4a25f7ab6d1ed0da5ac632a26b470" +dependencies = [ + "logos-codegen", +] [[package]] name = "lru" @@ -3983,6 +4648,15 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "lumina-utils" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6be0fedf4b4ddbdd34a2541f36b63daa004064b5465b7b9f52ebdc5fe1c64187" +dependencies = [ + "js-sys", +] + [[package]] name = "macro-string" version = "0.1.4" @@ -3991,7 +4665,18 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", +] + +[[package]] +name = "match-lookup" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1265724d8cb29dbbc2b0f06fffb8bf1a8c0cf73a78eede9ba73a4a66c52a981e" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", ] [[package]] @@ -4050,7 +4735,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62a6a1f7141f1d9bc7a886b87536bbfc97752e08b369e1e0453a9acfab5f5da4" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.12.1", "itoa", "lockfree-object-pool", "metrics", @@ -4058,7 +4743,7 @@ dependencies = [ "once_cell", "tracing", "tracing-core", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] @@ -4071,7 +4756,7 @@ dependencies = [ "crossbeam-epoch", "crossbeam-utils", "hashbrown 0.14.5", - "indexmap 2.12.0", + "indexmap 2.12.1", "metrics", "num_cpus", "ordered-float 4.6.0", @@ -4080,6 +4765,28 @@ dependencies = [ "sketches-ddsketch", ] +[[package]] +name = "miette" +version = "7.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7" +dependencies = [ + "cfg-if", + "miette-derive", + "unicode-width 0.1.14", +] + +[[package]] +name = "miette-derive" +version = "7.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "mime" version = "0.3.17" @@ -4108,9 +4815,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "log", @@ -4139,6 +4846,53 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "multiaddr" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6351f60b488e04c1d21bc69e56b89cb3f5e8f5d22557d6e8031bdfd79b6961" +dependencies = [ + "arrayref", + "byteorder", + "data-encoding", + "libp2p-identity", + "multibase", + "multihash", + "percent-encoding", + "serde", + "static_assertions", + "unsigned-varint", + "url", +] + +[[package]] +name = "multibase" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8694bb4835f452b0e3bb06dbebb1d6fc5385b6ca1caf2e55fd165c042390ec77" +dependencies = [ + "base-x", + "base256emoji", + "data-encoding", + "data-encoding-macro", +] + +[[package]] +name = "multihash" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b430e7953c29dd6a09afc29ff0bb69c6e306329ee6794700aee27b76a1aea8d" +dependencies = [ + "core2", + "unsigned-varint", +] + +[[package]] +name = "multimap" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" + [[package]] name = "munge" version = "0.4.7" @@ -4156,7 +4910,7 @@ checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -4185,6 +4939,33 @@ dependencies = [ "smallvec", ] +[[package]] +name = "nintondo-dogecoin" +version = "0.30.7" +source = "git+https://github.com/DogeOS69/rust-dogecoin.git?branch=dogeos#ea3c4f9891fa061696b96c91147ab1ef2fe0705d" +dependencies = [ + "base64 0.13.1", + "bech32 0.9.1", + "bitcoin-private 0.1.0 (git+https://github.com/DogeOS69/rust-dogecoin.git?branch=dogeos)", + "bitcoin_hashes 0.12.0", + "hex-conservative", + "hex_lit", + "secp256k1 0.27.0", + "serde", +] + +[[package]] +name = "nmt-rs" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d9149cb486570ac43944740ac8ea83d309d44d6a2cd2cd856606f43e40c6429" +dependencies = [ + "borsh", + "bytes", + "serde", + "sha2 0.10.9", +] + [[package]] name = "no-std-compat" version = "0.4.1" @@ -4364,7 +5145,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -4466,11 +5247,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3a501241474c3118833d6195312ae7eb7cc90bbb0d5f524cbb0b06619e49ff67" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rlp", - "alloy-serde 1.1.1", - "derive_more 2.0.1", + "alloy-serde 1.1.3", + "derive_more 2.1.0", "serde", "serde_with", "thiserror 2.0.17", @@ -4478,33 +5259,33 @@ dependencies = [ [[package]] name = "op-alloy-consensus" -version = "0.22.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d7ec388eb83a3e6c71774131dbbb2ba9c199b6acac7dce172ed8de2f819e91" +checksum = "726da827358a547be9f1e37c2a756b9e3729cb0350f43408164794b370cad8ae" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rlp", - "derive_more 2.0.1", + "derive_more 2.1.0", "thiserror 2.0.17", ] [[package]] name = "op-alloy-rpc-types-engine" -version = "0.22.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1abe694cd6718b8932da3f824f46778be0f43289e4103c88abc505c63533a04" +checksum = "d8f24b8cb66e4b33e6c9e508bf46b8ecafc92eadd0b93fedd306c0accb477657" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-engine", - "derive_more 2.0.1", + "derive_more 2.1.0", "ethereum_ssz", "ethereum_ssz_derive", - "op-alloy-consensus 0.22.1", + "op-alloy-consensus 0.22.4", "snap", "thiserror 2.0.17", ] @@ -4549,7 +5330,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -4572,29 +5353,30 @@ dependencies = [ [[package]] name = "openvm" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "bytemuck", "getrandom 0.2.16", "getrandom 0.3.4", "num-bigint 0.4.6", - "openvm-custom-insn", - "openvm-platform", - "openvm-rv32im-guest", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", + "openvm-platform 1.4.2", + "openvm-rv32im-guest 1.4.2", "serde", ] [[package]] name = "openvm-algebra-circuit" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ + "blstrs", "cfg-if", "derive-new 0.6.0", "derive_more 1.0.0", "eyre", - "halo2curves-axiom", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", "num-bigint 0.4.6", "num-traits", "openvm-algebra-transpiler", @@ -4619,46 +5401,46 @@ dependencies = [ [[package]] name = "openvm-algebra-complex-macros" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-macros-common", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "openvm-algebra-guest" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ - "halo2curves-axiom", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", "num-bigint 0.4.6", "once_cell", "openvm-algebra-complex-macros", "openvm-algebra-moduli-macros", - "openvm-custom-insn", - "openvm-rv32im-guest", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", + "openvm-rv32im-guest 1.4.2", "serde-big-array", "strum_macros 0.26.4", ] [[package]] name = "openvm-algebra-moduli-macros" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "num-bigint 0.4.6", "num-prime", "openvm-macros-common", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "openvm-algebra-transpiler" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-algebra-guest", "openvm-instructions", @@ -4671,8 +5453,8 @@ dependencies = [ [[package]] name = "openvm-benchmarks-prove" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "clap", "derive_more 1.0.0", @@ -4698,23 +5480,23 @@ dependencies = [ [[package]] name = "openvm-benchmarks-utils" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "cargo_metadata 0.18.1", "clap", "eyre", - "openvm-build", + "openvm-build 1.4.2", "openvm-transpiler", "tempfile", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] name = "openvm-bigint-circuit" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -4739,17 +5521,17 @@ dependencies = [ [[package]] name = "openvm-bigint-guest" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ - "openvm-platform", + "openvm-platform 1.4.2", "strum_macros 0.26.4", ] [[package]] name = "openvm-bigint-transpiler" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-bigint-guest", "openvm-instructions", @@ -4768,16 +5550,29 @@ source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac dependencies = [ "cargo_metadata 0.18.1", "eyre", - "openvm-platform", + "openvm-platform 1.4.1", + "serde", + "serde_json", +] + +[[package]] +name = "openvm-build" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" +dependencies = [ + "cargo_metadata 0.18.1", + "eyre", + "openvm-platform 1.4.2", "serde", "serde_json", ] [[package]] name = "openvm-circuit" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ + "abi_stable", "backtrace", "cfg-if", "dashmap", @@ -4814,19 +5609,19 @@ dependencies = [ [[package]] name = "openvm-circuit-derive" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "openvm-circuit-primitives" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "derive-new 0.6.0", "itertools 0.14.0", @@ -4843,18 +5638,18 @@ dependencies = [ [[package]] name = "openvm-circuit-primitives-derive" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "itertools 0.14.0", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "openvm-continuations" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "derivative", "openvm-circuit", @@ -4868,8 +5663,8 @@ dependencies = [ [[package]] name = "openvm-cuda-backend" -version = "1.2.1" -source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.1#dde6cdaf105cc57d1609fd49568c7bce0a066cc2" +version = "1.2.2" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.2#972f5dbecb6ab3ff7e3e978e9087235ad17c1de9" dependencies = [ "bincode 2.0.1", "bincode_derive", @@ -4900,8 +5695,8 @@ dependencies = [ [[package]] name = "openvm-cuda-builder" -version = "1.2.1" -source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.1#dde6cdaf105cc57d1609fd49568c7bce0a066cc2" +version = "1.2.2" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.2#972f5dbecb6ab3ff7e3e978e9087235ad17c1de9" dependencies = [ "cc", "glob", @@ -4909,8 +5704,8 @@ dependencies = [ [[package]] name = "openvm-cuda-common" -version = "1.2.1" -source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.1#dde6cdaf105cc57d1609fd49568c7bce0a066cc2" +version = "1.2.2" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.2#972f5dbecb6ab3ff7e3e978e9087235ad17c1de9" dependencies = [ "bytesize", "ctor", @@ -4928,18 +5723,29 @@ source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", +] + +[[package]] +name = "openvm-custom-insn" +version = "0.1.0" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] name = "openvm-ecc-circuit" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ + "blstrs", "cfg-if", "derive-new 0.6.0", "derive_more 1.0.0", - "halo2curves-axiom", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", "hex-literal", "lazy_static", "num-bigint 0.4.6", @@ -4965,37 +5771,37 @@ dependencies = [ [[package]] name = "openvm-ecc-guest" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "ecdsa", "elliptic-curve", "group 0.13.0", - "halo2curves-axiom", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", "once_cell", "openvm", "openvm-algebra-guest", - "openvm-custom-insn", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", "openvm-ecc-sw-macros", - "openvm-rv32im-guest", + "openvm-rv32im-guest 1.4.2", "serde", "strum_macros 0.26.4", ] [[package]] name = "openvm-ecc-sw-macros" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-macros-common", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "openvm-ecc-transpiler" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-ecc-guest", "openvm-instructions", @@ -5008,8 +5814,8 @@ dependencies = [ [[package]] name = "openvm-instructions" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "backtrace", "derive-new 0.6.0", @@ -5025,17 +5831,17 @@ dependencies = [ [[package]] name = "openvm-instructions-derive" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "openvm-keccak256-circuit" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -5062,16 +5868,16 @@ dependencies = [ [[package]] name = "openvm-keccak256-guest" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ - "openvm-platform", + "openvm-platform 1.4.2", ] [[package]] name = "openvm-keccak256-transpiler" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-instructions", "openvm-instructions-derive", @@ -5084,16 +5890,16 @@ dependencies = [ [[package]] name = "openvm-macros-common" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "openvm-mod-circuit-builder" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "cuda-runtime-sys", "itertools 0.14.0", @@ -5113,8 +5919,8 @@ dependencies = [ [[package]] name = "openvm-native-circuit" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -5144,8 +5950,8 @@ dependencies = [ [[package]] name = "openvm-native-compiler" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "backtrace", "itertools 0.14.0", @@ -5167,17 +5973,17 @@ dependencies = [ [[package]] name = "openvm-native-compiler-derive" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "openvm-native-recursion" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "cfg-if", "itertools 0.14.0", @@ -5203,8 +6009,8 @@ dependencies = [ [[package]] name = "openvm-native-transpiler" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-instructions", "openvm-transpiler", @@ -5213,11 +6019,11 @@ dependencies = [ [[package]] name = "openvm-pairing" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "group 0.13.0", - "halo2curves-axiom", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", "hex-literal", "itertools 0.14.0", "num-bigint 0.4.6", @@ -5226,26 +6032,26 @@ dependencies = [ "openvm-algebra-complex-macros", "openvm-algebra-guest", "openvm-algebra-moduli-macros", - "openvm-custom-insn", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", "openvm-ecc-guest", "openvm-ecc-sw-macros", "openvm-pairing-guest", - "openvm-platform", - "openvm-rv32im-guest", + "openvm-platform 1.4.2", + "openvm-rv32im-guest 1.4.2", "rand 0.8.5", "serde", ] [[package]] name = "openvm-pairing-circuit" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "cfg-if", "derive-new 0.6.0", "derive_more 1.0.0", "eyre", - "halo2curves-axiom", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", "num-bigint 0.4.6", "num-traits", "openvm-algebra-circuit", @@ -5269,10 +6075,11 @@ dependencies = [ [[package]] name = "openvm-pairing-guest" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ - "halo2curves-axiom", + "blstrs", + "halo2curves-axiom 0.7.2 (git+https://github.com/axiom-crypto/halo2curves.git?tag=v0.7.2)", "hex-literal", "itertools 0.14.0", "lazy_static", @@ -5281,7 +6088,7 @@ dependencies = [ "openvm", "openvm-algebra-guest", "openvm-algebra-moduli-macros", - "openvm-custom-insn", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", "openvm-ecc-guest", "rand 0.8.5", "serde", @@ -5290,8 +6097,8 @@ dependencies = [ [[package]] name = "openvm-pairing-transpiler" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-instructions", "openvm-pairing-guest", @@ -5305,16 +6112,25 @@ dependencies = [ name = "openvm-platform" version = "1.4.1" source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +dependencies = [ + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "openvm-rv32im-guest 1.4.1", +] + +[[package]] +name = "openvm-platform" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "libm", - "openvm-custom-insn", - "openvm-rv32im-guest", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", + "openvm-rv32im-guest 1.4.2", ] [[package]] name = "openvm-poseidon2-air" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "derivative", "lazy_static", @@ -5331,8 +6147,8 @@ dependencies = [ [[package]] name = "openvm-rv32-adapters" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "derive-new 0.6.0", "itertools 0.14.0", @@ -5348,8 +6164,8 @@ dependencies = [ [[package]] name = "openvm-rv32im-circuit" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -5378,19 +6194,29 @@ name = "openvm-rv32im-guest" version = "1.4.1" source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" dependencies = [ - "openvm-custom-insn", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "p3-field", + "strum_macros 0.26.4", +] + +[[package]] +name = "openvm-rv32im-guest" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" +dependencies = [ + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", "p3-field", "strum_macros 0.26.4", ] [[package]] name = "openvm-rv32im-transpiler" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-instructions", "openvm-instructions-derive", - "openvm-rv32im-guest", + "openvm-rv32im-guest 1.4.2", "openvm-stark-backend", "openvm-transpiler", "rrs-lib", @@ -5401,8 +6227,8 @@ dependencies = [ [[package]] name = "openvm-sdk" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "bitcode", "bon", @@ -5421,7 +6247,7 @@ dependencies = [ "openvm-algebra-transpiler", "openvm-bigint-circuit", "openvm-bigint-transpiler", - "openvm-build", + "openvm-build 1.4.2", "openvm-circuit", "openvm-continuations", "openvm-cuda-backend", @@ -5458,8 +6284,8 @@ dependencies = [ [[package]] name = "openvm-sha2" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-sha256-guest", "sha2 0.10.9", @@ -5467,8 +6293,8 @@ dependencies = [ [[package]] name = "openvm-sha256-air" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-circuit-primitives", "openvm-stark-backend", @@ -5478,8 +6304,8 @@ dependencies = [ [[package]] name = "openvm-sha256-circuit" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "cfg-if", "derive-new 0.6.0", @@ -5504,16 +6330,16 @@ dependencies = [ [[package]] name = "openvm-sha256-guest" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ - "openvm-platform", + "openvm-platform 1.4.2", ] [[package]] name = "openvm-sha256-transpiler" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "openvm-instructions", "openvm-instructions-derive", @@ -5526,8 +6352,8 @@ dependencies = [ [[package]] name = "openvm-stark-backend" -version = "1.2.1" -source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.1#dde6cdaf105cc57d1609fd49568c7bce0a066cc2" +version = "1.2.2" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.2#972f5dbecb6ab3ff7e3e978e9087235ad17c1de9" dependencies = [ "bitcode", "cfg-if", @@ -5554,8 +6380,8 @@ dependencies = [ [[package]] name = "openvm-stark-sdk" -version = "1.2.1" -source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.1#dde6cdaf105cc57d1609fd49568c7bce0a066cc2" +version = "1.2.2" +source = "git+https://github.com/openvm-org/stark-backend.git?tag=v1.2.2#972f5dbecb6ab3ff7e3e978e9087235ad17c1de9" dependencies = [ "dashmap", "derivative", @@ -5585,19 +6411,19 @@ dependencies = [ "toml", "tracing", "tracing-forest", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", "zkhash", ] [[package]] name = "openvm-transpiler" -version = "1.4.1" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +version = "1.4.2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "elf", "eyre", "openvm-instructions", - "openvm-platform", + "openvm-platform 1.4.2", "openvm-stark-backend", "rrs-lib", "rustc-demangle", @@ -5649,7 +6475,7 @@ dependencies = [ [[package]] name = "p256" version = "0.13.2" -source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.1#05cb6a11bbd7ac3ac8a00c3fc56391b06f54baa2" +source = "git+https://github.com/openvm-org/openvm.git?tag=v1.4.2#e30b1148a23a34b6ec5db97ef88eecfaf41fc9d7" dependencies = [ "ecdsa", "elliptic-curve", @@ -6048,7 +6874,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -6118,14 +6944,24 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.3" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" +checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" dependencies = [ "memchr", "ucd-trie", ] +[[package]] +name = "petgraph" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +dependencies = [ + "fixedbitset", + "indexmap 2.12.1", +] + [[package]] name = "phf" version = "0.11.3" @@ -6178,7 +7014,7 @@ dependencies = [ "phf_shared 0.11.3", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -6191,7 +7027,7 @@ dependencies = [ "phf_shared 0.13.1", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -6229,7 +7065,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -6332,7 +7168,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -6361,7 +7197,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.23.7", + "toml_edit 0.23.9", ] [[package]] @@ -6383,7 +7219,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -6392,26 +7228,117 @@ version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ - "unicode-ident", + "unicode-ident", +] + +[[package]] +name = "proptest" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" +dependencies = [ + "bit-set", + "bit-vec", + "bitflags", + "num-traits", + "rand 0.9.2", + "rand_chacha 0.9.0", + "rand_xorshift 0.4.0", + "regex-syntax", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "prost" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes", + "prost-derive", +] + +[[package]] +name = "prost-build" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" +dependencies = [ + "heck 0.5.0", + "itertools 0.14.0", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost", + "prost-types", + "regex", + "syn 2.0.111", + "tempfile", +] + +[[package]] +name = "prost-derive" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "prost-reflect" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37587d5a8a1b3dc9863403d084fc2254b91ab75a702207098837950767e2260b" +dependencies = [ + "logos", + "miette", + "prost", + "prost-types", +] + +[[package]] +name = "prost-types" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +dependencies = [ + "prost", +] + +[[package]] +name = "protox" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "424c2bd294b69c49b949f3619362bc3c5d28298cd1163b6d1a62df37c16461aa" +dependencies = [ + "bytes", + "miette", + "prost", + "prost-reflect", + "prost-types", + "protox-parse", + "thiserror 2.0.17", ] [[package]] -name = "proptest" -version = "1.9.0" +name = "protox-parse" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" +checksum = "57927f9dbeeffcce7192404deee6157a640cbb3fe8ac11eabbe571565949ab75" dependencies = [ - "bit-set", - "bit-vec", - "bitflags", - "num-traits", - "rand 0.9.2", - "rand_chacha 0.9.0", - "rand_xorshift 0.4.0", - "regex-syntax", - "rusty-fork", - "tempfile", - "unarray", + "logos", + "miette", + "prost-types", + "thiserror 2.0.17", ] [[package]] @@ -6441,7 +7368,7 @@ checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -6465,6 +7392,15 @@ version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +[[package]] +name = "quick-protobuf" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6da84cc204722a989e01ba2f6e1e276e190f22263d0cb6ce8526fcdb0d2e1f" +dependencies = [ + "byteorder", +] + [[package]] name = "quote" version = "1.0.42" @@ -6651,7 +7587,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -6692,13 +7628,22 @@ dependencies = [ "bytecheck", ] +[[package]] +name = "repr_offset" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb1070755bd29dffc19d0971cab794e607839ba2ef4b69a9e6fbc8733c1b72ea" +dependencies = [ + "tstr", +] + [[package]] name = "reqwest" -version = "0.12.24" +version = "0.12.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" +checksum = "b6eff9328d40131d43bd911d42d79eb6a47312002a4daefc9e37f17e74a7701a" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "encoding_rs", "futures-channel", @@ -6742,13 +7687,13 @@ source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186d dependencies = [ "alloy-chains", "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-evm", "alloy-genesis", "alloy-primitives", "alloy-trie 0.9.1", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.0", "reth-ethereum-forks", "reth-network-peers", "reth-primitives-traits", @@ -6761,15 +7706,33 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-genesis", "alloy-primitives", "alloy-trie 0.9.1", "bytes", "modular-bitfield", "op-alloy-consensus 0.20.0", - "reth-codecs-derive", - "reth-zstd-compressors", + "reth-codecs-derive 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", + "reth-zstd-compressors 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", + "serde", +] + +[[package]] +name = "reth-codecs" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.3#f636225ec0c8d968374768796540e8bf9adb3615" +dependencies = [ + "alloy-consensus", + "alloy-eips 1.1.3", + "alloy-genesis", + "alloy-primitives", + "alloy-trie 0.9.1", + "bytes", + "modular-bitfield", + "op-alloy-consensus 0.20.0", + "reth-codecs-derive 1.8.2 (git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.3)", + "reth-zstd-compressors 1.8.2 (git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.3)", "serde", ] @@ -6780,7 +7743,17 @@ source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186d dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", +] + +[[package]] +name = "reth-codecs-derive" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.3#f636225ec0c8d968374768796540e8bf9adb3615" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] @@ -6802,7 +7775,7 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "reth-chainspec", "reth-consensus", "reth-primitives-traits", @@ -6813,7 +7786,7 @@ name = "reth-db-models" version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "reth-primitives-traits", ] @@ -6835,7 +7808,7 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "reth-chainspec", "reth-consensus", @@ -6863,12 +7836,12 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rlp", "alloy-rpc-types-eth", - "alloy-serde 1.1.1", - "reth-codecs", + "alloy-serde 1.1.3", + "reth-codecs 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", "reth-primitives-traits", "serde", "serde_with", @@ -6880,11 +7853,11 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-evm", "alloy-primitives", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.0", "futures-util", "reth-execution-errors", "reth-execution-types", @@ -6902,7 +7875,7 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-evm", "alloy-primitives", "alloy-rpc-types-engine", @@ -6935,10 +7908,10 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-evm", "alloy-primitives", - "derive_more 2.0.1", + "derive_more 2.1.0", "reth-ethereum-primitives", "reth-primitives-traits", "reth-trie-common", @@ -6976,7 +7949,7 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-genesis", "alloy-primitives", "alloy-rlp", @@ -6984,14 +7957,14 @@ dependencies = [ "alloy-trie 0.9.1", "auto_impl", "bytes", - "derive_more 2.0.1", + "derive_more 2.1.0", "once_cell", "op-alloy-consensus 0.20.0", - "reth-codecs", + "reth-codecs 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", "revm-bytecode 7.0.1", "revm-primitives 21.0.1", "revm-state 8.0.1", - "scroll-alloy-consensus", + "scroll-alloy-consensus 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", "secp256k1 0.30.0", "serde", "serde_with", @@ -7004,7 +7977,7 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-primitives", - "derive_more 2.0.1", + "derive_more 2.1.0", "thiserror 2.0.17", ] @@ -7027,12 +8000,12 @@ source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186d dependencies = [ "alloy-chains", "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-genesis", "alloy-primitives", - "alloy-serde 1.1.1", + "alloy-serde 1.1.3", "auto_impl", - "derive_more 2.0.1", + "derive_more 2.1.0", "once_cell", "reth-chainspec", "reth-ethereum-forks", @@ -7051,11 +8024,11 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-evm", "alloy-primitives", "alloy-rpc-types-engine", - "derive_more 2.0.1", + "derive_more 2.1.0", "reth-chainspec", "reth-evm", "reth-execution-types", @@ -7068,7 +8041,7 @@ dependencies = [ "revm 30.1.1", "revm-primitives 21.0.1", "revm-scroll", - "scroll-alloy-consensus", + "scroll-alloy-consensus 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", "scroll-alloy-evm", "scroll-alloy-hardforks", "thiserror 2.0.17", @@ -7095,14 +8068,14 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rlp", "bytes", "once_cell", - "reth-codecs", + "reth-codecs 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", "reth-primitives-traits", - "scroll-alloy-consensus", + "scroll-alloy-consensus 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", "serde", ] @@ -7147,7 +8120,7 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-primitives", - "derive_more 2.0.1", + "derive_more 2.1.0", "serde", "strum 0.27.2", ] @@ -7158,7 +8131,7 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rpc-types-engine", "auto_impl", @@ -7179,10 +8152,10 @@ name = "reth-storage-errors" version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rlp", - "derive_more 2.0.1", + "derive_more 2.1.0", "reth-primitives-traits", "reth-prune-types", "reth-static-file-types", @@ -7196,7 +8169,7 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rlp", "alloy-trie 0.9.1", @@ -7221,7 +8194,7 @@ dependencies = [ "alloy-primitives", "alloy-rlp", "alloy-trie 0.9.1", - "derive_more 2.0.1", + "derive_more 2.1.0", "itertools 0.14.0", "nybbles 0.4.6", "reth-primitives-traits", @@ -7252,6 +8225,14 @@ dependencies = [ "zstd", ] +[[package]] +name = "reth-zstd-compressors" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.3#f636225ec0c8d968374768796540e8bf9adb3615" +dependencies = [ + "zstd", +] + [[package]] name = "revm" version = "22.0.1" @@ -7323,7 +8304,7 @@ dependencies = [ "revm-inspector 11.2.0", "revm-interpreter 28.0.0", "revm-precompile 28.1.1", - "revm-primitives 21.0.2", + "revm-primitives 21.0.1", "revm-state 8.1.1", ] @@ -7435,7 +8416,7 @@ dependencies = [ "revm-bytecode 7.1.1", "revm-context-interface 11.1.2", "revm-database-interface 8.0.5", - "revm-primitives 21.0.2", + "revm-primitives 21.0.1", "revm-state 8.1.1", "serde", ] @@ -7497,7 +8478,7 @@ dependencies = [ "auto_impl", "either", "revm-database-interface 8.0.5", - "revm-primitives 21.0.2", + "revm-primitives 21.0.1", "revm-state 8.1.1", "serde", ] @@ -7522,7 +8503,7 @@ version = "7.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39a276ed142b4718dcf64bc9624f474373ed82ef20611025045c3fb23edbef9c" dependencies = [ - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "revm-bytecode 6.2.2", "revm-database-interface 7.0.5", "revm-primitives 20.2.1", @@ -7535,7 +8516,7 @@ name = "revm-database" version = "9.0.1" source = "git+https://github.com/scroll-tech/revm?tag=scroll-v91#10e11b985ed28bd383e624539868bcc3f613d77c" dependencies = [ - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "revm-bytecode 7.0.1", "revm-database-interface 8.0.2", "revm-primitives 21.0.1", @@ -7549,7 +8530,7 @@ version = "9.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "980d8d6bba78c5dd35b83abbb6585b0b902eb25ea4448ed7bfba6283b0337191" dependencies = [ - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "revm-bytecode 7.1.1", "revm-database-interface 8.0.5", "revm-primitives 21.0.2", @@ -7676,7 +8657,7 @@ dependencies = [ "revm-database-interface 8.0.5", "revm-interpreter 28.0.0", "revm-precompile 28.1.1", - "revm-primitives 21.0.2", + "revm-primitives 21.0.1", "revm-state 8.1.1", "serde", ] @@ -7745,7 +8726,7 @@ dependencies = [ "revm-database-interface 8.0.5", "revm-handler 11.2.0", "revm-interpreter 28.0.0", - "revm-primitives 21.0.2", + "revm-primitives 21.0.1", "revm-state 8.1.1", "serde", "serde_json", @@ -7795,7 +8776,7 @@ checksum = "f1de5c790122f8ded67992312af8acd41ccfcee629b25b819e10c5b1f69caf57" dependencies = [ "revm-bytecode 7.1.1", "revm-context-interface 11.1.2", - "revm-primitives 21.0.2", + "revm-primitives 21.0.1", "revm-state 8.1.1", "serde", ] @@ -8017,7 +8998,7 @@ dependencies = [ [[package]] name = "risc0-ethereum-trie" version = "0.1.0" -source = "git+https://github.com/risc0/risc0-ethereum#c1ddb41a44dc0730da883bbfa9fbe75ad335df1b" +source = "git+https://github.com/risc0/risc0-ethereum#e475fe6c8dcff92fb5e67d6556cb11ba3ab4e494" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -8038,7 +9019,7 @@ dependencies = [ "bytecheck", "bytes", "hashbrown 0.15.5", - "indexmap 2.12.0", + "indexmap 2.12.1", "munge", "ptr_meta", "rancor", @@ -8056,7 +9037,7 @@ checksum = "bd83f5f173ff41e00337d97f6572e416d022ef8a19f371817259ae960324c482" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -8126,6 +9107,17 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" +[[package]] +name = "rust_decimal" +version = "1.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35affe401787a9bd846712274d97654355d21b2a2c092a3139aabe31e9022282" +dependencies = [ + "arrayvec", + "num-traits", + "serde", +] + [[package]] name = "rustc-demangle" version = "0.1.26" @@ -8196,9 +9188,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" +checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" dependencies = [ "zeroize", ] @@ -8232,6 +9224,15 @@ dependencies = [ "wait-timeout", ] +[[package]] +name = "ruzstd" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ff0cc5e135c8870a775d3320910cd9b564ec036b4dc0b8741629020be63f01" +dependencies = [ + "twox-hash", +] + [[package]] name = "ryu" version = "1.0.20" @@ -8278,13 +9279,13 @@ version = "2.0.0" source = "git+https://github.com/scroll-tech/stateless-block-verifier?tag=scroll-v91.2#3a32848c9438432125751eae8837757f6b87562e" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-evm", "alloy-network", "alloy-primitives", "alloy-rpc-types-debug", "alloy-rpc-types-eth", - "alloy-serde 1.1.1", + "alloy-serde 1.1.3", "reth-chainspec", "reth-ethereum-forks", "reth-evm", @@ -8300,7 +9301,7 @@ dependencies = [ "revm-scroll", "rkyv", "sbv-helpers", - "scroll-alloy-consensus", + "scroll-alloy-consensus 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", "scroll-alloy-evm", "scroll-alloy-network", "scroll-alloy-rpc-types", @@ -8380,12 +9381,28 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 1.1.3", + "derive_more 2.1.0", + "reth-codecs 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", + "serde", + "serde_with", +] + +[[package]] +name = "scroll-alloy-consensus" +version = "1.8.2" +source = "git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.3#f636225ec0c8d968374768796540e8bf9adb3615" +dependencies = [ + "alloy-consensus", + "alloy-eips 1.1.3", "alloy-primitives", "alloy-rlp", - "alloy-serde 1.1.1", - "derive_more 2.0.1", - "reth-codecs", + "alloy-serde 1.1.3", + "derive_more 2.1.0", + "reth-codecs 1.8.2 (git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.3)", "serde", "serde_with", ] @@ -8396,14 +9413,14 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-evm", "alloy-primitives", "auto_impl", "encoder-standard", "revm 30.1.1", "revm-scroll", - "scroll-alloy-consensus", + "scroll-alloy-consensus 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", "scroll-alloy-hardforks", "serde", ] @@ -8429,7 +9446,7 @@ dependencies = [ "alloy-provider", "alloy-rpc-types-eth", "alloy-signer", - "scroll-alloy-consensus", + "scroll-alloy-consensus 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", "scroll-alloy-rpc-types", ] @@ -8439,17 +9456,47 @@ version = "1.8.2" source = "git+https://github.com/scroll-tech/reth?tag=scroll-v91.2#11d0a3f73186dee7a1ba0d51ea5416dc8fef3e46" dependencies = [ "alloy-consensus", - "alloy-eips 1.1.1", + "alloy-eips 1.1.3", "alloy-network-primitives", "alloy-primitives", "alloy-rpc-types-eth", - "alloy-serde 1.1.1", - "derive_more 2.0.1", - "scroll-alloy-consensus", + "alloy-serde 1.1.3", + "derive_more 2.1.0", + "scroll-alloy-consensus 1.8.2 (git+https://github.com/scroll-tech/reth?tag=scroll-v91.2)", "serde", "serde_json", ] +[[package]] +name = "scroll-codec" +version = "0.1.0" +source = "git+https://github.com/scroll-tech/rollup-node?rev=c955480#c9554802273f535042cca5dbe44f0ceda65d33a8" +dependencies = [ + "alloy-eips 1.1.3", + "alloy-primitives", + "alloy-rlp", + "alloy-sol-types", + "bitvec", + "derive_more 2.1.0", + "ruzstd", + "scroll-alloy-consensus 1.8.2 (git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.3)", + "scroll-l1", + "thiserror 2.0.17", +] + +[[package]] +name = "scroll-l1" +version = "1.0.3" +source = "git+https://github.com/scroll-tech/rollup-node?rev=c955480#c9554802273f535042cca5dbe44f0ceda65d33a8" +dependencies = [ + "alloy-primitives", + "alloy-sol-types", + "bitvec", + "derive_more 2.1.0", + "scroll-alloy-consensus 1.8.2 (git+https://github.com/scroll-tech/reth.git?tag=scroll-v91.3)", + "thiserror 2.0.17", +] + [[package]] name = "scroll-zkvm-batch-circuit" version = "0.7.1" @@ -8475,7 +9522,7 @@ dependencies = [ "dotenvy", "eyre", "hex", - "openvm-build", + "openvm-build 1.4.2", "openvm-instructions", "openvm-native-compiler", "openvm-native-recursion", @@ -8505,7 +9552,7 @@ version = "0.7.1" dependencies = [ "bincode 2.0.1", "ecies", - "k256 0.13.4 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "k256 0.13.4 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", "openvm", "openvm-algebra-complex-macros", "openvm-algebra-guest", @@ -8514,9 +9561,9 @@ dependencies = [ "openvm-keccak256-guest", "openvm-pairing", "openvm-pairing-guest", - "openvm-rv32im-guest", + "openvm-rv32im-guest 1.4.2", "openvm-sha2", - "p256 0.13.2 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "p256 0.13.2 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", "scroll-zkvm-types-chunk", "scroll-zkvm-types-circuit", ] @@ -8530,7 +9577,7 @@ dependencies = [ "alloy-rpc-client", "alloy-transport", "axiom-sdk", - "base64", + "base64 0.22.1", "bincode 2.0.1", "bytesize", "cargo_metadata 0.23.1", @@ -8564,7 +9611,7 @@ dependencies = [ "sysinfo", "tokio", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", "url", "vm-zstd", ] @@ -8573,7 +9620,7 @@ dependencies = [ name = "scroll-zkvm-prover" version = "0.7.1" dependencies = [ - "base64", + "base64 0.22.1", "bincode 1.3.3", "cudarc", "eyre", @@ -8600,7 +9647,7 @@ name = "scroll-zkvm-types" version = "0.7.1" dependencies = [ "alloy-primitives", - "base64", + "base64 0.22.1", "bincode 1.3.3", "eyre", "hex", @@ -8623,7 +9670,7 @@ name = "scroll-zkvm-types-base" version = "0.7.1" dependencies = [ "alloy-primitives", - "alloy-serde 1.1.1", + "alloy-serde 1.1.3", "rkyv", "serde", "sha2 0.10.9", @@ -8635,8 +9682,11 @@ name = "scroll-zkvm-types-batch" version = "0.7.1" dependencies = [ "alloy-primitives", + "bridge_adapters_zk", + "bridge_core", + "bridge_steps_da", "c-kzg", - "halo2curves-axiom", + "halo2curves-axiom 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.14.0", "openvm", "openvm-algebra-guest", @@ -8657,6 +9707,7 @@ version = "0.7.1" dependencies = [ "rkyv", "scroll-zkvm-types-base", + "scroll-zkvm-types-batch", "serde", ] @@ -8667,13 +9718,17 @@ dependencies = [ "alloy-consensus", "alloy-primitives", "alloy-sol-types", + "bridge_adapters_zk", + "bridge_core", + "bridge_steps_deposit", + "bridge_transforms", "ecies", "itertools 0.14.0", - "k256 0.13.4 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "k256 0.13.4 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", "openvm-ecc-guest", "openvm-pairing", "openvm-sha2", - "p256 0.13.2 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.1)", + "p256 0.13.2 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", "rkyv", "sbv-core", "sbv-helpers", @@ -8692,8 +9747,8 @@ dependencies = [ "alloy-primitives", "itertools 0.14.0", "openvm", - "openvm-custom-insn", - "openvm-rv32im-guest", + "openvm-custom-insn 0.1.0 (git+https://github.com/openvm-org/openvm.git?tag=v1.4.2)", + "openvm-rv32im-guest 1.4.2", "scroll-zkvm-types-base", ] @@ -8749,13 +9804,25 @@ dependencies = [ "zeroize", ] +[[package]] +name = "secp256k1" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +dependencies = [ + "bitcoin_hashes 0.12.0", + "rand 0.8.5", + "secp256k1-sys 0.8.2", + "serde", +] + [[package]] name = "secp256k1" version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b50c5943d326858130af85e049f2661ba3c78b26589b8ab98e65e80ae44a1252" dependencies = [ - "bitcoin_hashes", + "bitcoin_hashes 0.14.1", "rand 0.8.5", "secp256k1-sys 0.10.1", "serde", @@ -8767,11 +9834,20 @@ version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c3c81b43dc2d8877c216a3fccf76677ee1ebccd429566d3e67447290d0c42b2" dependencies = [ - "bitcoin_hashes", + "bitcoin_hashes 0.14.1", "rand 0.9.2", "secp256k1-sys 0.11.0", ] +[[package]] +name = "secp256k1-sys" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4473013577ec77b4ee3668179ef1186df3146e2cf2d927bd200974c6fe60fd99" +dependencies = [ + "cc", +] + [[package]] name = "secp256k1-sys" version = "0.10.1" @@ -8891,6 +9967,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -8908,7 +9994,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -8917,7 +10003,7 @@ version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.12.1", "itoa", "memchr", "ryu", @@ -8925,6 +10011,17 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "serde_spanned" version = "0.6.9" @@ -8959,15 +10056,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.16.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10574371d41b0d9b2cff89418eda27da52bcaff2cc8741db26382a77c29131f1" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" dependencies = [ - "base64", + "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.12.0", + "indexmap 2.12.1", "schemars 0.9.0", "schemars 1.1.0", "serde_core", @@ -8978,14 +10075,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.16.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a72d8216842fdd57820dc78d840bef99248e35fb2554ff923319e60f2d686b" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -9093,9 +10190,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.6" +version = "1.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" dependencies = [ "libc", ] @@ -9112,9 +10209,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "simdutf8" @@ -9307,7 +10404,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -9320,7 +10417,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -9332,7 +10429,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -9341,6 +10438,21 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "subtle-encoding" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" +dependencies = [ + "zeroize", +] + +[[package]] +name = "subtle-ng" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "734676eb262c623cec13c3155096e08d1f8f29adce39ba17948b18dad1e54142" + [[package]] name = "syn" version = "1.0.109" @@ -9354,9 +10466,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.110" +version = "2.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea" +checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" dependencies = [ "proc-macro2", "quote", @@ -9372,7 +10484,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -9392,7 +10504,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -9459,6 +10571,51 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "tendermint" +version = "0.40.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc997743ecfd4864bbca8170d68d9b2bee24653b034210752c2d883ef4b838b1" +dependencies = [ + "bytes", + "digest 0.10.7", + "ed25519", + "ed25519-consensus", + "flex-error", + "futures", + "k256 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits", + "once_cell", + "prost", + "ripemd", + "serde", + "serde_bytes", + "serde_json", + "serde_repr", + "sha2 0.10.9", + "signature", + "subtle", + "subtle-encoding", + "tendermint-proto", + "time", + "zeroize", +] + +[[package]] +name = "tendermint-proto" +version = "0.40.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c40e13d39ca19082d8a7ed22de7595979350319833698f8b1080f29620a094" +dependencies = [ + "bytes", + "flex-error", + "prost", + "serde", + "serde_bytes", + "subtle-encoding", + "time", +] + [[package]] name = "test-case" version = "3.3.1" @@ -9477,7 +10634,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -9488,7 +10645,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "test-case-core", ] @@ -9518,7 +10675,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -9529,7 +10686,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -9660,7 +10817,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -9744,7 +10901,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.12.1", "serde", "serde_spanned", "toml_datetime 0.6.11", @@ -9754,11 +10911,11 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.7" +version = "0.23.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +checksum = "5d7cbc3b4b49633d57a0509303158ca50de80ae32c265093b24c414705807832" dependencies = [ - "indexmap 2.12.0", + "indexmap 2.12.1", "toml_datetime 0.7.3", "toml_parser", "toml_writer", @@ -9786,6 +10943,41 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" +[[package]] +name = "tonic" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" +dependencies = [ + "async-trait", + "base64 0.22.1", + "bytes", + "http", + "http-body", + "http-body-util", + "percent-encoding", + "pin-project", + "prost", + "tokio-stream", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-build" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac6f67be712d12f0b41328db3137e0d0757645d8904b4cb7d51cd9c2279e847" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build", + "prost-types", + "quote", + "syn 2.0.111", +] + [[package]] name = "tower" version = "0.5.2" @@ -9803,9 +10995,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "bitflags", "bytes", @@ -9833,9 +11025,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -9844,20 +11036,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" dependencies = [ "once_cell", "valuable", @@ -9870,7 +11062,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" dependencies = [ "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] @@ -9883,7 +11075,7 @@ dependencies = [ "smallvec", "thiserror 1.0.69", "tracing", - "tracing-subscriber 0.3.20", + "tracing-subscriber 0.3.22", ] [[package]] @@ -9908,9 +11100,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "matchers", "nu-ansi-term", @@ -9940,6 +11132,33 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tstr" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f8e0294f14baae476d0dd0a2d780b2e24d66e349a9de876f5126777a37bdba7" +dependencies = [ + "tstr_proc_macros", +] + +[[package]] +name = "tstr_proc_macros" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78122066b0cb818b8afd08f7ed22f7fdbc3e90815035726f0840d0d26c0747a" + +[[package]] +name = "twox-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" + +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + [[package]] name = "typeid" version = "1.0.3" @@ -9952,6 +11171,12 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" +[[package]] +name = "typewit" +version = "1.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c1ae7cc0fdb8b842d65d127cb981574b0d2b249b74d1c7a2986863dc134f71" + [[package]] name = "ucd-trie" version = "0.1.7" @@ -9994,6 +11219,12 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +[[package]] +name = "unicode-width" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + [[package]] name = "unicode-width" version = "0.2.2" @@ -10026,6 +11257,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "unsigned-varint" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb066959b24b5196ae73cb057f45598450d2c5f71460e98c49b738086eff9c06" + [[package]] name = "untrusted" version = "0.9.0" @@ -10064,9 +11301,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.18.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" dependencies = [ "js-sys", "wasm-bindgen", @@ -10155,9 +11392,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ "cfg-if", "once_cell", @@ -10168,9 +11405,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.55" +version = "0.4.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" dependencies = [ "cfg-if", "js-sys", @@ -10181,9 +11418,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -10191,22 +11428,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" dependencies = [ "unicode-ident", ] @@ -10227,9 +11464,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.82" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ "js-sys", "wasm-bindgen", @@ -10283,7 +11520,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", - "windows-core", + "windows-core 0.61.2", "windows-future", "windows-link 0.1.3", "windows-numerics", @@ -10295,7 +11532,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core", + "windows-core 0.61.2", ] [[package]] @@ -10311,13 +11548,26 @@ dependencies = [ "windows-strings 0.4.2", ] +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + [[package]] name = "windows-future" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core", + "windows-core 0.61.2", "windows-link 0.1.3", "windows-threading", ] @@ -10330,7 +11580,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -10341,7 +11591,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -10362,7 +11612,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core", + "windows-core 0.61.2", "windows-link 0.1.3", ] @@ -10589,9 +11839,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ "memchr", ] @@ -10636,28 +11886,28 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.27" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" +checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.27" +version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" +checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -10677,7 +11927,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", "synstructure", ] @@ -10698,7 +11948,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] @@ -10731,7 +11981,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.110", + "syn 2.0.111", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index db809601..87caeccb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,10 @@ members = [ "crates/integration", "crates/build-guest", "crates/tools/upload-axiom", + "crates/dogeos/circuits/chunk-circuit", + "crates/dogeos/circuits/batch-circuit", + "crates/dogeos/circuits/bundle-circuit", + "crates/dogeos/integration", ] resolver = "2" @@ -27,48 +31,48 @@ version = "0.7.1" [workspace.dependencies] # openvm guest libs -openvm = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1" } -openvm-algebra-complex-macros = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-custom-insn = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-sha2 = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1" } -openvm-sha256-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-p256 = { git = "https://github.com/openvm-org/openvm.git", package = "p256", tag = "v1.4.1", features = [ +openvm = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2" } +openvm-algebra-complex-macros = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-custom-insn = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-sha2 = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2" } +openvm-sha256-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-p256 = { git = "https://github.com/openvm-org/openvm.git", package = "p256", tag = "v1.4.2", features = [ "std", ] } -openvm-k256 = { git = "https://github.com/openvm-org/openvm.git", package = "k256", tag = "v1.4.1", features = [ +openvm-k256 = { git = "https://github.com/openvm-org/openvm.git", package = "k256", tag = "v1.4.2", features = [ "std", ] } -openvm-pairing = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1" } -openvm-keccak256-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-bigint-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-pairing-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-rv32im-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } +openvm-pairing = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2" } +openvm-keccak256-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-algebra-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-ecc-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-bigint-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-pairing-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-rv32im-guest = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } # openvm host libs -openvm-benchmarks-prove = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-benchmarks-utils = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-build = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-circuit = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-continuations = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-instructions = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-native-circuit = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-native-compiler = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-native-recursion = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-native-transpiler = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-rv32im-transpiler = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } -openvm-sdk = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false, features = [ +openvm-benchmarks-prove = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-benchmarks-utils = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-build = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-circuit = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-continuations = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-instructions = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-native-circuit = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-native-compiler = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-native-recursion = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-native-transpiler = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-rv32im-transpiler = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } +openvm-sdk = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false, features = [ "parallel", "evm-prove", "legacy-v1-3-evm-verifier", "tco", "unprotected" ] } -openvm-transpiler = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.1", default-features = false } +openvm-transpiler = { git = "https://github.com/openvm-org/openvm.git", tag = "v1.4.2", default-features = false } # more openvm related libs -openvm-stark-sdk = { git = "https://github.com/openvm-org/stark-backend.git", tag = "v1.2.1" } +openvm-stark-sdk = { git = "https://github.com/openvm-org/stark-backend.git", tag = "v1.2.2" } sbv-core = { git = "https://github.com/scroll-tech/stateless-block-verifier", tag = "scroll-v91.2" } sbv-helpers = { git = "https://github.com/scroll-tech/stateless-block-verifier", tag = "scroll-v91.2", features = ["dev"] } @@ -143,10 +147,18 @@ scroll-zkvm-types-circuit = { path = "crates/types/circuit" } scroll-zkvm-types-chunk = { path = "crates/types/chunk" } scroll-zkvm-types-batch = { path = "crates/types/batch" } scroll-zkvm-types-bundle = { path = "crates/types/bundle" } -scroll-zkvm-integration = { path = "crates/integration" } +scroll-zkvm-integration = { path = "crates/integration", default-features = false } scroll-zkvm-prover = { path = "crates/prover" } scroll-zkvm-verifier = { path = "crates/verifier" } +# dogeos crates +bridge_core = { git = "ssh://git@github.com/DogeOS69/dogeos-core.git", branch = "scroll/openvm/upgrade", default-features = false } +bridge_protocol = { git = "ssh://git@github.com/DogeOS69/dogeos-core.git", branch = "scroll/openvm/upgrade", default-features = false } +bridge_adapters_zk = { git = "ssh://git@github.com/DogeOS69/dogeos-core.git", branch = "scroll/openvm/upgrade", default-features = false } +bridge_steps_da = { git = "ssh://git@github.com/DogeOS69/dogeos-core.git", branch = "scroll/openvm/upgrade", default-features = false } +bridge_steps_deposit = { git = "ssh://git@github.com/DogeOS69/dogeos-core.git", branch = "scroll/openvm/upgrade", default-features = false } +bridge_transforms = { git = "ssh://git@github.com/DogeOS69/dogeos-core.git", branch = "scroll/openvm/upgrade", default-features = false } + [patch.crates-io] revm = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } revm-bytecode = { git = "https://github.com/scroll-tech/revm", tag = "scroll-v91" } diff --git a/Makefile b/Makefile index 016ef9f8..280688df 100644 --- a/Makefile +++ b/Makefile @@ -64,7 +64,7 @@ export-onchain-verifier: @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test onchain_verifier export_onchain_verifier -- --exact --nocapture test-execute-chunk: - @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test chunk_circuit test_execute -- --exact --nocapture + @cargo test $(CARGO_CONFIG_FLAG) --release -p dogeos-zkvm-integration --test chunk_circuit test_execute -- --exact --nocapture test-execute-chunk-multi: @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test chunk_circuit test_execute_multi -- --exact --nocapture @@ -76,7 +76,7 @@ test-cycle: @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test chunk_circuit test_cycle -- --exact --nocapture test-execute-batch: - @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test batch_circuit test_e2e_execute -- --exact --nocapture + @cargo test $(CARGO_CONFIG_FLAG) --release -p dogeos-zkvm-integration --test batch_circuit test_e2e_execute -- --exact --nocapture test-execute-batch-fast: @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test batch_circuit test_execute -- --exact --nocapture @@ -88,7 +88,7 @@ test-execute-validium-e2e: @cargo test --release -p scroll-zkvm-integration --test bundle_circuit test_execute_validium -- --exact --nocapture test-single-chunk: - @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test chunk_circuit setup_prove_verify_single -- --exact --nocapture + @cargo test $(CARGO_CONFIG_FLAG) --release -p dogeos-zkvm-integration --test chunk_circuit setup_prove_verify_single -- --exact --nocapture test-axiom-single-chunk: @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test chunk_circuit setup_axiom_prove_verify_single -- --exact --nocapture @@ -100,7 +100,7 @@ test-single-batch: @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test batch_circuit setup_prove_verify_single -- --exact --nocapture test-e2e-batch: - @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test batch_circuit e2e -- --exact --nocapture + @cargo test $(CARGO_CONFIG_FLAG) --release -p dogeos-zkvm-integration --test batch_circuit e2e -- --exact --nocapture test-axiom-e2e-batch: @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test batch_circuit axiom_e2e -- --exact --nocapture @@ -112,7 +112,7 @@ test-bundle-local: @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test bundle_circuit setup_prove_verify_local_task -- --exact --nocapture test-e2e-bundle: - @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test bundle_circuit e2e -- --exact --nocapture + @cargo test $(CARGO_CONFIG_FLAG) --release -p dogeos-zkvm-integration --test bundle_circuit e2e -- --exact --nocapture test-axiom-e2e-bundle: @cargo test $(CARGO_CONFIG_FLAG) --release -p scroll-zkvm-integration --test bundle_circuit axiom_e2e -- --exact --nocapture diff --git a/crates/build-guest/src/main.rs b/crates/build-guest/src/main.rs index 964e3409..7b7e2669 100644 --- a/crates/build-guest/src/main.rs +++ b/crates/build-guest/src/main.rs @@ -141,6 +141,7 @@ fn generate_app_assets(workspace_dir: &Path, release_output_dir: &PathBuf) -> Re for project_name in projects_to_build { let project_path = workspace_dir .join("crates") + .join("dogeos") .join("circuits") .join(format!("{project_name}-circuit")); @@ -176,15 +177,7 @@ fn generate_app_assets(workspace_dir: &Path, release_output_dir: &PathBuf) -> Re "{LOG_PREFIX} Changed working directory to: {}", project_path.display() ); - let guest_opts = GuestOptions { - features: if project_name == "chunk" && cfg!(feature = "scroll") { - vec!["scroll".to_string()] - } else { - vec![] - }, - ..Default::default() - }; - let guest_opts = guest_opts.with_profile("maxperf".to_string()); + let guest_opts = GuestOptions::default().with_profile("maxperf".to_string()); let sdk = Sdk::new(app_config)?; let elf = sdk .build(guest_opts, project_dir, &Default::default(), None) @@ -207,7 +200,7 @@ fn generate_app_assets(workspace_dir: &Path, release_output_dir: &PathBuf) -> Re .join("target") .join("riscv32im-risc0-zkvm-elf") .join("maxperf") - .join(format!("scroll-zkvm-{project_name}-circuit")); + .join(format!("dogeos-zkvm-{project_name}-circuit")); let path_app_elf: PathBuf = path_assets.join("app.elf"); fs::copy(&elf_src, &path_app_elf)?; println!("{LOG_PREFIX} elf written to {path_app_elf:?}"); diff --git a/crates/circuits/batch-circuit/src/circuit.rs b/crates/circuits/batch-circuit/src/circuit.rs index 66f65baa..83a24da4 100644 --- a/crates/circuits/batch-circuit/src/circuit.rs +++ b/crates/circuits/batch-circuit/src/circuit.rs @@ -5,8 +5,10 @@ use scroll_zkvm_types_circuit::{ io::read_witnesses, public_inputs::{ Version, - batch::{BatchInfo, VersionedBatchInfo}, - chunk::VersionedChunkInfo, + scroll::{ + batch::{BatchInfo, VersionedBatchInfo}, + chunk::VersionedChunkInfo, + }, }, }; diff --git a/crates/circuits/bundle-circuit/src/circuit.rs b/crates/circuits/bundle-circuit/src/circuit.rs index fb78e641..a7e8b4dc 100644 --- a/crates/circuits/bundle-circuit/src/circuit.rs +++ b/crates/circuits/bundle-circuit/src/circuit.rs @@ -5,8 +5,10 @@ use scroll_zkvm_types_circuit::{ io::read_witnesses, public_inputs::{ Version, - batch::VersionedBatchInfo, - bundle::{BundleInfo, VersionedBundleInfo}, + scroll::{ + batch::VersionedBatchInfo, + bundle::{BundleInfo, VersionedBundleInfo}, + }, }, }; diff --git a/crates/circuits/chunk-circuit/src/circuit.rs b/crates/circuits/chunk-circuit/src/circuit.rs index 75ddc48d..366ad5cb 100644 --- a/crates/circuits/chunk-circuit/src/circuit.rs +++ b/crates/circuits/chunk-circuit/src/circuit.rs @@ -1,11 +1,11 @@ use openvm::init; -use scroll_zkvm_types_chunk::ChunkWitness; +use scroll_zkvm_types_chunk::scroll::ChunkWitness; use scroll_zkvm_types_circuit::{ Circuit, io::read_witnesses, public_inputs::{ Version, - chunk::{ChunkInfo, VersionedChunkInfo}, + scroll::chunk::{ChunkInfo, VersionedChunkInfo}, }, }; diff --git a/crates/dogeos/circuits/batch-circuit/.gitignore b/crates/dogeos/circuits/batch-circuit/.gitignore new file mode 100644 index 00000000..ca2c3285 --- /dev/null +++ b/crates/dogeos/circuits/batch-circuit/.gitignore @@ -0,0 +1 @@ +/openvm \ No newline at end of file diff --git a/crates/dogeos/circuits/batch-circuit/Cargo.toml b/crates/dogeos/circuits/batch-circuit/Cargo.toml new file mode 100644 index 00000000..a7526fd9 --- /dev/null +++ b/crates/dogeos/circuits/batch-circuit/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "dogeos-zkvm-batch-circuit" +edition.workspace = true +readme.workspace = true +repository.workspace = true +version = "0.7.1" + +[dependencies] +scroll-zkvm-types-circuit.workspace = true +scroll-zkvm-types-batch.workspace = true + +openvm = { workspace = true, features = ["std"] } +openvm-algebra-guest.workspace = true +openvm-pairing = { workspace = true, features = ["bls12_381"] } +openvm-keccak256-guest.workspace = true +openvm-sha256-guest.workspace = true +openvm-ecc-guest = { workspace = true, features = ["halo2curves"] } + +alloy-primitives = { workspace = true, features = ["native-keccak"] } +bincode.workspace = true +itertools.workspace = true + +[features] +default = [] + +[dev-dependencies] diff --git a/crates/dogeos/circuits/batch-circuit/batch_exe_commit.rs b/crates/dogeos/circuits/batch-circuit/batch_exe_commit.rs new file mode 100644 index 00000000..c6458baa --- /dev/null +++ b/crates/dogeos/circuits/batch-circuit/batch_exe_commit.rs @@ -0,0 +1,4 @@ +#![cfg_attr(rustfmt, rustfmt_skip)] +//! Generated by crates/build-guest. DO NOT EDIT! + +pub const COMMIT: [u32; 8] = [123293429, 661502243, 1332640210, 533174887, 1591197618, 1101567153, 1899493398, 49094928]; diff --git a/crates/dogeos/circuits/batch-circuit/batch_vm_commit.rs b/crates/dogeos/circuits/batch-circuit/batch_vm_commit.rs new file mode 100644 index 00000000..44734bac --- /dev/null +++ b/crates/dogeos/circuits/batch-circuit/batch_vm_commit.rs @@ -0,0 +1,4 @@ +#![cfg_attr(rustfmt, rustfmt_skip)] +//! Generated by crates/build-guest. DO NOT EDIT! + +pub const COMMIT: [u32; 8] = [1143979762, 1252839784, 728295280, 80130475, 1981604375, 1538642995, 55047256, 1521517292]; diff --git a/crates/dogeos/circuits/batch-circuit/openvm.toml b/crates/dogeos/circuits/batch-circuit/openvm.toml new file mode 100644 index 00000000..3222ad82 --- /dev/null +++ b/crates/dogeos/circuits/batch-circuit/openvm.toml @@ -0,0 +1,35 @@ +[app_fri_params.fri_params] +log_blowup = 1 +log_final_poly_len = 0 +num_queries = 100 +proof_of_work_bits = 16 + +[app_vm_config.rv32i] + +[app_vm_config.rv32m] + +[app_vm_config.io] + +[app_vm_config.keccak] + +[app_vm_config.castf] + +[app_vm_config.modular] +supported_moduli = [ + "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", + "52435875175126190479447740508185965837690552500527637822603658699938581184513", +] +[app_vm_config.native] +[app_vm_config.pairing] +supported_curves = ["Bls12_381"] +[app_vm_config.sha256] +[app_vm_config.fp2] +supported_moduli = [ + ["Bls12_381Fp2","4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787"] +] +[[app_vm_config.ecc.supported_curves]] +struct_name = "Bls12_381G1Affine" +modulus = "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787" +scalar = "52435875175126190479447740508185965837690552500527637822603658699938581184513" +a = "0" +b = "4" diff --git a/crates/dogeos/circuits/batch-circuit/openvm_init.rs b/crates/dogeos/circuits/batch-circuit/openvm_init.rs new file mode 100644 index 00000000..9a303b40 --- /dev/null +++ b/crates/dogeos/circuits/batch-circuit/openvm_init.rs @@ -0,0 +1,4 @@ +// This file is automatically generated by cargo openvm. Do not rename or edit. +openvm_algebra_guest::moduli_macros::moduli_init! { "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787", "52435875175126190479447740508185965837690552500527637822603658699938581184513" } +openvm_algebra_guest::complex_macros::complex_init! { "Bls12_381Fp2" { mod_idx = 0 } } +openvm_ecc_guest::sw_macros::sw_init! { "Bls12_381G1Affine" } diff --git a/crates/dogeos/circuits/batch-circuit/src/child_commitments/chunk_exe_commit.rs b/crates/dogeos/circuits/batch-circuit/src/child_commitments/chunk_exe_commit.rs new file mode 120000 index 00000000..f24a9102 --- /dev/null +++ b/crates/dogeos/circuits/batch-circuit/src/child_commitments/chunk_exe_commit.rs @@ -0,0 +1 @@ +../../../../circuits/chunk-circuit/chunk_exe_commit.rs \ No newline at end of file diff --git a/crates/dogeos/circuits/batch-circuit/src/child_commitments/chunk_vm_commit.rs b/crates/dogeos/circuits/batch-circuit/src/child_commitments/chunk_vm_commit.rs new file mode 120000 index 00000000..3acd48a7 --- /dev/null +++ b/crates/dogeos/circuits/batch-circuit/src/child_commitments/chunk_vm_commit.rs @@ -0,0 +1 @@ +../../../../circuits/chunk-circuit/chunk_vm_commit.rs \ No newline at end of file diff --git a/crates/dogeos/circuits/batch-circuit/src/child_commitments/mod.rs b/crates/dogeos/circuits/batch-circuit/src/child_commitments/mod.rs new file mode 100644 index 00000000..d5b4271a --- /dev/null +++ b/crates/dogeos/circuits/batch-circuit/src/child_commitments/mod.rs @@ -0,0 +1,5 @@ +mod chunk_exe_commit; +mod chunk_vm_commit; + +pub const EXE_COMMIT: [u32; 8] = chunk_exe_commit::COMMIT; +pub const VM_COMMIT: [u32; 8] = chunk_vm_commit::COMMIT; diff --git a/crates/dogeos/circuits/batch-circuit/src/circuit.rs b/crates/dogeos/circuits/batch-circuit/src/circuit.rs new file mode 100644 index 00000000..ac3bf0f0 --- /dev/null +++ b/crates/dogeos/circuits/batch-circuit/src/circuit.rs @@ -0,0 +1,103 @@ +use alloy_primitives::B256; +use scroll_zkvm_types_batch::dogeos::{DogeOsBatchWitness}; +use scroll_zkvm_types_circuit::{ + AggCircuit, AggregationInput, Circuit, ProgramCommitment, + io::read_witnesses, + public_inputs::{ + Version, + dogeos::{ + batch::{DogeOsBatchInfo, VersionedDogeOsBatchInfo}, + chunk::VersionedDogeOsChunkInfo, + }, + }, +}; +use itertools::Itertools; + +use crate::child_commitments; + +#[allow(unused_imports, clippy::single_component_path_imports)] +use { + openvm_algebra_guest::{IntMod, field::FieldExtension}, + openvm_ecc_guest::AffinePoint, + openvm_keccak256_guest, // trigger extern native-keccak256 + openvm_pairing::bls12_381::{Bls12_381, Bls12_381G1Affine, Fp, Fp2}, + openvm_sha256_guest, +}; +use scroll_zkvm_types_circuit::public_inputs::dogeos::chunk::DogeOsChunkInfo; + +openvm::init!(); + +pub struct BatchCircuit; + +impl Circuit for BatchCircuit { + type Witness = DogeOsBatchWitness; + + type PublicInputs = VersionedDogeOsBatchInfo; + + fn read_witness_bytes() -> Vec { + read_witnesses() + } + + fn deserialize_witness(witness_bytes: &[u8]) -> Self::Witness { + let config = bincode::config::standard(); + let (witness, _): (Self::Witness, _) = + bincode::serde::decode_from_slice(witness_bytes, config) + .expect("BatchCircuit: deserialisation of witness bytes failed"); + witness + } + + fn validate(witness: Self::Witness) -> Self::PublicInputs { + let version = Version::from(witness.inner.version); + assert_eq!(version.fork, witness.inner.fork_name); + + (DogeOsBatchInfo::from(&witness), version) + } +} + +impl AggCircuit for BatchCircuit { + type AggregatedPublicInputs = VersionedDogeOsChunkInfo; + + fn verify_commitments(commitment: &ProgramCommitment) { + assert_eq!( + commitment.vm, + child_commitments::VM_COMMIT, + "mismatch chunk-proof leaf commitment: expected={:?}, got={:?}", + child_commitments::VM_COMMIT, + commitment.vm, + ); + assert_eq!( + commitment.exe, + child_commitments::EXE_COMMIT, + "mismatch chunk-proof exe commitment: expected={:?}, got={:?}", + child_commitments::EXE_COMMIT, + commitment.exe, + ); + } + + fn aggregated_public_inputs(witness: &Self::Witness) -> Vec { + let version = Version::from(witness.inner.version); + witness + .inner + .chunk_infos + .iter() + .cloned() + .zip_eq(witness.extras.chunk_info_extras.iter().cloned()) + .map(DogeOsChunkInfo::from) + .map(|chunk_info| (chunk_info, version)) + .collect() + } + + fn aggregated_pi_hashes(proofs: &[AggregationInput]) -> Vec { + proofs + .iter() + .map(|proof| { + let transformed = proof + .public_values + .iter() + .map(|&val| u8::try_from(val).expect("0 < public value < 256")) + .collect::>(); + B256::from_slice(transformed.as_slice()) + }) + .collect() + } +} diff --git a/crates/dogeos/circuits/batch-circuit/src/main.rs b/crates/dogeos/circuits/batch-circuit/src/main.rs new file mode 100644 index 00000000..ad3cb9b8 --- /dev/null +++ b/crates/dogeos/circuits/batch-circuit/src/main.rs @@ -0,0 +1,35 @@ +use scroll_zkvm_types_circuit::{AggCircuit, Circuit}; + +mod circuit; +use circuit::BatchCircuit as C; + +mod child_commitments; + +openvm::entry!(main); + +fn main() { + // Read witness bytes from openvm StdIn. + let witness_bytes = C::read_witness_bytes(); + + // Deserialize witness bytes to the witness data type. + let witness = C::deserialize_witness(&witness_bytes); + + // Verify the root proofs being aggregated in the circuit. + let agg_proofs = C::verify_proofs(&witness); + + // Get the public-input values of the proofs being aggregated from witness. + let agg_pis = C::aggregated_public_inputs(&witness); + + // Derive the digests of the public-input values of proofs being aggregated. + let agg_pi_hashes = C::aggregated_pi_hashes(&agg_proofs); + + // Validate that the pi hashes derived from the root proofs are in fact the digests of the + // public-input values of the previous circuit layer. + C::validate_aggregated_pi(&agg_pis, &agg_pi_hashes); + + // Validate the witness for the current circuit layer. + let public_inputs = C::validate(witness); + + // Reveal the public-input values of the current circuit layer. + C::reveal_pi(&public_inputs); +} diff --git a/crates/dogeos/circuits/bundle-circuit/.gitignore b/crates/dogeos/circuits/bundle-circuit/.gitignore new file mode 100644 index 00000000..f9cd8a70 --- /dev/null +++ b/crates/dogeos/circuits/bundle-circuit/.gitignore @@ -0,0 +1 @@ +/openvm diff --git a/crates/dogeos/circuits/bundle-circuit/Cargo.toml b/crates/dogeos/circuits/bundle-circuit/Cargo.toml new file mode 100644 index 00000000..6e2b4c9f --- /dev/null +++ b/crates/dogeos/circuits/bundle-circuit/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "dogeos-zkvm-bundle-circuit" +edition.workspace = true +readme.workspace = true +repository.workspace = true +version = "0.7.1" + +[dependencies] +bincode.workspace = true +scroll-zkvm-types-circuit.workspace = true +scroll-zkvm-types-bundle.workspace = true + +openvm = { workspace = true, features = ["std"] } +openvm-keccak256-guest.workspace = true + +alloy-primitives = { workspace = true } + +[features] +default = [] diff --git a/crates/dogeos/circuits/bundle-circuit/bundle_exe_commit.rs b/crates/dogeos/circuits/bundle-circuit/bundle_exe_commit.rs new file mode 100644 index 00000000..f34d1d1b --- /dev/null +++ b/crates/dogeos/circuits/bundle-circuit/bundle_exe_commit.rs @@ -0,0 +1,4 @@ +#![cfg_attr(rustfmt, rustfmt_skip)] +//! Generated by crates/build-guest. DO NOT EDIT! + +pub const COMMIT: [u32; 8] = [1427402185, 1459064843, 317464538, 1274190978, 466682983, 1321271389, 1187009604, 1464042898]; diff --git a/crates/dogeos/circuits/bundle-circuit/bundle_vm_commit.rs b/crates/dogeos/circuits/bundle-circuit/bundle_vm_commit.rs new file mode 100644 index 00000000..5271f85c --- /dev/null +++ b/crates/dogeos/circuits/bundle-circuit/bundle_vm_commit.rs @@ -0,0 +1,4 @@ +#![cfg_attr(rustfmt, rustfmt_skip)] +//! Generated by crates/build-guest. DO NOT EDIT! + +pub const COMMIT: [u32; 8] = [702922786, 974900043, 1870917533, 1628966797, 1650497578, 697799835, 298481193, 1937656708]; diff --git a/crates/dogeos/circuits/bundle-circuit/openvm.toml b/crates/dogeos/circuits/bundle-circuit/openvm.toml new file mode 100644 index 00000000..2aa640c8 --- /dev/null +++ b/crates/dogeos/circuits/bundle-circuit/openvm.toml @@ -0,0 +1,17 @@ +[app_fri_params.fri_params] +log_blowup = 1 +log_final_poly_len = 0 +num_queries = 100 +proof_of_work_bits = 16 + +[app_vm_config.rv32i] + +[app_vm_config.rv32m] + +[app_vm_config.io] + +[app_vm_config.keccak] + +[app_vm_config.castf] + +[app_vm_config.native] diff --git a/crates/dogeos/circuits/bundle-circuit/src/child_commitments/batch_exe_commit.rs b/crates/dogeos/circuits/bundle-circuit/src/child_commitments/batch_exe_commit.rs new file mode 120000 index 00000000..40076d1f --- /dev/null +++ b/crates/dogeos/circuits/bundle-circuit/src/child_commitments/batch_exe_commit.rs @@ -0,0 +1 @@ +../../../../circuits/batch-circuit/batch_exe_commit.rs \ No newline at end of file diff --git a/crates/dogeos/circuits/bundle-circuit/src/child_commitments/batch_vm_commit.rs b/crates/dogeos/circuits/bundle-circuit/src/child_commitments/batch_vm_commit.rs new file mode 120000 index 00000000..9197500a --- /dev/null +++ b/crates/dogeos/circuits/bundle-circuit/src/child_commitments/batch_vm_commit.rs @@ -0,0 +1 @@ +../../../../circuits/batch-circuit/batch_vm_commit.rs \ No newline at end of file diff --git a/crates/dogeos/circuits/bundle-circuit/src/child_commitments/mod.rs b/crates/dogeos/circuits/bundle-circuit/src/child_commitments/mod.rs new file mode 100644 index 00000000..77435dd0 --- /dev/null +++ b/crates/dogeos/circuits/bundle-circuit/src/child_commitments/mod.rs @@ -0,0 +1,4 @@ +mod batch_exe_commit; +mod batch_vm_commit; +pub const EXE_COMMIT: [u32; 8] = batch_exe_commit::COMMIT; +pub const VM_COMMIT: [u32; 8] = batch_vm_commit::COMMIT; diff --git a/crates/dogeos/circuits/bundle-circuit/src/circuit.rs b/crates/dogeos/circuits/bundle-circuit/src/circuit.rs new file mode 100644 index 00000000..9e12b082 --- /dev/null +++ b/crates/dogeos/circuits/bundle-circuit/src/circuit.rs @@ -0,0 +1,94 @@ +use alloy_primitives::B256; +use scroll_zkvm_types_bundle::dogeos::DogeOsBundleWitness; +use scroll_zkvm_types_circuit::{ + AggCircuit, AggregationInput, Circuit, ProgramCommitment, + io::read_witnesses, + public_inputs::{ + Version, + dogeos::{ + batch::{VersionedDogeOsBatchInfo, DogeOsBatchInfo}, + bundle::{DogeOsBundleInfo, VersionedDogeOsBundleInfo}, + }, + }, +}; + +use crate::child_commitments; + +#[allow(unused_imports, clippy::single_component_path_imports)] +use openvm_keccak256_guest; +use scroll_zkvm_types_circuit::public_inputs::dogeos::batch::DogeOsBatchInfoExtras; + +#[derive(Default)] +pub struct BundleCircuit; + +impl Circuit for BundleCircuit { + type Witness = DogeOsBundleWitness; + + type PublicInputs = VersionedDogeOsBundleInfo; + + fn read_witness_bytes() -> Vec { + read_witnesses() + } + + fn deserialize_witness(witness_bytes: &[u8]) -> Self::Witness { + let config = bincode::config::standard(); + let (witness, _): (Self::Witness, _) = + bincode::serde::decode_from_slice(witness_bytes, config) + .expect("BundleCircuit: deserialization of witness bytes failed"); + witness + } + + fn validate(witness: Self::Witness) -> Self::PublicInputs { + let version = Version::from(witness.inner.version); + assert_eq!(version.fork, witness.inner.fork_name); + + (DogeOsBundleInfo::from(&witness), version) + } +} + +impl AggCircuit for BundleCircuit { + type AggregatedPublicInputs = VersionedDogeOsBatchInfo; + + fn verify_commitments(commitment: &ProgramCommitment) { + assert_eq!( + commitment.vm, + child_commitments::VM_COMMIT, + "mismatch batch-proof leaf commitment: expected={:?}, got={:?}", + child_commitments::VM_COMMIT, + commitment.vm, + ); + assert_eq!( + commitment.exe, + child_commitments::EXE_COMMIT, + "mismatch batch-proof exe commitment: expected={:?}, got={:?}", + child_commitments::EXE_COMMIT, + commitment.exe, + ); + } + + fn aggregated_public_inputs(witness: &Self::Witness) -> Vec { + let version = Version::from(witness.inner.version); + witness + .inner + .batch_infos + .iter() + .cloned() + .map(|inner| DogeOsBatchInfo { inner, extras: DogeOsBatchInfoExtras { } }) + .map(|batch_info| (batch_info, version)) + .collect() + } + + fn aggregated_pi_hashes(proofs: &[AggregationInput]) -> Vec { + proofs + .iter() + .map(|proof| { + let transformed = proof + .public_values + .iter() + .map(|&val| u8::try_from(val).expect("0 < public value < 256")) + .collect::>(); + B256::from_slice(transformed.as_slice()) + }) + .collect() + } +} diff --git a/crates/dogeos/circuits/bundle-circuit/src/main.rs b/crates/dogeos/circuits/bundle-circuit/src/main.rs new file mode 100644 index 00000000..7efe4566 --- /dev/null +++ b/crates/dogeos/circuits/bundle-circuit/src/main.rs @@ -0,0 +1,38 @@ +use scroll_zkvm_types_circuit::{AggCircuit, Circuit}; + +mod circuit; + +type C = circuit::BundleCircuit; + +// TODO: feature handling for feynman to use bundle info v3. + +openvm::entry!(main); + +mod child_commitments; + +fn main() { + // Read witness bytes from openvm StdIn. + let witness_bytes = C::read_witness_bytes(); + + // Deserialize witness bytes to the witness data type. + let witness = C::deserialize_witness(&witness_bytes); + + // Verify the root proofs being aggregated in the circuit. + let agg_proofs = C::verify_proofs(&witness); + + // Get the public-input values of the proofs being aggregated from witness. + let agg_pis = C::aggregated_public_inputs(&witness); + + // Derive the digests of the public-input values of the proofs being aggregated. + let agg_pi_hashes = C::aggregated_pi_hashes(&agg_proofs); + + // Validate that the pi hashes derived from the stark proofs are in fact the digests of the + // public-input values of the previous circuit layer. + C::validate_aggregated_pi(&agg_pis, &agg_pi_hashes); + + // Validate the witness for the current circuit layer. + let public_inputs = C::validate(witness); + + // Reveal the public input values of the current circuit layer. + C::reveal_pi(&public_inputs); +} diff --git a/crates/dogeos/circuits/chunk-circuit/.gitignore b/crates/dogeos/circuits/chunk-circuit/.gitignore new file mode 100644 index 00000000..f9cd8a70 --- /dev/null +++ b/crates/dogeos/circuits/chunk-circuit/.gitignore @@ -0,0 +1 @@ +/openvm diff --git a/crates/dogeos/circuits/chunk-circuit/Cargo.toml b/crates/dogeos/circuits/chunk-circuit/Cargo.toml new file mode 100644 index 00000000..ec46d849 --- /dev/null +++ b/crates/dogeos/circuits/chunk-circuit/Cargo.toml @@ -0,0 +1,27 @@ +[package] +name = "dogeos-zkvm-chunk-circuit" +edition.workspace = true +readme.workspace = true +repository.workspace = true +version = "0.7.1" + +[dependencies] +bincode = { workspace = true } +scroll-zkvm-types-circuit = { workspace = true } +scroll-zkvm-types-chunk = { workspace = true, features = ["scroll"] } + +openvm = { workspace = true, features = ["std", "getrandom-unsupported"] } +openvm-k256 = { workspace = true } +openvm-p256 = { workspace = true } +openvm-pairing = { workspace = true, features = ["bn254"] } +openvm-algebra-complex-macros = { workspace = true } +openvm-algebra-guest = { workspace = true } +openvm-bigint-guest = { workspace = true } +openvm-ecc-guest = { workspace = true } +openvm-keccak256-guest= { workspace = true } +openvm-pairing-guest = { workspace = true, features = ["bn254"] } +openvm-sha2 = { workspace = true } +openvm-rv32im-guest= { workspace = true } + + +[features] diff --git a/crates/dogeos/circuits/chunk-circuit/chunk_exe_commit.rs b/crates/dogeos/circuits/chunk-circuit/chunk_exe_commit.rs new file mode 100644 index 00000000..c20c4ecc --- /dev/null +++ b/crates/dogeos/circuits/chunk-circuit/chunk_exe_commit.rs @@ -0,0 +1,4 @@ +#![cfg_attr(rustfmt, rustfmt_skip)] +//! Generated by crates/build-guest. DO NOT EDIT! + +pub const COMMIT: [u32; 8] = [1014022064, 465731548, 1523753209, 176670569, 1674631214, 1423438392, 1005554882, 394958993]; diff --git a/crates/dogeos/circuits/chunk-circuit/chunk_vm_commit.rs b/crates/dogeos/circuits/chunk-circuit/chunk_vm_commit.rs new file mode 100644 index 00000000..739a25bf --- /dev/null +++ b/crates/dogeos/circuits/chunk-circuit/chunk_vm_commit.rs @@ -0,0 +1,4 @@ +#![cfg_attr(rustfmt, rustfmt_skip)] +//! Generated by crates/build-guest. DO NOT EDIT! + +pub const COMMIT: [u32; 8] = [636098662, 1159240103, 1476249019, 1206808598, 446929719, 1171493582, 43492796, 756143264]; diff --git a/crates/dogeos/circuits/chunk-circuit/openvm.toml b/crates/dogeos/circuits/chunk-circuit/openvm.toml new file mode 100644 index 00000000..c1463017 --- /dev/null +++ b/crates/dogeos/circuits/chunk-circuit/openvm.toml @@ -0,0 +1,58 @@ +[app_fri_params.fri_params] +log_blowup = 1 +log_final_poly_len = 0 +num_queries = 100 +proof_of_work_bits = 16 + +[app_vm_config.rv32i] + +[app_vm_config.io] + +[app_vm_config.keccak] + +[app_vm_config.rv32m] +range_tuple_checker_sizes = [256, 8192] + +[app_vm_config.bigint] +range_tuple_checker_sizes = [256, 8192] + +[app_vm_config.modular] +supported_moduli = [ + "21888242871839275222246405745257275088696311157297823662689037894645226208583", + "21888242871839275222246405745257275088548364400416034343698204186575808495617", + "115792089237316195423570985008687907853269984665640564039457584007908834671663", + "115792089237316195423570985008687907852837564279074904382605163141518161494337", + "115792089210356248762697446949407573530086143415290314195533631308867097853951", + "115792089210356248762697446949407573529996955224135760342422259061068512044369" +] + +[app_vm_config.fp2] +supported_moduli = [ + ["Bn254Fp2","21888242871839275222246405745257275088696311157297823662689037894645226208583"] +] + +[app_vm_config.pairing] +supported_curves = ["Bn254"] + +[app_vm_config.sha256] + +[[app_vm_config.ecc.supported_curves]] +struct_name = "Secp256k1Point" +modulus = "115792089237316195423570985008687907853269984665640564039457584007908834671663" +scalar = "115792089237316195423570985008687907852837564279074904382605163141518161494337" +a = "0" +b = "7" + +[[app_vm_config.ecc.supported_curves]] +struct_name = "P256Point" +modulus = "115792089210356248762697446949407573530086143415290314195533631308867097853951" +scalar = "115792089210356248762697446949407573529996955224135760342422259061068512044369" +a = "115792089210356248762697446949407573530086143415290314195533631308867097853948" +b = "41058363725152142129326129780047268409114441015993725554835256314039467401291" + +[[app_vm_config.ecc.supported_curves]] +struct_name = "Bn254G1Affine" +modulus = "21888242871839275222246405745257275088696311157297823662689037894645226208583" +scalar = "21888242871839275222246405745257275088548364400416034343698204186575808495617" +a = "0" +b = "3" diff --git a/crates/dogeos/circuits/chunk-circuit/openvm_init.rs b/crates/dogeos/circuits/chunk-circuit/openvm_init.rs new file mode 100644 index 00000000..7c9f2870 --- /dev/null +++ b/crates/dogeos/circuits/chunk-circuit/openvm_init.rs @@ -0,0 +1,4 @@ +// 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" } +openvm_algebra_guest::complex_macros::complex_init! { "Bn254Fp2" { mod_idx = 0 } } +openvm_ecc_guest::sw_macros::sw_init! { "Secp256k1Point", "P256Point", "Bn254G1Affine" } diff --git a/crates/dogeos/circuits/chunk-circuit/src/circuit.rs b/crates/dogeos/circuits/chunk-circuit/src/circuit.rs new file mode 100644 index 00000000..fe950731 --- /dev/null +++ b/crates/dogeos/circuits/chunk-circuit/src/circuit.rs @@ -0,0 +1,50 @@ +use openvm::init; +use scroll_zkvm_types_chunk::dogeos::DogeOsChunkWitness; +use scroll_zkvm_types_circuit::{ + Circuit, + io::read_witnesses, + public_inputs::{ + Version, + dogeos::chunk::{DogeOsChunkInfo, VersionedDogeOsChunkInfo}, + }, +}; + +#[allow(unused_imports, clippy::single_component_path_imports)] +use { + openvm::platform as openvm_platform, + openvm_algebra_guest::IntMod, + openvm_bigint_guest, // trigger extern u256 (this may be unneeded) + openvm_k256::Secp256k1Point, + openvm_keccak256_guest, // trigger extern native-keccak256 + openvm_p256::P256Point, + openvm_pairing::bn254::Bn254G1Affine, +}; + +init!(); + +pub struct ChunkCircuit; + +impl Circuit for ChunkCircuit { + type Witness = DogeOsChunkWitness; + type PublicInputs = VersionedDogeOsChunkInfo; + + fn read_witness_bytes() -> Vec { + read_witnesses() + } + + fn deserialize_witness(witness_bytes: &[u8]) -> Self::Witness { + let config = bincode::config::standard(); + let (witness, _): (Self::Witness, _) = + bincode::serde::decode_from_slice(witness_bytes, config) + .expect("ChunkCircuit: deserialisation of witness bytes failed"); + witness + } + + fn validate(witness: Self::Witness) -> Self::PublicInputs { + let version = Version::from(witness.inner.version); + assert_eq!(version.fork, witness.inner.fork_name); + + let chunk_info = DogeOsChunkInfo::try_from(witness).expect("failed to execute chunk"); + (chunk_info, version) + } +} diff --git a/crates/dogeos/circuits/chunk-circuit/src/main.rs b/crates/dogeos/circuits/chunk-circuit/src/main.rs new file mode 100644 index 00000000..737390f8 --- /dev/null +++ b/crates/dogeos/circuits/chunk-circuit/src/main.rs @@ -0,0 +1,19 @@ +use scroll_zkvm_types_chunk::Crypto; +use scroll_zkvm_types_circuit::{Circuit, public_inputs::PublicInputs, reveal_pi_hash}; + +mod circuit; +use circuit::ChunkCircuit as C; + +openvm::entry!(main); + +fn main() { + Crypto::install(); + + let witness_bytes = C::read_witness_bytes(); + + let witness = C::deserialize_witness(&witness_bytes); + + let public_inputs = C::validate(witness); + + reveal_pi_hash(public_inputs.pi_hash()); +} diff --git a/crates/dogeos/integration/Cargo.toml b/crates/dogeos/integration/Cargo.toml new file mode 100644 index 00000000..b2a9e6bc --- /dev/null +++ b/crates/dogeos/integration/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "dogeos-zkvm-integration" +authors.workspace = true +edition.workspace = true +homepage.workspace = true +readme.workspace = true +repository.workspace = true +version.workspace = true + +[dependencies] +scroll-zkvm-types.workspace = true +scroll-zkvm-prover.workspace = true +scroll-zkvm-integration = { workspace = true, default-features = false, features = ["scroll"] } + +sbv-primitives = { workspace = true } + +eyre.workspace = true +serde_json.workspace = true + +bridge_core = { workspace = true } +bridge_protocol = { workspace = true } +bridge_adapters_zk = { workspace = true, features = ["verifier", "builder"] } +bridge_steps_da = { workspace = true, features = ["verifier", "builder"] } diff --git a/crates/dogeos/integration/src/lib.rs b/crates/dogeos/integration/src/lib.rs new file mode 100644 index 00000000..71944945 --- /dev/null +++ b/crates/dogeos/integration/src/lib.rs @@ -0,0 +1,17 @@ +use scroll_zkvm_integration::WORKSPACE_ROOT; +use std::path::Path; +use std::sync::LazyLock; +pub static DOGEOS_CRATES_ROOT: LazyLock<&Path> = LazyLock::new(|| { + Box::leak( + WORKSPACE_ROOT + .join("crates") + .join("dogeos") + .into_boxed_path(), + ) +}); +pub static DOGEOS_INTEGRATION_ROOT: LazyLock<&Path> = + LazyLock::new(|| Box::leak(DOGEOS_CRATES_ROOT.join("integration").into_boxed_path())); +pub static DOGEOS_TESTDATA_ROOT: LazyLock<&Path> = + LazyLock::new(|| Box::leak(DOGEOS_INTEGRATION_ROOT.join("testdata").into_boxed_path())); + +pub mod testers; diff --git a/crates/dogeos/integration/src/testers.rs b/crates/dogeos/integration/src/testers.rs new file mode 100644 index 00000000..be5d054c --- /dev/null +++ b/crates/dogeos/integration/src/testers.rs @@ -0,0 +1,3 @@ +pub mod chunk; +pub mod batch; +pub mod bundle; diff --git a/crates/dogeos/integration/src/testers/batch.rs b/crates/dogeos/integration/src/testers/batch.rs new file mode 100644 index 00000000..a8a791b3 --- /dev/null +++ b/crates/dogeos/integration/src/testers/batch.rs @@ -0,0 +1,85 @@ +use std::sync::Arc; +use bridge_adapters_zk::serde::SerdeWrapper; +use bridge_adapters_zk::{StepInputEnvelope}; +use bridge_core::{BuilderContext, BuilderStep}; +use bridge_protocol::{DaInclusionStmtV1, PipelineMetadata}; +use bridge_steps_da::{DaInclusionBuilder, DaInclusionVerifier, SyntheticBlobSource}; +use scroll_zkvm_integration::{ProverTester, PROGRAM_COMMITMENTS}; +use scroll_zkvm_integration::utils::build_batch_witnesses; +use scroll_zkvm_types::dogeos::batch::dogeos::{DogeOsBatchWitness, DogeOsBatchWitnessExtras}; +use scroll_zkvm_types::dogeos::chunk::{execute, DogeOsChunkWitness}; +use scroll_zkvm_types::public_inputs::dogeos::batch::DogeOsBatchInfo; +use scroll_zkvm_types::public_inputs::MultiVersionPublicInputs; +use scroll_zkvm_types::types_agg::AggregationInput; +use scroll_zkvm_types::utils::serialize_vk; +use scroll_zkvm_types::version::Version; + +pub struct BatchProverTester; + +impl ProverTester for BatchProverTester { + type Metadata = DogeOsBatchInfo; + + type Witness = DogeOsBatchWitness; + + const NAME: &str = "batch"; + + const PATH_PROJECT_ROOT: &str = "crates/dogeos/circuits/batch-circuit"; + + const DIR_ASSETS: &str = "batch"; +} + +fn mock_inclusion_envelope() -> eyre::Result> { + let statement = DaInclusionStmtV1 { + metadata: PipelineMetadata { + pipeline: "da".into(), ..PipelineMetadata::default() }, + celestia_height: 100, + namespace: [0u8; 10], + share_version: 1, + commitment: [0u8; 32], + data_root: [0u8; 32], + expected_signer: None, + bridge_state_hash: [0u8; 32], + versioned_hash_witness: None, + }; + + let source = Arc::new(SyntheticBlobSource::new()); + let builder = DaInclusionBuilder::new(source); + let artifact = builder.build(&statement, &BuilderContext::default())?; + Ok(StepInputEnvelope { + statement, + artifact, + }) +} + +pub fn mock_batch_witness(chunk_witness: &DogeOsChunkWitness) -> eyre::Result { + let last_info = execute(chunk_witness.clone()).expect("execute chunk"); + + let commitment = PROGRAM_COMMITMENTS["chunk"]; + let mut inner = build_batch_witnesses( + &[chunk_witness.inner.clone()], + &serialize_vk::serialize(&commitment), + Default::default() + )?; + + inner.chunk_proofs = vec![ + AggregationInput { + public_values: last_info.pi_hash_by_version(Version::feynman()) + .as_slice() + .iter() + .map(|&b| b as u32) + .collect::>(), + commitment, + } + ]; + + let extras = DogeOsBatchWitnessExtras { + chunk_info_extras: vec![last_info.extras], + verifier_context: SerdeWrapper(Default::default()), + inclusion: SerdeWrapper(mock_inclusion_envelope()?), + }; + + Ok(DogeOsBatchWitness { + inner, + extras, + }) +} diff --git a/crates/dogeos/integration/src/testers/bundle.rs b/crates/dogeos/integration/src/testers/bundle.rs new file mode 100644 index 00000000..a595b0b8 --- /dev/null +++ b/crates/dogeos/integration/src/testers/bundle.rs @@ -0,0 +1,60 @@ +use scroll_zkvm_integration::{ProverTester, PROGRAM_COMMITMENTS}; +use scroll_zkvm_integration::utils::metadata_from_batch_witnesses; +use scroll_zkvm_types::dogeos::batch::dogeos::DogeOsBatchWitness; +use scroll_zkvm_types::dogeos::bundle::BundleWitness; +use scroll_zkvm_types::dogeos::bundle::dogeos::DogeOsBundleWitness; +use scroll_zkvm_types::public_inputs::dogeos::batch::{DogeOsBatchInfo, DogeOsBatchInfoExtras}; +use scroll_zkvm_types::public_inputs::dogeos::bundle::DogeOsBundleInfo; +use scroll_zkvm_types::public_inputs::{ForkName, MultiVersionPublicInputs}; +use scroll_zkvm_types::types_agg::AggregationInput; +use scroll_zkvm_types::version::Version; + +pub struct BundleProverTester; + +impl ProverTester for BundleProverTester { + type Metadata = DogeOsBundleInfo; + + type Witness = DogeOsBundleWitness; + + const NAME: &str = "bundle"; + + const PATH_PROJECT_ROOT: &str = "crates/dogeos/circuits/bundle-circuit"; + + const DIR_ASSETS: &str = "bundle"; +} + + +pub fn mock_bundle_witness( + batch_witness: &DogeOsBatchWitness +) -> eyre::Result { + let commitment = PROGRAM_COMMITMENTS["batch"]; + + let info_inner = metadata_from_batch_witnesses(&batch_witness.inner)?; + let info = DogeOsBatchInfo { + inner: info_inner, + extras: DogeOsBatchInfoExtras {}, + }; + + let pi_hash = info.pi_hash_by_version(Version::feynman()); + + let proof = AggregationInput { + public_values: pi_hash + .as_slice() + .iter() + .map(|&b| b as u32) + .collect::>(), + commitment, + }; + + let bundle_witness = BundleWitness { + version: Version::feynman().as_version_byte(), + batch_infos: vec![info.inner], + batch_proofs: vec![proof], + fork_name: ForkName::Feynman, + }; + + Ok(DogeOsBundleWitness { + inner: bundle_witness, + batch_info_extras: vec![info.extras] + }) +} diff --git a/crates/dogeos/integration/src/testers/chunk.rs b/crates/dogeos/integration/src/testers/chunk.rs new file mode 100644 index 00000000..b74738b0 --- /dev/null +++ b/crates/dogeos/integration/src/testers/chunk.rs @@ -0,0 +1,80 @@ +use crate::DOGEOS_TESTDATA_ROOT; +use bridge_adapters_zk::serde::SerdeWrapper; +use bridge_core::VerifierContext; +use sbv_primitives::B256; +use scroll_zkvm_integration::testers::chunk::read_block_witness; +use scroll_zkvm_integration::{ProverTester, tester_execute}; +use scroll_zkvm_prover::utils::vm::ExecutionResult; +use scroll_zkvm_types::dogeos::chunk::{ + DogeOsChunkInfo, DogeOsChunkWitness, DogeOsChunkWitnessExtras, +}; +use scroll_zkvm_types::public_inputs::{ForkName, Version}; +use scroll_zkvm_types::scroll::chunk::ChunkWitness; +use std::fs::File; + +pub struct ChunkProverTester; + +impl ProverTester for ChunkProverTester { + type Metadata = DogeOsChunkInfo; + + type Witness = DogeOsChunkWitness; + + const NAME: &str = "chunk"; + + const PATH_PROJECT_ROOT: &str = "crates/dogeos/circuits/chunk-circuit"; + + const DIR_ASSETS: &str = "chunk"; +} + +pub fn mock_chunk_witness() -> eyre::Result { + let block_witness_path = DOGEOS_TESTDATA_ROOT + .join("mock") + .join("witnesses") + .join("1954897.json"); + let block_witness = read_block_witness(block_witness_path)?; + + let inner = ChunkWitness::new_scroll( + Version::feynman().as_version_byte(), + &[block_witness], + B256::ZERO, + ForkName::Feynman, + ); + + let header = serde_json::from_reader(File::open( + DOGEOS_TESTDATA_ROOT + .join("mock") + .join("header_step_input.json"), + )?)?; + let midstate = serde_json::from_reader(File::open( + DOGEOS_TESTDATA_ROOT + .join("mock") + .join("midstate_step_input.json"), + )?)?; + let extras = DogeOsChunkWitnessExtras { + verifier_context: SerdeWrapper(VerifierContext::default()), + header, + midstate, + }; + + Ok(DogeOsChunkWitness { inner, extras }) +} + +pub fn exec_chunk(wit: &DogeOsChunkWitness) -> eyre::Result<(ExecutionResult, u64)> { + let blk = wit.blocks[0].header.number; + println!( + "task block num: {}, block[0] idx: {}", + wit.inner.blocks.len(), + blk + ); + let stats = wit.stats(); + println!("chunk stats {:#?}", stats); + let exec_result = tester_execute::(wit, &[])?; + let cycle_count = exec_result.total_cycle; + let cycle_per_gas = cycle_count / stats.total_gas_used; + println!( + "blk {blk}->{}, cycle {cycle_count}, gas {}, cycle-per-gas {cycle_per_gas}", + wit.blocks.last().unwrap().header.number, + stats.total_gas_used, + ); + eyre::Ok((exec_result, stats.total_gas_used)) +} diff --git a/crates/dogeos/integration/testdata/mock/header_step_input.json b/crates/dogeos/integration/testdata/mock/header_step_input.json new file mode 100644 index 00000000..553393c2 --- /dev/null +++ b/crates/dogeos/integration/testdata/mock/header_step_input.json @@ -0,0 +1 @@ +[0,7,100,101,112,111,115,105,116,2,118,49,252,167,250,213,0,252,170,250,213,0,1,240,42,248,140,51,27,213,214,135,195,244,155,103,90,28,65,164,153,150,48,217,51,240,247,97,56,184,206,199,8,103,86,1,146,144,63,213,20,167,121,214,114,148,194,223,121,205,48,92,167,160,31,127,58,63,218,78,94,77,101,67,26,95,30,136,0,7,100,101,112,111,115,105,116,2,118,49,252,167,250,213,0,252,170,250,213,0,3,252,167,250,213,0,240,42,248,140,51,27,213,214,135,195,244,155,103,90,28,65,164,153,150,48,217,51,240,247,97,56,184,206,199,8,103,86,252,8,2,196,0,183,217,233,84,152,112,213,144,126,65,84,26,16,43,190,229,225,127,39,233,188,44,27,114,244,59,99,79,203,208,221,201,184,209,47,76,73,186,72,36,77,94,2,167,143,144,157,211,169,147,105,86,179,122,95,119,50,161,43,248,90,128,164,169,252,65,226,231,104,252,162,248,5,30,0,12,181,68,20,164,134,236,16,169,28,102,221,49,78,254,27,4,182,235,43,24,83,242,183,184,143,80,87,224,85,127,72,86,101,20,15,109,187,169,106,5,12,14,53,228,29,11,0,162,135,105,180,146,145,18,108,123,182,94,32,100,130,30,8,94,227,239,49,71,204,129,249,130,126,193,151,24,60,249,196,98,203,115,64,184,118,171,76,10,252,251,144,21,70,3,86,117,46,73,50,80,167,32,189,207,34,136,110,119,239,40,15,221,142,20,189,45,33,155,113,31,98,158,43,21,72,218,2,69,60,66,177,56,59,25,190,25,245,22,7,125,181,84,150,222,157,33,226,126,106,97,50,91,195,7,0,60,162,131,208,173,183,122,228,80,90,123,125,162,181,87,2,8,199,216,116,129,58,79,102,245,6,59,229,142,191,123,205,120,19,186,2,241,6,86,76,153,129,50,230,117,215,110,160,88,138,249,153,172,82,144,106,86,37,127,203,149,123,85,241,6,140,155,220,103,80,142,229,128,159,99,48,200,107,203,149,179,3,169,65,170,234,56,235,173,107,234,108,106,16,127,27,208,10,168,102,199,120,202,218,142,31,103,58,53,66,248,50,230,18,178,58,57,161,252,164,113,78,117,204,25,136,68,76,159,7,217,181,126,140,77,36,251,12,199,214,252,11,170,253,5,13,116,192,215,57,73,204,215,118,110,126,57,186,48,81,117,123,192,179,207,174,139,153,80,138,252,127,111,115,236,193,4,49,40,211,175,145,89,110,83,154,250,95,213,75,107,136,21,107,249,228,211,202,153,58,38,34,142,172,188,4,63,182,188,82,109,211,101,132,230,147,163,253,185,175,74,249,39,85,252,31,38,103,1,252,168,250,213,0,63,86,175,100,132,20,210,86,140,253,212,232,224,152,236,117,102,154,255,83,61,57,204,147,216,113,13,222,44,206,150,41,252,8,2,196,0,240,42,248,140,51,27,213,214,135,195,244,155,103,90,28,65,164,153,150,48,217,51,240,247,97,56,184,206,199,8,103,86,238,193,34,19,48,122,74,35,156,14,194,147,243,169,252,248,70,82,224,17,164,230,104,221,57,66,193,158,88,48,251,168,252,75,226,231,104,252,197,95,5,30,0,1,238,193,34,19,48,122,74,35,156,14,194,147,243,169,252,248,70,82,224,17,164,230,104,221,57,66,193,158,88,48,251,168,252,169,250,213,0,146,144,63,213,20,167,121,214,114,148,194,223,121,205,48,92,167,160,31,127,58,63,218,78,94,77,101,67,26,95,30,136,252,8,2,196,0,63,86,175,100,132,20,210,86,140,253,212,232,224,152,236,117,102,154,255,83,61,57,204,147,216,113,13,222,44,206,150,41,63,120,28,235,19,228,106,98,7,174,84,105,219,209,11,116,63,67,221,216,24,253,248,21,215,65,146,177,248,60,6,10,252,80,226,231,104,252,49,214,4,30,0,1,63,120,28,235,19,228,106,98,7,174,84,105,219,209,11,116,63,67,221,216,24,253,248,21,215,65,146,177,248,60,6,10] \ No newline at end of file diff --git a/crates/dogeos/integration/testdata/mock/midstate_step_input.json b/crates/dogeos/integration/testdata/mock/midstate_step_input.json new file mode 100644 index 00000000..94f239be --- /dev/null +++ b/crates/dogeos/integration/testdata/mock/midstate_step_input.json @@ -0,0 +1 @@ +[0,7,100,101,112,111,115,105,116,2,118,49,0,7,100,101,112,111,115,105,116,2,118,49,252,167,250,213,0,252,170,250,213,0,1,240,42,248,140,51,27,213,214,135,195,244,155,103,90,28,65,164,153,150,48,217,51,240,247,97,56,184,206,199,8,103,86,1,146,144,63,213,20,167,121,214,114,148,194,223,121,205,48,92,167,160,31,127,58,63,218,78,94,77,101,67,26,95,30,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,100,101,112,111,115,105,116,2,118,49,3,240,42,248,140,51,27,213,214,135,195,244,155,103,90,28,65,164,153,150,48,217,51,240,247,97,56,184,206,199,8,103,86,184,209,47,76,73,186,72,36,77,94,2,167,143,144,157,211,169,147,105,86,179,122,95,119,50,161,43,248,90,128,164,169,12,12,0,106,9,230,103,187,103,174,133,60,110,243,114,165,79,245,58,81,14,82,127,155,5,104,140,31,131,217,171,91,224,205,25,0,53,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,7,4,167,250,213,0,1,1,255,255,255,255,39,1,32,214,14,213,232,0,0,0,25,118,169,20,14,5,164,202,113,210,103,156,106,192,246,147,171,213,52,219,52,183,170,120,136,172,0,0,0,0,1,181,68,20,164,134,236,16,169,28,102,221,49,78,254,27,4,182,235,43,24,83,242,183,184,143,80,87,224,85,127,72,86,1,212,75,153,242,77,151,63,223,199,193,154,242,242,56,219,18,213,15,217,123,107,169,64,255,149,77,7,104,8,46,43,78,128,25,118,161,141,193,41,93,213,36,152,114,225,142,207,94,201,255,217,25,21,77,96,255,255,255,255,251,241,2,22,8,236,129,2,0,0,0,0,25,118,169,20,99,90,137,155,108,74,169,37,126,216,240,10,65,250,18,180,8,126,63,183,136,172,0,225,245,5,0,0,0,0,25,118,169,20,4,15,164,116,243,7,229,249,100,187,14,87,104,107,129,114,23,157,41,63,136,172,0,225,245,5,0,0,0,0,25,118,169,20,4,15,164,116,243,7,229,249,100,187,14,87,104,107,129,114,23,157,41,63,136,172,0,225,245,5,0,0,0,0,25,118,169,20,4,15,164,116,243,7,229,249,100,187,14,87,104,107,129,114,23,157,41,63,136,172,0,225,245,5,0,0,0,0,25,118,169,20,4,15,164,116,243,7,229,249,100,187,14,87,104,107,129,114,23,157,41,63,136,172,0,225,245,5,0,0,0,0,25,118,169,20,4,15,164,116,243,7,229,249,100,187,14,87,104,107,129,114,23,157,41,63,136,172,0,225,245,5,0,0,0,0,25,118,169,20,4,15,164,116,243,7,229,249,100,187,14,87,104,107,129,114,23,157,41,63,136,172,0,225,245,5,0,0,0,0,25,118,169,20,4,15,164,116,243,7,229,249,100,187,14,87,104,107,129,114,23,157,41,63,136,172,0,225,245,5,0,0,0,0,25,118,169,20,4,15,164,116,243,7,229,249,100,187,14,87,104,107,129,114,23,157,41,63,136,172,0,225,245,5,0,0,0,0,25,118,169,20,4,15,164,116,243,7,229,249,100,187,14,87,104,107,129,114,23,157,41,63,136,172,0,225,245,5,0,0,0,0,25,118,169,20,4,15,164,116,243,7,229,249,100,187,14,87,104,107,129,114,23,157,41,63,136,172,0,53,213,29,0,0,0,0,25,118,169,20,185,180,207,55,10,190,1,12,116,95,166,14,177,196,248,90,202,81,1,144,136,172,0,53,213,29,0,0,0,0,25,118,169,20,185,180,207,55,10,190,1,12,116,95,166,14,177,196,248,90,202,81,1,144,136,172,0,53,213,29,0,0,0,0,25,118,169,20,185,180,207,55,10,190,1,12,116,95,166,14,177,196,248,90,202,81,1,144,136,172,0,53,213,29,0,0,0,0,25,118,169,20,185,180,207,55,10,190,1,12,116,95,166,14,177,196,248,90,202,81,1,144,136,172,0,53,213,29,0,0,0,0,25,118,169,20,185,180,207,55,10,190,1,12,116,95,166,14,177,196,248,90,202,81,1,144,136,172,0,53,213,29,0,0,0,0,25,118,169,20,185,180,207,55,10,190,1,12,116,95,166,14,177,196,248,90,202,81,1,144,136,172,0,53,213,29,0,0,0,0,25,118,169,20,185,180,207,55,10,190,1,12,116,95,166,14,177,196,248,90,202,81,1,144,136,172,0,53,213,29,0,0,0,0,25,118,169,20,185,180,207,55,10,190,1,12,116,95,166,14,177,196,248,90,202,81,1,144,136,172,0,53,213,29,0,0,0,0,25,118,169,20,185,180,207,55,10,190,1,12,116,95,166,14,177,196,248,90,202,81,1,144,136,172,0,53,213,29,0,0,0,0,25,118,169,20,185,180,207,55,10,190,1,12,116,95,166,14,177,196,248,90,202,81,1,144,136,172,216,117,127,235,0,0,0,0,25,118,169,20,185,180,207,55,10,190,1,12,116,95,166,14,177,196,248,90,202,81,1,144,136,172,0,0,0,0,1,101,20,15,109,187,169,106,5,12,14,53,228,29,11,0,162,135,105,180,146,145,18,108,123,182,94,32,100,130,30,8,94,2,64,232,148,83,228,174,118,174,229,80,234,5,18,236,131,62,212,28,152,29,95,17,192,65,65,238,195,106,53,67,160,186,128,24,161,141,193,41,93,213,36,152,114,225,142,207,94,201,255,217,25,21,77,96,255,255,255,255,69,2,0,101,205,29,0,0,0,0,23,169,20,173,92,38,113,204,12,53,134,6,33,58,149,63,13,86,223,185,162,121,132,135,0,0,0,0,0,0,0,0,23,106,21,0,189,109,83,186,217,101,131,110,25,86,93,123,88,215,142,143,135,216,8,88,0,0,0,0,1,227,239,49,71,204,129,249,130,126,193,151,24,60,249,196,98,203,115,64,184,118,171,76,10,252,251,144,21,70,3,86,117,3,81,70,32,253,174,95,226,177,141,188,90,200,34,103,69,248,175,207,253,172,54,234,165,244,202,201,213,58,71,118,103,239,128,24,161,141,193,41,93,213,36,152,114,225,142,207,94,201,255,217,25,21,77,96,255,255,255,255,69,2,0,101,205,29,0,0,0,0,23,169,20,173,92,38,113,204,12,53,134,6,33,58,149,63,13,86,223,185,162,121,132,135,0,0,0,0,0,0,0,0,23,106,21,0,189,109,83,186,217,101,131,110,25,86,93,123,88,215,142,143,135,216,8,88,0,0,0,0,1,46,73,50,80,167,32,189,207,34,136,110,119,239,40,15,221,142,20,189,45,33,155,113,31,98,158,43,21,72,218,2,69,4,251,104,92,239,12,27,27,232,160,175,110,84,0,166,106,41,83,169,198,140,189,86,104,114,192,230,88,95,189,213,235,76,128,24,161,141,193,41,93,213,36,152,114,225,142,207,94,201,255,217,25,21,77,96,255,255,255,255,69,2,0,101,205,29,0,0,0,0,23,169,20,173,92,38,113,204,12,53,134,6,33,58,149,63,13,86,223,185,162,121,132,135,0,0,0,0,0,0,0,0,23,106,21,0,189,109,83,186,217,101,131,110,25,86,93,123,88,215,142,143,135,216,8,88,0,0,0,0,1,60,66,177,56,59,25,190,25,245,22,7,125,181,84,150,222,157,33,226,126,106,97,50,91,195,7,0,60,162,131,208,173,5,118,98,1,187,153,164,22,115,248,77,245,103,125,19,90,226,138,107,42,163,87,8,53,28,113,216,25,116,96,105,223,127,128,24,161,141,193,41,93,213,36,152,114,225,142,207,94,201,255,217,25,21,77,96,255,255,255,255,69,2,0,101,205,29,0,0,0,0,23,169,20,173,92,38,113,204,12,53,134,6,33,58,149,63,13,86,223,185,162,121,132,135,0,0,0,0,0,0,0,0,23,106,21,0,189,109,83,186,217,101,131,110,25,86,93,123,88,215,142,143,135,216,8,88,0,0,0,0,1,183,122,228,80,90,123,125,162,181,87,2,8,199,216,116,129,58,79,102,245,6,59,229,142,191,123,205,120,19,186,2,241,6,117,64,22,182,200,188,83,32,174,149,109,61,203,139,71,188,248,134,144,149,6,73,44,46,118,129,16,255,118,151,25,156,128,25,118,161,141,193,41,93,213,36,152,114,225,142,207,94,201,255,217,25,21,77,96,255,255,255,255,69,2,0,101,205,29,0,0,0,0,23,169,20,173,92,38,113,204,12,53,134,6,33,58,149,63,13,86,223,185,162,121,132,135,0,0,0,0,0,0,0,0,23,106,21,0,189,109,83,186,217,101,131,110,25,86,93,123,88,215,142,143,135,216,8,88,0,0,0,0,1,6,86,76,153,129,50,230,117,215,110,160,88,138,249,153,172,82,144,106,86,37,127,203,149,123,85,241,6,140,155,220,103,7,94,67,106,212,147,181,132,249,68,115,120,61,248,75,163,195,244,202,210,36,30,228,90,131,17,149,97,249,0,99,98,9,128,25,118,161,141,193,41,93,213,36,152,114,225,142,207,94,201,255,217,25,21,77,96,255,255,255,255,69,2,0,101,205,29,0,0,0,0,23,169,20,173,92,38,113,204,12,53,134,6,33,58,149,63,13,86,223,185,162,121,132,135,0,0,0,0,0,0,0,0,23,106,21,0,189,109,83,186,217,101,131,110,25,86,93,123,88,215,142,143,135,216,8,88,0,0,0,0,1,80,142,229,128,159,99,48,200,107,203,149,179,3,169,65,170,234,56,235,173,107,234,108,106,16,127,27,208,10,168,102,199,8,38,218,183,136,113,74,66,227,30,63,174,104,53,235,12,132,33,125,97,219,238,209,17,221,133,204,30,133,172,125,133,61,128,25,118,161,141,193,41,93,213,36,152,114,225,142,207,94,201,255,217,25,21,77,96,255,255,255,255,69,2,0,101,205,29,0,0,0,0,23,169,20,173,92,38,113,204,12,53,134,6,33,58,149,63,13,86,223,185,162,121,132,135,0,0,0,0,0,0,0,0,23,106,21,0,189,109,83,186,217,101,131,110,25,86,93,123,88,215,142,143,135,216,8,88,0,0,0,0,1,120,202,218,142,31,103,58,53,66,248,50,230,18,178,58,57,161,252,164,113,78,117,204,25,136,68,76,159,7,217,181,126,9,200,19,215,76,101,33,237,244,37,156,253,13,0,246,14,190,131,233,213,245,217,217,241,228,211,162,91,4,160,114,178,8,128,25,118,161,141,193,41,93,213,36,152,114,225,142,207,94,201,255,217,25,21,77,96,255,255,255,255,69,2,0,101,205,29,0,0,0,0,23,169,20,173,92,38,113,204,12,53,134,6,33,58,149,63,13,86,223,185,162,121,132,135,0,0,0,0,0,0,0,0,23,106,21,0,189,109,83,186,217,101,131,110,25,86,93,123,88,215,142,143,135,216,8,88,0,0,0,0,1,140,77,36,251,12,199,214,252,11,170,253,5,13,116,192,215,57,73,204,215,118,110,126,57,186,48,81,117,123,192,179,207,10,252,143,223,42,59,4,118,169,202,196,238,56,199,3,167,146,39,47,56,189,181,179,88,9,114,163,43,105,99,254,16,254,128,25,118,161,141,193,41,93,213,36,152,114,225,142,207,94,201,255,217,25,21,77,96,255,255,255,255,69,2,0,101,205,29,0,0,0,0,23,169,20,173,92,38,113,204,12,53,134,6,33,58,149,63,13,86,223,185,162,121,132,135,0,0,0,0,0,0,0,0,23,106,21,0,189,109,83,186,217,101,131,110,25,86,93,123,88,215,142,143,135,216,8,88,0,0,0,0,1,174,139,153,80,138,252,127,111,115,236,193,4,49,40,211,175,145,89,110,83,154,250,95,213,75,107,136,21,107,249,228,211,11,149,8,79,55,134,147,30,11,190,76,0,186,217,184,168,203,246,21,149,28,104,150,215,222,88,118,49,159,19,97,26,229,128,25,118,161,141,193,41,93,213,36,152,114,225,142,207,94,201,255,217,25,21,77,96,255,255,255,255,69,2,0,101,205,29,0,0,0,0,23,169,20,173,92,38,113,204,12,53,134,6,33,58,149,63,13,86,223,185,162,121,132,135,0,0,0,0,0,0,0,0,23,106,21,0,189,109,83,186,217,101,131,110,25,86,93,123,88,215,142,143,135,216,8,88,0,0,0,0,1,202,153,58,38,34,142,172,188,4,63,182,188,82,109,211,101,132,230,147,163,253,185,175,74,249,39,85,252,31,38,103,1,63,86,175,100,132,20,210,86,140,253,212,232,224,152,236,117,102,154,255,83,61,57,204,147,216,113,13,222,44,206,150,41,238,193,34,19,48,122,74,35,156,14,194,147,243,169,252,248,70,82,224,17,164,230,104,221,57,66,193,158,88,48,251,168,1,1,0,106,9,230,103,187,103,174,133,60,110,243,114,165,79,245,58,81,14,82,127,155,5,104,140,31,131,217,171,91,224,205,25,0,53,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,7,4,168,250,213,0,1,1,255,255,255,255,39,1,0,16,165,212,232,0,0,0,25,118,169,20,14,5,164,202,113,210,103,156,106,192,246,147,171,213,52,219,52,183,170,120,136,172,0,0,0,0,1,238,193,34,19,48,122,74,35,156,14,194,147,243,169,252,248,70,82,224,17,164,230,104,221,57,66,193,158,88,48,251,168,146,144,63,213,20,167,121,214,114,148,194,223,121,205,48,92,167,160,31,127,58,63,218,78,94,77,101,67,26,95,30,136,63,120,28,235,19,228,106,98,7,174,84,105,219,209,11,116,63,67,221,216,24,253,248,21,215,65,146,177,248,60,6,10,1,1,0,106,9,230,103,187,103,174,133,60,110,243,114,165,79,245,58,81,14,82,127,155,5,104,140,31,131,217,171,91,224,205,25,0,53,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,7,4,169,250,213,0,1,1,255,255,255,255,39,1,0,16,165,212,232,0,0,0,25,118,169,20,14,5,164,202,113,210,103,156,106,192,246,147,171,213,52,219,52,183,170,120,136,172,0,0,0,0,1,63,120,28,235,19,228,106,98,7,174,84,105,219,209,11,116,63,67,221,216,24,253,248,21,215,65,146,177,248,60,6,10,0] \ No newline at end of file diff --git a/crates/dogeos/integration/testdata/mock/witnesses/1954897.json b/crates/dogeos/integration/testdata/mock/witnesses/1954897.json new file mode 100644 index 00000000..2377da6a --- /dev/null +++ b/crates/dogeos/integration/testdata/mock/witnesses/1954897.json @@ -0,0 +1,87 @@ +{ + "chain_id": 6281971, + "header": { + "parent_hash": "0xc166886d31ea3a4f665b67a7d8f7552954007c4866f9701243d83d6584be5900", + "ommers_hash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "beneficiary": "0x0000000000000000000000000000000000000000", + "state_root": "0x212a0b535c3dc550ed964874154d2888a805d17745b53aeee2172de30264ea53", + "transactions_root": "0x65296f307760681b85df9e37b7343a4f42f7d7dbcf4712259c8710484b80e09e", + "receipts_root": "0xf78dfb743fbd92ade140711c8bbc542b5e307f0ab7984eff35d751969fe57efa", + "withdrawals_root": null, + "logs_bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x1", + "number": 1954897, + "gas_limit": 10000000, + "gas_used": 21000, + "timestamp": 1768291197, + "mix_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "base_fee_per_gas": 15680008, + "blob_gas_used": null, + "excess_blob_gas": null, + "parent_beacon_block_root": null, + "requests_hash": null, + "extra_data": "0x" + }, + "prev_state_root": "0x73a29f3f7c6371217f3783e6f519c17a1aa3850822fc8971fe3cf15292423134", + "transactions": [ + { + "Eip1559": { + "signature": { + "r": "0xc18bd7299349aab59b94f789ecd7a41fd3979d93b912bc3dfdd792217b10e75a", + "s": "0x6b59fab33753fcfb6c901d2f6ad038315163f51dc0c94f83432bcec8d30585f4", + "yParity": "0x0", + "v": "0x0" + }, + "transaction": { + "chain_id": 6281971, + "nonce": 1538281, + "gas_limit": 21000, + "max_fee_per_gas": 31360116, + "max_priority_fee_per_gas": 100, + "to": "0xbd6d53bad965836e19565d7b58d78e8f87d80858", + "value": "0x5f5e100", + "access_list": [], + "input": "0x" + } + } + } + ], + "withdrawals": null, + "states": [ + "0xf90111a0ab3a9ff85cb677b08f21a6598bb5b4ce0cd20a17df248d6aef2141e8c70a159180a05e83f37c5ee25c24be1bd18131d530e70ed5745127cdcb6bfe304dab045d12e0808080a0153f45918e0419ce0d46d9d799ac190f66b2ce0c991e8ddfeb2fbed23252bb5480a0b4913e81d4d65b898fd33855cd20cc3d44e495af5d130ecfe54b7f344646159c80a05b51f6f0bba78fb258af7a13f34a0e57030eb7931591ab46fc0758fce9262635a0b28ab1f66b23b921f5e63871f99eeb43b762ab3ad30299b3dd492c52fad17b16a008343d936c265af66752ec0287199d769104c9b00eb6f05b8e76f5103b16a8de8080a03a1e44d3669992d3ac3f750a1159442ba1d83432cb03e5815d7eed7d97c7e90380", + "0xf90211a0f5509071821d2953b53448397715aab3c8436b35cc877e14ddb459a25ab3a690a0cf4e4309d918247c448a855ad68815523f8378eeb9a6ba76e8955bff70c41e1ea057719378e4b79aa26323d6c8cb99a40bc6030858b96f2981ff100af3ce1563bfa021a6862e266086afbef5f65b5b93a39251b4d21c450ce78f586bb6de170fa42da0166b890e9a4fdbb3df4a8e5fd2851b16e78192226da7e35122a5fff3fef4923aa03e860edf66403d134ea6f254e5b983f34575d1ccfbcdb6c6d332b45da5ab7207a0c3d51113c1009a5bc0e82011023ecb9c35ed69a20fda9c60c105d60c55a9c8cca08b7ac054986577b1ea7a37552cd841fa57b1e76123ad89e1a3eeb5b029df2a06a0c3c034c0abec19053c7d8992366e07e5a58c32620ca0258c1a196eb45173ac41a095707bb25b4f2c902d2ee2749673b6a15f4e4021fea65b96cb73f6df9f50f003a07d69fc3f999bd014c80d622ad394073eca23b51bc827c6e07bc438f0c6af32b0a0c1dc2878cb8f48caa914e989e2c48352c565f06c9a6729dccfd12407a8a0e268a0f162812d002050ffbccd5d22907e9c3022227e16c4f863ca66e7b5260f1f5e03a0938755b85dad2e9f473d24e3555244d6ec01e91dc5ffd7fdd2e5d899d46ddc6ba07b85a5161815b739a0e6fe6c6e12bf600af6b6aa406e4a4c1dbf3ee88db2a3e9a0306dbf2a7ae616d4aa59e0b705e1fb7e9bb32d07a74fd851c5b01719235d089080", + "0xf901f1a007e6847fa2d2cd2c98f2815e6db3ddf3756197253ad38d9565a96dbd7cc9e18ca0426464ec4c52e8f795606f47bfafbdfd32c49b416cc505e6297e1a846af1f2d6a006782b264c154ea746b56982385e105748d5558e317d72cf9187523409b534f0a07b972c299c9c21a3e79b5389063b0190259fe83e68626abe4d4371dd6f436a44a0758cc9bace2594dcd656ff1adda80d3cbf6bbf45f573012a31777c153412b724a0f8a87e5af6615d1532d2d9a5d79b4e476f68aa1002c54f59b0160c780308cb3c80a0f2e08b944fe8e9c9f7130b44a6104d87d82bbc5ee1c9fec405ed44772f5a5255a0566c42c41070eff96ba4dfc12cbbdffcbbd9391bbe4d864abe59e9de2c568021a0e953802b568950f350fedf3407dcf23b94094ae8573dbef4bbc218d674f093cea019e7cb85e6172a03ada7224adf82803511c28daf6207087fb59f89cb1aea6e89a0c3cad5b80c5fd08f5309fb32215bdbb8472ade4b8dc46b5f99e3b84f4ef794c7a02c036c1c729a5cbaa516e5812251316d4eb8c98374982d3fb140286bd59e53baa0bbef236720a8f06196367f0331e0b23db841bc9d2a5a06d41b612780b2eda2d9a028007d781cd72dea5f3d17588dfc45bee048bd38b9f4088651b1b141c62d06a5a0b5c3e95b15a2a83e9b2b64865c8b3e3e373de6fea8223d0a5e1a19fd0115f62280", + "0xf901b1a0c2bdaf92f8789e069884944e0d71e9e5302d5f4fe86c40d7ab9af3fe9dd1b545a00970f8c291e48e0dcadb73fd4cc38c9dc3bb3a25f018d3f44ced90a1fae74ddca05f3a440846cb5af6cdd03876513ef1ffa999a3a9483bcea9b7051cc498d83019a04e226bb0c56691c5b82d3a192d0af65cfa3c5e1ebc3c47f68eaefced2aa568a3a035eec27741ba7764afa456a85bdc65bc510a6c8273518be9eb0ce3b9a9d423a8a025491c44e3ae091041da72bb8cb8d33b7779163a57a512296db6a47593ad02e6a04e6697d61a9c209018c46128c44c2cbe822ea37500fe3b934f830e539aed190d80a0384e3b0d16b0970a893a03dacd1b024985954547a5b3769d6a0f1d60636c88e880a043d5fb86980bbfc5460b0938adc589871389739211d85d0570ccbcfd2c171c7ba00dc8270cbb549dac6de82daafe026b7697605e09b3bfa8012bc65b844221d318a0723a346260f388d53dc4f2f55049db1ea5c24fac1430abe9429c25d34cf225d780a0a7ec548f44d0fbdee110fdf7471fc240fd22cb61e01ac4fc3cdf7856dc456ef8a0f2661e61e51eccbe8954a064d489cd0a9692f53346d6c0d67ce0ec4abd68b32b80", + "0xf8918080a05e83f37c5ee25c24be1bd18131d530e70ed5745127cdcb6bfe304dab045d12e080a045f67c10f31ff0dbae7fdaa77d37a3e5d5a0bd2c2cd9c8ce81dd5c6c0e82ac2d808080808080a08b3e62d681a232ce1f762048efee3ffbb3d62f2768dc22dec53fd9ff92d31a40a01b56cc0a5b9b1ce34e9a14e896ea000c830bd64387573d238cbe3fa24ddfa2c380808080", + "0x80", + "0xeaa0310e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf68887354a6ba7a18000", + "0xf90211a05ad4596d0b34cb6f4fa49d3f4858e221ea40fe6ee95b023ddd2f20a84993d31aa09511df1439b7cc0c4c2446986a27f14fb2e99854e33a9335842cd9bdc0a05d03a02c3ec7095445261447d62b3090c7ab8f44ba0ffa31e901ce30deca786cd2683fa0484e55fec4882431858390423bb83e27f2e3535cf778ae9eb6647f96f0fd1d8fa03373c05e988ea27482b527be1f29f338007dddb89fe849b8d548558f9c92ce27a0bf6437945186987c41fd50f09718757d5aa90664c3186fd4e1bcb74ff53e6571a0810cb702b317de5df3392f42e035d3aea334c04c62011b86d866b542db1ec3c3a0e55cb96b59d2f8ee8a77e4be8ab7ebe4afab4cd587ff8cf3c33aedc4ea472ab4a0d13677b40982f18200fa0f0e4c2a5492e5cac215a03539e104a09de9511e3a02a00834a79ab69b39e03fdbd1183139ef77ebdd8f5bc52e377e02f7e5b35bc0fa59a08c9e39723dbd8335ca575663658a3284bcf8453291524d2e88466d269bba1724a07b80055d63b4023bd0ea54fb24419bbe1eab7d8e02d1e4d5555b239e6aab7ea2a0e021aabd198bd1ae8e5ebd7c8c6fb9f7658a079c6ec5937befeed927073e6b5ba03c6b2840d1e29b0ebc874bff109e5073ba7ae23b234538fad7201a63e56b49d1a0c109258bccb138c2e6877a22ce62c79c75f180b4455ba0e260e36ebee523fd88a0f126588ec337daef140cc6584c220724e99f5ef24d1ade8f9e26840b3d920d1580", + "0xeaa0206b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db088874c98942cc7807c", + "0xf90211a02ecfcb614281e7527eae3699951841668a21a72e3ae2346b9506cef8cb1abbcaa05f56a45cb7f8085b63dc83505db0029b87a46f6c4ddcb6b69a38d3f481680ce1a0a4c5ac32df7086888f58cedc01d5f3525cdedd60b24a728d42d70166a95f43e8a005851c3eb33c46b68b0c55ef24ff0a4357566a3fc70b38cc1602eb23a8e966a2a041227766a13b4b9beef7532aa1f9dc8dba6aed0eff0443c4fa059cd6d3b932c0a01d8a532ce1e9873ec8683def2787e709ad28188fde9c409196db94b0da33f774a07e8c3937da3bdb8fcb48be528fa0e2fdc55bb2213a14bb1b6abdd085a46745e8a09373128feee1251476a8eb8d6242742f0d77d4722c2606c25a8625e682021cb5a04d7fa922458a189c1ef806d767da15ed8f1e6b875b043d7c2919988fbc14c5aba08a45f3e42358d9c1aa276944ec7e37aa4ed14b7f062bfb477c33905c5e785ddca00264966b1c344075d39e88e3aaa16fec29efcb3ac40aee67115b2fdd97f59289a09c402ee4e11e8716b83d5055097803776e6d2c1d95f7cb7c815aa7da89afaec0a0ee04a3f387e6b1998ed2e227529784860e36dbe691ae395eb901b127f580f7bda02d308482cae48dc8ceb3e47b1f7d20aa23ec250e7ca089f49f9da4bc8eecaad5a001005e4e6aa49cd120f26cd463a3c4d8a8223379ffefc3172e904a0ed53b555da077caac13e7a97c476c7373992b77507777787008fb105ff593b62f0dd34c9e4080", + "0xf85180a0f7f39013c4759f2594dac138beea31291091e113c4d5fc601554651cce42cc8480a0f0a3fd478c879f539d376b1ee7194d2c86403872a1bf5e1ee968f757a96e7ce780808080808080808080808080", + "0xf90211a0e30a11a4047b518f2ff173ed1d41c9919d2b096cab22274fd344c5f5650f2d96a004a290121999196b53a361d2301951656b61175406a901fb75894ff7a3bb842aa060576a90aea068cc7a19258fab3dca30d8c48b5113e6a4447ed1f3042a391b73a0d0a507068da21e1d996ea023a2e3a7256e5d110dc9f10e76b63787d71cc53261a0236b167ce16b76010a0f240cbf13fa38af20505aadacdf01bfe5ac38d94d4cb2a0c1b64f0e82d4f8416a95e0fdb82bd82db85139a85bfb05b2f28bf1be9c3228a5a0e110fc9634d79735286b7eff3705423407588d561d869dcaaa8c14d94c6de39fa0d1ce5369aef0d08f55958a65228e04230a24e03e5b02c7780b6f60af49d42887a0dabc3dbb710d7e85b90f27470d9227c0e5b5c972deb0d81ad2e96457772356a6a0f59d6a6e73e94eff96b631bab38ee5e177345ba08a9dcd42e98de6a97b1817eaa0d1a776ba047724f2597477d08836980b5e7a99b797c100192dcabd6a6fd53ab0a0e15e2f11193e51da82fb3e9e05bb24dcefd35b74b23ffd49a90541903efbbc54a050f794672ffdc16d34b195a11f969699d9003746f28fe97a87110062efb3ff98a0b74a89d0afd42db27ce02fa743f263c9c28ab41da40df594bd8d72402f9e490ca048e5bd174947369c02fd23069b8f0955a3f20cdeea44efee2440e2e8ef6c9b19a0ffff55b1389467ea7150e67f8232684713dcf5ec70eca9712a557c7d429717c380", + "0xf90211a09f291503fb30c613acdabdb400e4315cef9b6a0aede93cee533577236cc038cca0c8e2f599a1a694881a3b82e85ee0c16690b92c7f0ff0ddaad74892599f9cd733a05d41db9e34d54ec18e79bb6a534bcd6477bd4ee739244a92bbf28656fcfb7690a050bbf28a73f6302ce806363111babd441256a859d8ab1fd18d0920a37d56f815a0f91ff12e5fa64ed690a87b3bf988191de3eb547832aacfc836e7fd1476ceeb26a0caa50c03e05d7ce440da6983584403b1e2ca7fc52884a94691d4594a4f07a465a0e0956477e27c07301cdca2543c2826bab808d840faa6ff4904bc69dc61868047a01a3033f2c18749291097f4d90502a91049fb8bea0920759547d50df80ebf5314a07ea3f354d2e5b343a27664ed4bce54844c0a56a2207ea3d49d8c93b16d6bf37ba05b119d7f9548aa3c4c60700de4cd2aaca108f2201c704b6a3daab732103e9292a0324e739baf20b992c16571aa26943d0bfa07cf3028661495488be20493d78f2ca049281241451330e878818a1e91c03954f950498e41b1948e7e6f1b3634c6d122a00ff3a1be5145b68e1816eb1b3b2090afe0d16292049262dc45f10d7ae3091e9fa035f04392cfe617fe89e3fc66c13c66969b57519b9354eb35837f5e738185752aa00a181f2493be700a059126e89062aaa0f3b3a646e31659bdfafd4e614c172cafa0578d970a7dc595513f80f8bcc9711e864fc8cac6262132617d0d79d736b783a780", + "0xf90211a0e4698f142021650e83ec717acb9ef3b594e04c6c3ccf76382cf2d6de3116eb29a0fe41c84e9bd47a76ef95785cc7d8a51df696906bec8b00af53258395bde4daa4a04c023ea024ab500507e6048147af482cc4fd27cfc30d9f98dc5a530b5ee81cf9a08093b98bd936e38f18e21fd4e59e3a2dcefeeb8b930ad289bd17e75c42feee40a0d1f16f44b1693ed24e7c7acc1ac952622815887b84c6b8bf3fef1e21a05a96aea0430d6b7cd74fc0115a482ec500a8feb541f0b190dc7321a5f3720f161f1d2c2ba0941f74273b91da9f25176a6d308f64d6cfde2313cbae48e868fbe654097150b5a010de7c417e7f7287842a185539a0feb2c0b6129e8c9197ccecbf36f6f2c96ea1a04464a4b6dbdeea3d0843961c9bdd5426b9ce7298e10b16d50640f5f060ea0124a0e19b8ecbe831e580eac241b3081d3a391f2816611b9fb8e1e18c2d515077a3e9a022db10a7636342d829d9e99e953e913785e91101564dc8de751f1674ea7caed1a0930757c56cc42a2c9be3e4786280991ba53f442f60c973daad8f9fa65c1df3aea0345ff6319a1f15ebc470e6d97072b2dab513f8731fd0c9f04f7c27d6fb6f9e48a0d0ed0275edcf59f7f8712ee39cf8d6cda1624749f195d54a6d463858e5f0d8faa04faf04df19efd126fc5c047ca73c62e4e32a7593456e16bf898731c4b8bb41b9a09c0790bd47ac5eacc2bc9875b1805e4a84a2c3dc4d4c914d66b64f5cd2b7927c80", + "0xe7a03e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af85845a5c1cf7", + "0xe2a033f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee301", + "0xf843a0390decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563a1a0f4a8a8e2bb702f2d70b37980db23464c825963cd5f9b564bffd64d068af11fea", + "0xf90211a09201c74c24041280362dda0be8bc14e650ba82fbc10a6aace00ff44756058a60a0285457ab527241ca4a496143029581cf1b9397d02d315971c48033b2ccd90fb7a0909928ee495c97867cdcf54d5c39dadd5c8ebe04c6b8137b426b8cfa66b5c23ca044864d18f40a2c96b3a48aefa509aef6025f4eb85bf213c90787754fb4123a07a0e7e5c213c06ac09250c6c180d82c724b5567c4e708c56c3b816cf1ba5b8227e4a015ad5a2930a1e81a87855b8a1d1326568e9d31296763b8e419c06e56cbfa2fc0a0ea02823914ca63754eeb95a453db378078518bb15a2827cbc6c9f005a3f257f3a04073633ce55a4b07b931d4bdba524aa0f2b3aff89309f09a641159ef9232ba84a0ee60a3b95cde67a0840e687d7fa5d6c05fe4dbbe07de58485a47fae49e43084fa03a0ebce3548e224e6740a711483e08e7d174439849b3b976e45cc786aa02da30a034222692022a088c46d960cc9d9de7e034ca07f4a9e90d8f7511da1424c27c04a0057b1803d7da79975b89ca24c17f254870258e550b7926a3b489e703bd80fe8ca001f3fb2aa754514dae5634d380954cc22d216482bc491a014cefc99f189b84b1a08bb6c82c4ef9546b0ce50a7f96d2e4078f7e918c8fa36a750d6c43d9fbf70ceea05fdababcb3b8dad032fb01bba6dcf5545b67ebb3744d008cde77235fdc645a72a0394df08d6e6a39c1bd3dd234c05b7d52f0c9da0160be1496bceae0bc07b0340080", + "0xf901d1a0ec4c83b46c0f99b26969d4f1e51948e3cb4c38b6d8598b77b5edcc83d82eee8ba0d5835cdfb5e80181e6fea501a472f9cde188a3e456d2cfd7b36560ea557ce29da068c2e31725e0fdf0b99986159e327e94861a02779191d6fd6220f948da37bcfb80a0d0249c5f9b75582cef41dc3045b0cbc9f2d935f4e9d7cc6ea09b0d6dc24d7041a080dece500a026b1f877658925fe64a340c531927dc2ca4b55337177757c7a995a0eeba0dadb43ef6d6a97521ad89a9b6dd39fc4759beb20981eddc16609bb7cc5ba002698e2421f183802ee7502dfe55061108de353b5bd0d84c152817f151ec29ac80a08c7d710c3031d823bfc41667ba41897fb2d7db977dc6730988a09b2ee2bda687a01f24aad38848389cd81076c8dc503100eb765d4433678fa56b17182d52abf723a0bbcd665af63be1ff1ebdff26f5621d71212ecbac20227bda119db6e0f4334645a0f0c3c7aa40c83ef73aea49289ff1333e4aab579cce8b71a15875586082bab8c7a061b3aff0b184d8d74e1f1f9c557b2e460a8072110d3f7eafd787ff77f5b5c182a0747be07964880fec7545a09da6b17779caa4bc182bdb052207aa5e03e3ed262aa058d8dc342be17061da710b897b1bc398d414dfd53023c08ebf93a388b949a75180", + "0xf8749f20e8aabb1c0290e3180045ec7a750c8328837c76ce9124464236c92568c0a7b852f850831778e989046c8b3ab8ce934a2ba056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a0c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "0xe6a020575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b84830e535e", + "0xf8518080a08ba1c6cd6ec16293f448cfaf602bfd2610918fa18a527d1e92f55db4820fde84808080a0178648afa486d4f09b64cafc7a86f65858d830305b9e7a7e0fb8ea1226afc47080808080808080808080", + "0xf8689f2067596300e542c7cd2a1c5fca601da42a2739f790ad422b4f59fba0844e61b846f8448080a06e5788ae657ec806d12408f8bf8cba8c56c0d70b52dca38dd6a82762a6709b01a0dc3a5ee2e8f8bcfd3a6ae7d2b5f38c8bf5c77b9a3fad31aa5dfe1ffed7aad50c", + "0xf8719f2084cdcd164a6b73972dc6625ecb078be7e607b54459f3edfaada99be20644b84ff84d8089080744f7229438ece8a0fccb2010eacc7575952377d2750afbe4f1da5ef4b075f1c307ac91cd918b5a7aa016c283a285466785d9df98d63618dd1640392d6dd816a845b7750add4ef95569", + "0xe7a0205a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a88584878a2b73", + "0xf871808080a08a470df0a03114138e000bad5e556aa277095bdf9f7d38bf87d12d491ed7d0ba80808080a06a048a1ccdddf49605730932b0235c39c0ae3aa35a2fdacaf4910dbcf42c1e26a0e52a6b14d4a5f25876aae04ddce6dec0c6952c3d5eedb04f579b19efe7783a2580808080808080", + "0xf871a06d003e0083b467dc0022754a5af6d5374628219f83ab4004d27bc46f313ef940a059ac0deb3d5c2956f3d2b6db62cccdee1272d6ad01e8dedb78ca5aa1af8b6d8880808080808080a0f2450d8b1cb6c55122230dd957099dd5789e0bd0b156b572e516b4b435ae3f1880808080808080", + "0xf901d1a0862b2cd38abed49ba009ccdd12b3d338efde74882d23f366f7ef99d988ced764a0d91ea1a7e8e2e92c8a7324a18389e6cf97460cfaa3ada0fa9cac6335f725502da0ef6dc2a2d8adabffe8570f9ecd3174eb463353d1c2b5f7b21a91d8f809e2403ba0552392ca52289c429edc9699c87ad860bf730945aad9e8a14597e1e26fdf3031a098dd35a7d26c1cb4911013bcdff58746a598472b0c86a342600dc8e264b22550a09256f4c002bad141c906ca01917cd52551748b3a2b1ac6213330e69417663fe8a05b9c805d3342e0e5526a6b52a00cb492462aab1630910b0bc5311613f9db0550a0172d321fbe1ba6a800c2add7ddce4a5c424b4ac40181f1d91c2aae32db2611daa030c69424b2d54eea930074993dbcb133529e8c871f3586d2a884158d3ee2bf9c80a08a73a1d9c64aeb3b572e4e9dcc78d184c2afd494a89193064aea97c09d59739ca0cd95edbee3ebb2aa3e2df8b01b56c5600b75ffcea43729a4393f00c5d4b0dc7280a0506b293ee3206672db4f1d39a62b59ea83fa6833168168cd8b6bc76e0fb1092aa083aad9ff5e9c021162f8088244c00f362b0e0e81b443855c84eef8b156f435daa0bdbf07b012e80f0caa974d4ba1d03897f9998ecab874a94d2d23d29dee9374e180", + "0xe2a02075b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db901", + "0xe2a0366cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68812", + "0xf8689f38a0b8246d45a5a396db3b461bf4a56bd646d9274adeadb5471dd31e30574fb846f8448080a09bfced3b6805c7fea0c69cac7a6b8014591be7fdad9ef87904c60ebd5b181efba0c0be97aa0ca343d23e56a121da166078248b2ddd5f5c4886213c4d236c0ce9d2", + "0xf87180808080808080808080a088a948324f8827eedcf6815f745228dccff61c9d70734d53d20a40b13abf268d808080a01a6bc9281a5f5c0cb11ca2c2c30d8f1c93833c3819a2a5e5e6a4858e82572579a0315f98c83a74542d4bebdc72bc3be38b9d6f8111c579fa02ba59ad00bdab2d6180", + "0xf90211a0475ff234661c2332e54b0c7407308108b0adab517dbc3b8a693c34e55459da66a08105b64d09bd50de3e4f966dd3f184c688c2aabcf7fe655412371028be73fe46a069df1830f03a4eec091d9cfd9a67c39fc962f2045a861e38d31fe57709b10e75a06b2fed0012ad9c6a49229b896f314342c8c03a3eee580d98b9f857530edf37e2a09a5b05cd78a7161c6122a8d8868bbca29980f609a929250eabdc975ac95684b2a0f359f7a23bf5e63a0c61a3993d23f2aa7f841921958d9777fa3aa7451cce6eb3a064c37c95d08393aadccd7f9ebf4ff84d82ee60fdea900450f932de039707a93da0422e195027bf8b068a651da5478e23d9b1f010816b9242b255ae23da5980bf0fa0032e297e0ab5273177c7cb56b56d3456988a2b0fe5607463368952e9ba8c9725a0bfc3c3dec3138420d3b467c22c732e036d543f8dc7c3ade46289637ac3209de9a03c6a22fd929cfbaea4c6edda3407ddd13910bb1a0e7f061599ac803a68203a4ca039f53b669637039692ed192cb4ae65df9723393d675db322468602b8b809f4d9a08193080c729f5fc360fdbf17d86a43a3831b2a1d7f0702427d40c7a04138ebc0a04dfa728ad3771cb96ebca55104c6a5fb59512378dd2253fea9eaa51c124fb1e5a02a5d29ee9c51f5ae567e11a9dc43e84aa47596cbfc44575b0d3fad97716523d7a0e375fb51b533b1b118fccb8bcd095a9737abe204fa625998242805c7b930b47780" + ], + "codes": [] +} \ No newline at end of file diff --git a/crates/dogeos/integration/tests/batch_circuit.rs b/crates/dogeos/integration/tests/batch_circuit.rs new file mode 100644 index 00000000..e8d306b6 --- /dev/null +++ b/crates/dogeos/integration/tests/batch_circuit.rs @@ -0,0 +1,45 @@ +use dogeos_zkvm_integration::testers::batch::{mock_batch_witness, BatchProverTester}; +use dogeos_zkvm_integration::testers::chunk::{mock_chunk_witness, ChunkProverTester}; +use scroll_zkvm_integration::{prove_verify, ProverTester}; + +#[test] +fn test_e2e_execute() -> eyre::Result<()> { + BatchProverTester::setup(true)?; + + let prover = BatchProverTester::load_prover(false)?; + let mut chunk_prover = ChunkProverTester::load_prover(false)?; + + + let chunk_witness = mock_chunk_witness()?; + let chunk_proof = prove_verify::(&mut chunk_prover, &chunk_witness, &[])?; + + let batch_witness = mock_batch_witness(&chunk_witness)?; + + let stdin = BatchProverTester::build_guest_input( + &batch_witness, + [chunk_proof.as_stark_proof().unwrap()].into_iter(), + )?; + let _ = prover.execute_and_check_with_full_result(&stdin)?; + + Ok(()) +} + +#[test] +fn e2e() -> eyre::Result<()> { + BatchProverTester::setup(true)?; + + let mut prover = BatchProverTester::load_prover(false)?; + let mut chunk_prover = ChunkProverTester::load_prover(false)?; + + let chunk_witness = mock_chunk_witness()?; + let chunk_proof = prove_verify::(&mut chunk_prover, &chunk_witness, &[])?; + + let batch_witness = mock_batch_witness(&chunk_witness)?; + prove_verify::( + &mut prover, + &batch_witness, + &[chunk_proof], + )?; + + Ok(()) +} diff --git a/crates/dogeos/integration/tests/bundle_circuit.rs b/crates/dogeos/integration/tests/bundle_circuit.rs new file mode 100644 index 00000000..c7f7d0b4 --- /dev/null +++ b/crates/dogeos/integration/tests/bundle_circuit.rs @@ -0,0 +1,56 @@ +use sbv_primitives::alloy_primitives; +use dogeos_zkvm_integration::testers::batch::{mock_batch_witness, BatchProverTester}; +use dogeos_zkvm_integration::testers::bundle::{mock_bundle_witness, BundleProverTester}; +use dogeos_zkvm_integration::testers::chunk::{mock_chunk_witness, ChunkProverTester}; +use scroll_zkvm_integration::{prove_verify, prove_verify_single_evm, testing_version, ProverTester, TaskProver}; +use scroll_zkvm_integration::utils::metadata_from_bundle_witnesses; +use scroll_zkvm_types::proof::OpenVmEvmProof; +use scroll_zkvm_types::public_inputs::dogeos::bundle::DogeOsBundleInfo; +use scroll_zkvm_types::public_inputs::{ForkName, MultiVersionPublicInputs}; +use scroll_zkvm_types::version::Version; + +#[test] +fn e2e() -> eyre::Result<()> { + BundleProverTester::setup(true)?; + + let mut chunk_prover = ChunkProverTester::load_prover(false)?; + let mut batch_prover = BatchProverTester::load_prover(false)?; + let mut bundle_prover = BundleProverTester::load_prover(true)?; + e2e_inner(&mut chunk_prover, &mut batch_prover, &mut bundle_prover)?; + + Ok(()) +} + +fn e2e_inner( + chunk_prover: &mut impl TaskProver, + batch_prover: &mut impl TaskProver, + bundle_prover: &mut impl TaskProver, +) -> eyre::Result<()> { + let chunk_witness = mock_chunk_witness()?; + let batch_witness = mock_batch_witness(&chunk_witness)?; + let bundle_witness = mock_bundle_witness(&batch_witness)?; + let bundle_info = DogeOsBundleInfo::from(&bundle_witness); + let expected_pi_hash = bundle_info.pi_hash_by_version(Version::feynman()); + + let chunk_proof = prove_verify::(chunk_prover, &chunk_witness, &[])?; + let batch_proof = prove_verify::(batch_prover, &batch_witness, &[chunk_proof])?; + let bundle_proof = prove_verify_single_evm::(bundle_prover, &bundle_witness, &[batch_proof])?; + + + let evm_proof: OpenVmEvmProof = bundle_proof.into_evm_proof().unwrap().into(); + + let observed_instances = &evm_proof.user_public_values; + + for (i, (&expected, &observed)) in expected_pi_hash + .iter() + .zip(observed_instances.iter()) + .enumerate() + { + assert_eq!( + expected, observed, + "pi inconsistent at index {i}: expected={expected}, observed={observed:?}" + ); + } + + Ok(()) +} diff --git a/crates/dogeos/integration/tests/chunk_circuit.rs b/crates/dogeos/integration/tests/chunk_circuit.rs new file mode 100644 index 00000000..3ffc1928 --- /dev/null +++ b/crates/dogeos/integration/tests/chunk_circuit.rs @@ -0,0 +1,23 @@ +use dogeos_zkvm_integration::testers::chunk::{ChunkProverTester, exec_chunk, mock_chunk_witness}; +use scroll_zkvm_integration::{prove_verify, ProverTester}; + +#[test] +fn test_execute() -> eyre::Result<()> { + ChunkProverTester::setup(true)?; + + let wit = mock_chunk_witness()?; + exec_chunk(&wit)?; + + Ok(()) +} + +#[test] +fn setup_prove_verify_single() -> eyre::Result<()> { + ChunkProverTester::setup(true)?; + let mut prover = ChunkProverTester::load_prover(false)?; + + let wit = mock_chunk_witness()?; + let _ = prove_verify::(&mut prover, &wit, &[])?; + + Ok(()) +} diff --git a/crates/integration/src/bin/chunk-scanner.rs b/crates/integration/src/bin/chunk-scanner.rs index 3135fcc9..971ce400 100644 --- a/crates/integration/src/bin/chunk-scanner.rs +++ b/crates/integration/src/bin/chunk-scanner.rs @@ -10,7 +10,7 @@ use scroll_zkvm_integration::{ ProverTester, testers::chunk::{ChunkProverTester, exec_chunk}, }; -use scroll_zkvm_types::{chunk::ChunkWitness, version}; +use scroll_zkvm_types::{scroll::chunk::ChunkWitness, version}; use std::collections::HashMap; use std::{fs::File, path::PathBuf, slice}; use url::Url; diff --git a/crates/integration/src/lib.rs b/crates/integration/src/lib.rs index 138aeb63..35111eb5 100644 --- a/crates/integration/src/lib.rs +++ b/crates/integration/src/lib.rs @@ -1,7 +1,7 @@ use crate::axiom::AxiomProver; use cargo_metadata::MetadataCommand; use once_cell::sync::OnceCell; -use openvm_sdk::StdIn; +use openvm_sdk::{Sdk, StdIn}; use scroll_zkvm_prover::{ Prover, setup::{read_app_config, read_app_exe}, @@ -50,7 +50,7 @@ pub fn testing_hardfork() -> ForkName { /// Test settings (version). pub fn testing_version() -> Version { - Version::galileo_v2() + Version::feynman() } pub fn testing_version_validium() -> Version { @@ -362,9 +362,9 @@ pub fn tester_execute( .iter() .map(|p| p.as_stark_proof().expect("must be stark proof")), )?; - + let sdk = Sdk::new(app_config)?; let ret = - scroll_zkvm_prover::utils::vm::execute_guest(app_config.app_vm_config, &app_exe, &stdin)?; + scroll_zkvm_prover::utils::vm::execute_guest(&sdk, app_exe, &stdin)?; Ok(ret) } diff --git a/crates/integration/src/testers/batch.rs b/crates/integration/src/testers/batch.rs index cc923883..687b293d 100644 --- a/crates/integration/src/testers/batch.rs +++ b/crates/integration/src/testers/batch.rs @@ -1,11 +1,13 @@ use scroll_zkvm_types::{ - batch::{BatchHeader, BatchInfo, BatchWitness, LegacyBatchWitness, ReferenceHeader}, - chunk::ChunkInfo, proof::ProofEnum, public_inputs::{ForkName, Version}, + scroll::{ + batch::{BatchHeader, BatchInfo, BatchWitness, LegacyBatchWitness, ReferenceHeader}, + chunk::ChunkInfo, + }, utils::serialize_vk, }; - +use scroll_zkvm_types::dogeos::batch::dogeos::DogeOsBatchWitness; use crate::{ PROGRAM_COMMITMENTS, PartialProvingTask, ProverTester, TaskProver, prove_verify, testers::chunk::{ChunkTaskGenerator, preset_chunk_multiple, preset_chunk_validium}, @@ -34,6 +36,20 @@ impl PartialProvingTask for BatchWitness { } } +impl PartialProvingTask for DogeOsBatchWitness { + fn identifier(&self) -> String { + self.inner.identifier() + } + + fn legacy_rkyv_archive(&self) -> eyre::Result> { + unreachable!() + } + + fn fork_name(&self) -> ForkName { + self.inner.fork_name() + } +} + pub struct BatchProverTester; impl ProverTester for BatchProverTester { diff --git a/crates/integration/src/testers/bundle.rs b/crates/integration/src/testers/bundle.rs index c957410b..042dc70d 100644 --- a/crates/integration/src/testers/bundle.rs +++ b/crates/integration/src/testers/bundle.rs @@ -1,10 +1,12 @@ use scroll_zkvm_types::{ - batch::BatchInfo, - bundle::{BundleInfo, BundleWitness, LegacyBundleWitness}, proof::ProofEnum, public_inputs::ForkName, + scroll::{ + batch::BatchInfo, + bundle::{BundleInfo, BundleWitness, LegacyBundleWitness}, + }, + dogeos::bundle::dogeos::DogeOsBundleWitness }; - // Only related to hardcoded commitments. Can be refactored later. use crate::{ PROGRAM_COMMITMENTS, PartialProvingTask, ProverTester, TaskProver, prove_verify_single_evm, @@ -32,6 +34,20 @@ impl PartialProvingTask for BundleWitness { } } +impl PartialProvingTask for DogeOsBundleWitness { + fn identifier(&self) -> String { + self.inner.identifier() + } + + fn legacy_rkyv_archive(&self) -> eyre::Result> { + unreachable!() + } + + fn fork_name(&self) -> ForkName { + self.inner.fork_name() + } +} + pub struct BundleProverTester; impl ProverTester for BundleProverTester { diff --git a/crates/integration/src/testers/chunk.rs b/crates/integration/src/testers/chunk.rs index b06ba621..52050fe9 100644 --- a/crates/integration/src/testers/chunk.rs +++ b/crates/integration/src/testers/chunk.rs @@ -8,11 +8,13 @@ use sbv_core::BlockWitness; use sbv_primitives::{B256, types::consensus::TxL1Message}; use scroll_zkvm_prover::utils::read_json; use scroll_zkvm_prover::utils::vm::ExecutionResult; -use scroll_zkvm_types::chunk::ChunkWitnessUpgradeCompact; +use scroll_zkvm_types::dogeos::chunk::DogeOsChunkWitness; use scroll_zkvm_types::{ - chunk::{ChunkInfo, ChunkWitness, LegacyChunkWitness, SecretKey}, proof::ProofEnum, public_inputs::{ForkName, Version}, + scroll::chunk::{ + ChunkInfo, ChunkWitness, ChunkWitnessUpgradeCompact, LegacyChunkWitness, SecretKey, + }, }; use std::{ fs::File, @@ -93,6 +95,20 @@ impl PartialProvingTask for ChunkWitness { } } +impl PartialProvingTask for DogeOsChunkWitness { + fn identifier(&self) -> String { + self.inner.identifier() + } + + fn fork_name(&self) -> ForkName { + self.inner.fork_name + } + + fn legacy_rkyv_archive(&self) -> eyre::Result> { + unreachable!() + } +} + impl ProverTester for ChunkProverTester { type Metadata = ChunkInfo; diff --git a/crates/integration/src/utils/mod.rs b/crates/integration/src/utils/mod.rs index a5745ec6..edb72841 100644 --- a/crates/integration/src/utils/mod.rs +++ b/crates/integration/src/utils/mod.rs @@ -3,15 +3,16 @@ use bytesize::ByteSize; use sbv_core::BlockWitness; use sbv_primitives::types::consensus::ScrollTransaction; use sbv_primitives::{B256, types::eips::Encodable2718}; -use scroll_zkvm_types::batch::{N_BLOB_BYTES, build_point_eval_witness}; use scroll_zkvm_types::{ - batch::{ - BatchHeader, BatchHeaderV6, BatchHeaderV7, BatchHeaderValidium, BatchHeaderValidiumV1, - BatchInfo, BatchWitness, ReferenceHeader, - }, - bundle::{BundleInfo, BundleWitness}, - chunk::{ChunkInfo, ChunkWitness}, public_inputs::{ForkName, MultiVersionPublicInputs}, + scroll::{ + batch::{ + BatchHeader, BatchHeaderV6, BatchHeaderV7, BatchHeaderValidium, BatchHeaderValidiumV1, + BatchInfo, BatchWitness, N_BLOB_BYTES, ReferenceHeader, build_point_eval_witness, + }, + bundle::{BundleInfo, BundleWitness}, + chunk::{ChunkInfo, ChunkWitness}, + }, types_agg::AggregationInput, utils::{keccak256, point_eval, serialize_vk}, }; @@ -299,7 +300,7 @@ pub fn build_batch_witnesses( }) } ForkName::EuclidV2 | ForkName::Feynman | ForkName::Galileo | ForkName::GalileoV2 => { - use scroll_zkvm_types::batch::BatchHeaderV7; + use scroll_zkvm_types::scroll::batch::BatchHeaderV7; ReferenceHeader::V7_V8_V9(BatchHeaderV7 { version: last_header.version, batch_index: last_header.batch_index + 1, @@ -412,7 +413,7 @@ pub fn build_batch_witnesses_validium( #[test] fn test_build_and_parse_batch_task() -> eyre::Result<()> { use crate::testers::chunk::ChunkTaskGenerator; - use scroll_zkvm_types::batch::{self, Envelope, Payload}; + use scroll_zkvm_types::scroll::batch::{self, Envelope, Payload}; let witness = match testing_hardfork() { ForkName::EuclidV2 => ChunkTaskGenerator { diff --git a/crates/integration/tests/bundle_circuit.rs b/crates/integration/tests/bundle_circuit.rs index a0e3caba..b829da53 100644 --- a/crates/integration/tests/bundle_circuit.rs +++ b/crates/integration/tests/bundle_circuit.rs @@ -11,9 +11,10 @@ use scroll_zkvm_integration::{ utils::metadata_from_bundle_witnesses, }; use scroll_zkvm_prover::{Prover, ProverConfig}; +use scroll_zkvm_types::version::Version; use scroll_zkvm_types::{ proof::OpenVmEvmProof, - public_inputs::{ForkName, MultiVersionPublicInputs}, + public_inputs::{ForkName, MultiVersionPublicInputs, PublicInputs}, }; use std::str::FromStr; @@ -84,7 +85,7 @@ fn setup_prove_verify_local_task() -> eyre::Result<()> { #[test] fn verify_bundle_info_pi() { - use scroll_zkvm_types::bundle::BundleInfo; + use scroll_zkvm_types::scroll::bundle::BundleInfo; let info = BundleInfo { chain_id: 534352, @@ -114,7 +115,7 @@ fn verify_bundle_info_pi() { }; assert_eq!( - info.pi_hash_euclidv1(), + (info, Version::euclid_v1()).pi_hash(), B256::from_str("0x5e49fc59ce02b42a2f693c738c582b36bd08e9cfe3acb8cee299216743869bd4") .unwrap() ); diff --git a/crates/integration/tests/chunk_circuit.rs b/crates/integration/tests/chunk_circuit.rs index 0646bc4d..0e11162d 100644 --- a/crates/integration/tests/chunk_circuit.rs +++ b/crates/integration/tests/chunk_circuit.rs @@ -14,8 +14,8 @@ use scroll_zkvm_integration::{ utils::metadata_from_chunk_witnesses, }; use scroll_zkvm_prover::utils::read_json; -use scroll_zkvm_types::chunk::{ChunkWitness, SecretKey}; use scroll_zkvm_types::public_inputs::Version; +use scroll_zkvm_types::scroll::chunk::{ChunkWitness, SecretKey}; use std::env; use std::path::Path; diff --git a/crates/prover/src/prover/mod.rs b/crates/prover/src/prover/mod.rs index cb7f5289..c64c54f1 100644 --- a/crates/prover/src/prover/mod.rs +++ b/crates/prover/src/prover/mod.rs @@ -173,10 +173,9 @@ impl Prover { stdin: &StdIn, ) -> Result { let sdk = self.get_sdk()?; - let config = sdk.app_config(); let t = std::time::Instant::now(); let exec_result = - crate::utils::vm::execute_guest(config.app_vm_config.clone(), &self.app_exe, stdin)?; + crate::utils::vm::execute_guest(&sdk, self.app_exe.clone(), stdin)?; let execution_time_mills = t.elapsed().as_millis() as u64; let execution_time_s = execution_time_mills as f32 / 1000.0f32; let exec_speed = (exec_result.total_cycle as f32 / 1_000_000.0f32) / execution_time_s; // MHz diff --git a/crates/prover/src/utils/vm.rs b/crates/prover/src/utils/vm.rs index 1659d16d..4fb1a2af 100644 --- a/crates/prover/src/utils/vm.rs +++ b/crates/prover/src/utils/vm.rs @@ -1,12 +1,4 @@ -use std::sync::Arc; - -use openvm_circuit::{ - arch::{VmExecutor, instructions::exe::VmExe}, - system::{ - memory::merkle::public_values::extract_public_values, program::trace::VmCommittedExe, - }, -}; -use openvm_sdk::{F, SC, StdIn, config::SdkVmConfig}; +use openvm_sdk::{Sdk, StdIn, types::ExecutableFormat}; use crate::Error; @@ -16,28 +8,15 @@ pub struct ExecutionResult { pub public_values: Vec, } -#[derive(Default)] -pub struct DebugInput { - pub mock_prove: bool, - pub commited_exe: Option>>, -} - pub fn execute_guest( - vm_config: SdkVmConfig, - exe: &VmExe, + sdk: &Sdk, + exe: impl Into, stdin: &StdIn, ) -> Result { - let executor = VmExecutor::new(vm_config.clone()).expect("invalid config"); - let instance = executor.instance(exe).expect("invalid exe"); - - let state = instance - .execute(stdin.clone(), None) + let (public_values, (_cost, total_cycle)) = sdk + .execute_metered_cost(exe, stdin.clone()) .map_err(|e| Error::GenProof(e.to_string()))?; - let total_cycle = state.instret(); - let final_memory = state.memory; - let public_values: Vec = - extract_public_values(vm_config.as_ref().num_public_values, &final_memory.memory); tracing::debug!(name: "public_values after guest execution", ?public_values); if public_values.iter().all(|x| *x == 0) { return Err(Error::GenProof("public_values are all 0s".to_string())); diff --git a/crates/types/base/src/public_inputs.rs b/crates/types/base/src/public_inputs.rs index d60d71a3..e2e2f081 100644 --- a/crates/types/base/src/public_inputs.rs +++ b/crates/types/base/src/public_inputs.rs @@ -1,16 +1,22 @@ +use crate::utils::keccak256; use alloy_primitives::B256; -pub mod batch; -pub mod bundle; -pub mod chunk; +pub mod scroll; + +pub mod dogeos; pub use crate::{fork_name::ForkName, version::Version}; /// Defines behaviour to be implemented by types representing the public-input values of a circuit. pub trait PublicInputs { + /// Public inputs encoded. + fn pi(&self) -> Vec; + /// Keccak-256 digest of the public inputs. The public-input hash are revealed as public values /// via [`openvm::io::reveal`]. - fn pi_hash(&self) -> B256; + fn pi_hash(&self) -> B256 { + keccak256(self.pi()) + } /// Validation logic between public inputs of two contiguous instances. fn validate(&self, prev_pi: &Self); @@ -18,13 +24,18 @@ pub trait PublicInputs { /// helper trait to extend PublicInputs pub trait MultiVersionPublicInputs { - fn pi_hash_by_version(&self, version: Version) -> B256; + /// Public inputs encoded for a specific version. + fn pi_by_version(&self, version: Version) -> Vec; + /// Keccak-256 digest of the public inputs for a specific version. + fn pi_hash_by_version(&self, version: Version) -> B256 { + keccak256(self.pi_by_version(version)) + } fn validate(&self, prev_pi: &Self, version: Version); } impl PublicInputs for (T, Version) { - fn pi_hash(&self) -> B256 { - self.0.pi_hash_by_version(self.1) + fn pi(&self) -> Vec { + self.0.pi_by_version(self.1) } fn validate(&self, prev_pi: &Self) { diff --git a/crates/types/base/src/public_inputs/dogeos.rs b/crates/types/base/src/public_inputs/dogeos.rs new file mode 100644 index 00000000..988b7407 --- /dev/null +++ b/crates/types/base/src/public_inputs/dogeos.rs @@ -0,0 +1,3 @@ +pub mod batch; +pub mod bundle; +pub mod chunk; diff --git a/crates/types/base/src/public_inputs/dogeos/batch.rs b/crates/types/base/src/public_inputs/dogeos/batch.rs new file mode 100644 index 00000000..92dd04a1 --- /dev/null +++ b/crates/types/base/src/public_inputs/dogeos/batch.rs @@ -0,0 +1,26 @@ +use crate::public_inputs::{MultiVersionPublicInputs, scroll}; +use crate::version::Version; + +/// Represents public-input values for a batch. +#[derive(Debug, Clone, serde::Deserialize, serde::Serialize)] +pub struct DogeOsBatchInfo { + pub inner: scroll::batch::BatchInfo, + pub extras: DogeOsBatchInfoExtras, +} + +#[derive(Debug, Clone, serde::Deserialize, serde::Serialize)] +pub struct DogeOsBatchInfoExtras { + // Add DogeOs-specific extra fields here if needed in the future +} + +pub type VersionedDogeOsBatchInfo = (DogeOsBatchInfo, Version); + +impl MultiVersionPublicInputs for DogeOsBatchInfo { + fn pi_by_version(&self, version: Version) -> Vec { + self.inner.pi_by_version(version) + } + + fn validate(&self, prev_pi: &Self, version: Version) { + self.inner.validate(&prev_pi.inner, version) + } +} diff --git a/crates/types/base/src/public_inputs/dogeos/bundle.rs b/crates/types/base/src/public_inputs/dogeos/bundle.rs new file mode 100644 index 00000000..61669291 --- /dev/null +++ b/crates/types/base/src/public_inputs/dogeos/bundle.rs @@ -0,0 +1,19 @@ +use crate::public_inputs::{MultiVersionPublicInputs, Version, scroll}; + +/// Represents fields required to compute the public-inputs digest of a bundle. +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +pub struct DogeOsBundleInfo { + pub inner: scroll::bundle::BundleInfo, +} + +pub type VersionedDogeOsBundleInfo = (DogeOsBundleInfo, Version); + +impl MultiVersionPublicInputs for DogeOsBundleInfo { + fn pi_by_version(&self, version: Version) -> Vec { + self.inner.pi_by_version(version) + } + + fn validate(&self, prev_pi: &Self, version: Version) { + self.inner.validate(&prev_pi.inner, version) + } +} diff --git a/crates/types/base/src/public_inputs/dogeos/chunk.rs b/crates/types/base/src/public_inputs/dogeos/chunk.rs new file mode 100644 index 00000000..9e7ac2d1 --- /dev/null +++ b/crates/types/base/src/public_inputs/dogeos/chunk.rs @@ -0,0 +1,48 @@ +use crate::public_inputs::MultiVersionPublicInputs; +use crate::public_inputs::{Version, scroll}; +use alloy_primitives::B256; + +/// Represents header-like information for the chunk. +#[derive(Debug, Clone, serde::Deserialize, serde::Serialize)] +pub struct DogeOsChunkInfo { + /// Scroll ChunkInfo + pub inner: scroll::chunk::ChunkInfo, + /// DogeOs-specific fields + pub extras: DogeOsChunkInfoExtras, +} + +/// DogeOs-specific fields can be added here +#[derive(Debug, Clone, serde::Deserialize, serde::Serialize)] +pub struct DogeOsChunkInfoExtras { + /// The starting dogecoin blockhash of the chunk. + pub start_blockhash: B256, + /// The ending dogecoin blockhash of the chunk. + pub end_blockhash: B256, +} + +impl From<(scroll::chunk::ChunkInfo, DogeOsChunkInfoExtras)> for DogeOsChunkInfo { + fn from(value: (scroll::chunk::ChunkInfo, DogeOsChunkInfoExtras)) -> Self { + DogeOsChunkInfo { + inner: value.0, + extras: value.1, + } + } +} + +pub type VersionedDogeOsChunkInfo = (DogeOsChunkInfo, Version); + +impl MultiVersionPublicInputs for DogeOsChunkInfo { + fn pi_by_version(&self, version: Version) -> Vec { + let mut scroll_chunk_pi = self.inner.pi_by_version(version); + + scroll_chunk_pi.extend_from_slice(self.extras.start_blockhash.as_slice()); + scroll_chunk_pi.extend_from_slice(self.extras.end_blockhash.as_slice()); + scroll_chunk_pi + } + + fn validate(&self, prev_pi: &Self, version: Version) { + self.inner.validate(&prev_pi.inner, version); + // dogecoin blockhash linkage check enforce no deposit tx can be skipped + assert_eq!(self.extras.start_blockhash, prev_pi.extras.end_blockhash); + } +} diff --git a/crates/types/base/src/public_inputs/scroll.rs b/crates/types/base/src/public_inputs/scroll.rs new file mode 100644 index 00000000..988b7407 --- /dev/null +++ b/crates/types/base/src/public_inputs/scroll.rs @@ -0,0 +1,3 @@ +pub mod batch; +pub mod bundle; +pub mod chunk; diff --git a/crates/types/base/src/public_inputs/batch.rs b/crates/types/base/src/public_inputs/scroll/batch.rs similarity index 58% rename from crates/types/base/src/public_inputs/batch.rs rename to crates/types/base/src/public_inputs/scroll/batch.rs index 307e9d98..74f8ddd2 100644 --- a/crates/types/base/src/public_inputs/batch.rs +++ b/crates/types/base/src/public_inputs/scroll/batch.rs @@ -2,7 +2,6 @@ use alloy_primitives::B256; use crate::{ public_inputs::{ForkName, MultiVersionPublicInputs}, - utils::keccak256, version::{Domain, STFVersion, Version}, }; @@ -48,9 +47,9 @@ pub struct BatchInfo { } impl BatchInfo { - /// Public input hash for a batch (euclidv1 or da-codec@v6) is defined as + /// Public inputs encoded for a batch (euclidv1 or da-codec@v6) is defined as /// - /// keccak( + /// concat( /// parent state root || /// parent batch hash || /// state root || @@ -58,23 +57,21 @@ impl BatchInfo { /// chain id || /// withdraw root || /// ) - fn pi_hash_euclidv1(&self) -> B256 { - keccak256( - std::iter::empty() - .chain(self.parent_state_root.as_slice()) - .chain(self.parent_batch_hash.as_slice()) - .chain(self.state_root.as_slice()) - .chain(self.batch_hash.as_slice()) - .chain(self.chain_id.to_be_bytes().as_slice()) - .chain(self.withdraw_root.as_slice()) - .cloned() - .collect::>(), - ) + fn pi_euclidv1(&self) -> Vec { + std::iter::empty() + .chain(self.parent_state_root.as_slice()) + .chain(self.parent_batch_hash.as_slice()) + .chain(self.state_root.as_slice()) + .chain(self.batch_hash.as_slice()) + .chain(self.chain_id.to_be_bytes().as_slice()) + .chain(self.withdraw_root.as_slice()) + .copied() + .collect() } - /// Public input hash for a batch (euclidv2 or da-codec@v7) is defined as + /// Public inputs encoded for a batch (euclidv2 or da-codec@v7) is defined as /// - /// keccak( + /// concat( /// parent state root || /// parent batch hash || /// state root || @@ -84,32 +81,30 @@ impl BatchInfo { /// prev msg queue hash || /// post msg queue hash /// ) - fn pi_hash_euclidv2(&self) -> B256 { - keccak256( - std::iter::empty() - .chain(self.parent_state_root.as_slice()) - .chain(self.parent_batch_hash.as_slice()) - .chain(self.state_root.as_slice()) - .chain(self.batch_hash.as_slice()) - .chain(self.chain_id.to_be_bytes().as_slice()) - .chain(self.withdraw_root.as_slice()) - .chain(self.prev_msg_queue_hash.as_slice()) - .chain(self.post_msg_queue_hash.as_slice()) - .cloned() - .collect::>(), - ) + fn pi_euclidv2(&self) -> Vec { + std::iter::empty() + .chain(self.parent_state_root.as_slice()) + .chain(self.parent_batch_hash.as_slice()) + .chain(self.state_root.as_slice()) + .chain(self.batch_hash.as_slice()) + .chain(self.chain_id.to_be_bytes().as_slice()) + .chain(self.withdraw_root.as_slice()) + .chain(self.prev_msg_queue_hash.as_slice()) + .chain(self.post_msg_queue_hash.as_slice()) + .copied() + .collect() } - /// Public input hash for a batch (feynman or da-codec@v8). + /// Public inputs encoded for a batch (feynman or da-codec@v8). /// /// Unchanged from euclid-v2. - fn pi_hash_feynman(&self) -> B256 { - self.pi_hash_euclidv2() + fn pi_feynman(&self) -> Vec { + self.pi_euclidv2() } - /// Public input hash for a batch (galileo or da-codec@v9) is defined as + /// Public inputs encoded for a batch (galileo or da-codec@v9) is defined as /// - /// keccak( + /// concat( /// version || /// parent state root || /// parent batch hash || @@ -120,33 +115,31 @@ impl BatchInfo { /// prev msg queue hash || /// post msg queue hash /// ) - fn pi_hash_galileo(&self, version: Version) -> B256 { - keccak256( - std::iter::empty() - .chain(&[version.as_version_byte()]) - .chain(self.parent_state_root.as_slice()) - .chain(self.parent_batch_hash.as_slice()) - .chain(self.state_root.as_slice()) - .chain(self.batch_hash.as_slice()) - .chain(self.chain_id.to_be_bytes().as_slice()) - .chain(self.withdraw_root.as_slice()) - .chain(self.prev_msg_queue_hash.as_slice()) - .chain(self.post_msg_queue_hash.as_slice()) - .cloned() - .collect::>(), - ) + fn pi_galileo(&self, version: Version) -> Vec { + std::iter::empty() + .chain(&[version.as_version_byte()]) + .chain(self.parent_state_root.as_slice()) + .chain(self.parent_batch_hash.as_slice()) + .chain(self.state_root.as_slice()) + .chain(self.batch_hash.as_slice()) + .chain(self.chain_id.to_be_bytes().as_slice()) + .chain(self.withdraw_root.as_slice()) + .chain(self.prev_msg_queue_hash.as_slice()) + .chain(self.post_msg_queue_hash.as_slice()) + .copied() + .collect() } - /// Public input hash for a batch (galileo or da-codec@v9) is defined as + /// Public inputs encoded for a batch (galileo or da-codec@v9) is defined as /// /// Same as galileo. - pub fn pi_hash_galileo_v2(&self, version: Version) -> B256 { - self.pi_hash_galileo(version) + pub fn pi_galileo_v2(&self, version: Version) -> Vec { + self.pi_galileo(version) } - /// Public input hash for a L3 validium @ v1. + /// Public inputs encoded for a L3 validium @ v1. /// - /// keccak( + /// concat( /// version || /// parent state root || /// parent batch hash || @@ -158,36 +151,34 @@ impl BatchInfo { /// post msg queue hash /// encryption key /// ) - fn pi_hash_validium(&self, version: Version) -> B256 { - keccak256( - std::iter::empty() - .chain(&[version.as_version_byte()]) - .chain(self.parent_state_root.as_slice()) - .chain(self.parent_batch_hash.as_slice()) - .chain(self.state_root.as_slice()) - .chain(self.batch_hash.as_slice()) - .chain(self.chain_id.to_be_bytes().as_slice()) - .chain(self.withdraw_root.as_slice()) - .chain(self.prev_msg_queue_hash.as_slice()) - .chain(self.post_msg_queue_hash.as_slice()) - .chain(self.encryption_key.as_ref().expect("domain=Validium")) - .cloned() - .collect::>(), - ) + fn pi_validium(&self, version: Version) -> Vec { + std::iter::empty() + .chain(&[version.as_version_byte()]) + .chain(self.parent_state_root.as_slice()) + .chain(self.parent_batch_hash.as_slice()) + .chain(self.state_root.as_slice()) + .chain(self.batch_hash.as_slice()) + .chain(self.chain_id.to_be_bytes().as_slice()) + .chain(self.withdraw_root.as_slice()) + .chain(self.prev_msg_queue_hash.as_slice()) + .chain(self.post_msg_queue_hash.as_slice()) + .chain(self.encryption_key.as_ref().expect("domain=Validium")) + .copied() + .collect() } } pub type VersionedBatchInfo = (BatchInfo, Version); impl MultiVersionPublicInputs for BatchInfo { - fn pi_hash_by_version(&self, version: Version) -> B256 { + fn pi_by_version(&self, version: Version) -> Vec { match (version.domain, version.stf_version) { - (Domain::Scroll, STFVersion::V6) => self.pi_hash_euclidv1(), - (Domain::Scroll, STFVersion::V7) => self.pi_hash_euclidv2(), - (Domain::Scroll, STFVersion::V8) => self.pi_hash_feynman(), - (Domain::Scroll, STFVersion::V9) => self.pi_hash_galileo(version), - (Domain::Scroll, STFVersion::V10) => self.pi_hash_galileo_v2(version), - (Domain::Validium, STFVersion::V1) => self.pi_hash_validium(version), + (Domain::Scroll, STFVersion::V6) => self.pi_euclidv1(), + (Domain::Scroll, STFVersion::V7) => self.pi_euclidv2(), + (Domain::Scroll, STFVersion::V8) => self.pi_feynman(), + (Domain::Scroll, STFVersion::V9) => self.pi_galileo(version), + (Domain::Scroll, STFVersion::V10) => self.pi_galileo_v2(version), + (Domain::Validium, STFVersion::V1) => self.pi_validium(version), (domain, stf_version) => { unreachable!("unsupported version=({domain:?}, {stf_version:?})") } diff --git a/crates/types/base/src/public_inputs/bundle.rs b/crates/types/base/src/public_inputs/scroll/bundle.rs similarity index 71% rename from crates/types/base/src/public_inputs/bundle.rs rename to crates/types/base/src/public_inputs/scroll/bundle.rs index 1d1d8909..6ff6f3c1 100644 --- a/crates/types/base/src/public_inputs/bundle.rs +++ b/crates/types/base/src/public_inputs/scroll/bundle.rs @@ -2,7 +2,6 @@ use alloy_primitives::B256; use crate::{ public_inputs::MultiVersionPublicInputs, - utils::keccak256, version::{Domain, STFVersion, Version}, }; @@ -38,9 +37,9 @@ pub struct BundleInfo { } impl BundleInfo { - /// Public input hash for a bundle (euclidv1 or da-codec@v6) is defined as + /// Public inputs encoded for a bundle (euclidv1 or da-codec@v6) is defined as /// - /// keccak( + /// concat( /// chain id || /// num batches || /// prev state root || @@ -49,22 +48,20 @@ impl BundleInfo { /// batch hash || /// withdraw root /// ) - pub fn pi_hash_euclidv1(&self) -> B256 { - keccak256( - std::iter::empty() - .chain(self.chain_id.to_be_bytes().as_slice()) - .chain(self.num_batches.to_be_bytes().as_slice()) - .chain(self.prev_state_root.as_slice()) - .chain(self.prev_batch_hash.as_slice()) - .chain(self.post_state_root.as_slice()) - .chain(self.batch_hash.as_slice()) - .chain(self.withdraw_root.as_slice()) - .cloned() - .collect::>(), - ) + pub fn pi_euclidv1(&self) -> Vec { + std::iter::empty() + .chain(self.chain_id.to_be_bytes().as_slice()) + .chain(self.num_batches.to_be_bytes().as_slice()) + .chain(self.prev_state_root.as_slice()) + .chain(self.prev_batch_hash.as_slice()) + .chain(self.post_state_root.as_slice()) + .chain(self.batch_hash.as_slice()) + .chain(self.withdraw_root.as_slice()) + .copied() + .collect() } - /// Public input for a bundle (euclidv2 or da-codec@v7) is defined as + /// Public inputs encoded for a bundle (euclidv2 or da-codec@v7) is defined as /// /// concat( /// chain id || @@ -86,14 +83,10 @@ impl BundleInfo { .chain(self.post_state_root.as_slice()) .chain(self.batch_hash.as_slice()) .chain(self.withdraw_root.as_slice()) - .cloned() + .copied() .collect() } - pub fn pi_hash_euclidv2(&self) -> B256 { - keccak256(self.pi_euclidv2()) - } - pub fn pi_feynman(&self) -> Vec { self.pi_euclidv2() } @@ -106,17 +99,13 @@ impl BundleInfo { self.pi_euclidv2() } - pub fn pi_hash_versioned(&self, version: Version, pi: &[u8]) -> B256 { - keccak256( - std::iter::empty() - .chain( - B256::left_padding_from(version.as_version_byte().to_be_bytes().as_slice()) - .as_slice(), - ) - .chain(pi) - .cloned() - .collect::>(), - ) + pub fn pi_versioned(&self, version: Version, pi: impl IntoIterator) -> Vec { + std::iter::empty() + .chain(B256::left_padding_from( + version.as_version_byte().to_be_bytes().as_slice(), + )) + .chain(pi) + .collect() } pub fn pi_validium_v1(&self) -> Vec { @@ -131,22 +120,14 @@ impl BundleInfo { pub type VersionedBundleInfo = (BundleInfo, Version); impl MultiVersionPublicInputs for BundleInfo { - fn pi_hash_by_version(&self, version: Version) -> B256 { + fn pi_by_version(&self, version: Version) -> Vec { match (version.domain, version.stf_version) { - (Domain::Scroll, STFVersion::V6) => self.pi_hash_euclidv1(), - (Domain::Scroll, STFVersion::V7) => self.pi_hash_euclidv2(), - (Domain::Scroll, STFVersion::V8) => { - self.pi_hash_versioned(version, self.pi_feynman().as_slice()) - } - (Domain::Scroll, STFVersion::V9) => { - self.pi_hash_versioned(version, self.pi_galileo().as_slice()) - } - (Domain::Scroll, STFVersion::V10) => { - self.pi_hash_versioned(version, self.pi_galileo_v2().as_slice()) - } - (Domain::Validium, STFVersion::V1) => { - self.pi_hash_versioned(version, self.pi_validium_v1().as_slice()) - } + (Domain::Scroll, STFVersion::V6) => self.pi_euclidv1(), + (Domain::Scroll, STFVersion::V7) => self.pi_euclidv2(), + (Domain::Scroll, STFVersion::V8) => self.pi_versioned(version, self.pi_feynman()), + (Domain::Scroll, STFVersion::V9) => self.pi_versioned(version, self.pi_galileo()), + (Domain::Scroll, STFVersion::V10) => self.pi_versioned(version, self.pi_galileo_v2()), + (Domain::Validium, STFVersion::V1) => self.pi_versioned(version, self.pi_validium_v1()), (domain, stf_version) => { unreachable!("unsupported version=({domain:?}, {stf_version:?})") } diff --git a/crates/types/base/src/public_inputs/chunk.rs b/crates/types/base/src/public_inputs/scroll/chunk.rs similarity index 70% rename from crates/types/base/src/public_inputs/chunk.rs rename to crates/types/base/src/public_inputs/scroll/chunk.rs index c9a37036..4724e7a8 100644 --- a/crates/types/base/src/public_inputs/chunk.rs +++ b/crates/types/base/src/public_inputs/scroll/chunk.rs @@ -1,6 +1,5 @@ use crate::{ public_inputs::{ForkName, MultiVersionPublicInputs}, - utils::keccak256, version::{Domain, STFVersion, Version}, }; use alloy_primitives::{B256, U256}; @@ -212,9 +211,9 @@ impl From for LegacyChunkInfo { } impl ChunkInfo { - /// Public input hash for a given chunk (euclidv1 or da-codec@v6) is defined as + /// Public inputs encoded for a given chunk (euclidv1 or da-codec@v6) is defined as /// - /// keccak( + /// concat( /// chain id || /// prev state root || /// post state root || @@ -222,23 +221,21 @@ impl ChunkInfo { /// chunk data hash || /// tx data hash /// ) - pub fn pi_hash_euclidv1(&self) -> B256 { - keccak256( - std::iter::empty() - .chain(&self.chain_id.to_be_bytes()) - .chain(self.prev_state_root.as_slice()) - .chain(self.post_state_root.as_slice()) - .chain(self.withdraw_root.as_slice()) - .chain(self.data_hash.as_slice()) - .chain(self.tx_data_digest.as_slice()) - .cloned() - .collect::>(), - ) + pub fn pi_euclidv1(&self) -> Vec { + std::iter::empty() + .chain(&self.chain_id.to_be_bytes()) + .chain(self.prev_state_root.as_slice()) + .chain(self.post_state_root.as_slice()) + .chain(self.withdraw_root.as_slice()) + .chain(self.data_hash.as_slice()) + .chain(self.tx_data_digest.as_slice()) + .copied() + .collect() } - /// Public input hash for a given chunk (euclidv2 or da-codec@v7) is defined as + /// Public inputs encoded for a given chunk (euclidv2 or da-codec@v7) is defined as /// - /// keccak( + /// concat( /// chain id || /// prev state root || /// post state root || @@ -249,37 +246,35 @@ impl ChunkInfo { /// initial block number || /// block_ctx for block_ctx in block_ctxs /// ) - pub fn pi_hash_euclidv2(&self) -> B256 { - keccak256( - std::iter::empty() - .chain(&self.chain_id.to_be_bytes()) - .chain(self.prev_state_root.as_slice()) - .chain(self.post_state_root.as_slice()) - .chain(self.withdraw_root.as_slice()) - .chain(self.tx_data_digest.as_slice()) - .chain(self.prev_msg_queue_hash.as_slice()) - .chain(self.post_msg_queue_hash.as_slice()) - .chain(&self.initial_block_number.to_be_bytes()) - .chain( - self.block_ctxs - .iter() - .flat_map(|block_ctx| block_ctx.to_bytes()) - .collect::>() - .as_slice(), - ) - .cloned() - .collect::>(), - ) + pub fn pi_euclidv2(&self) -> Vec { + std::iter::empty() + .chain(&self.chain_id.to_be_bytes()) + .chain(self.prev_state_root.as_slice()) + .chain(self.post_state_root.as_slice()) + .chain(self.withdraw_root.as_slice()) + .chain(self.tx_data_digest.as_slice()) + .chain(self.prev_msg_queue_hash.as_slice()) + .chain(self.post_msg_queue_hash.as_slice()) + .chain(&self.initial_block_number.to_be_bytes()) + .chain( + self.block_ctxs + .iter() + .flat_map(|block_ctx| block_ctx.to_bytes()) + .collect::>() + .as_slice(), + ) + .copied() + .collect() } /// Feynman chunk public inputs are the same as EuclidV2. - pub fn pi_hash_feynman(&self) -> B256 { - self.pi_hash_euclidv2() + pub fn pi_feynman(&self) -> Vec { + self.pi_euclidv2() } - /// Public input hash for a given chunk (galileo or da-codec@v9) is defined as + /// Public inputs encoded for a given chunk (galileo or da-codec@v9) is defined as /// - /// keccak( + /// concat( /// version || /// chain id || /// prev state root || @@ -291,40 +286,38 @@ impl ChunkInfo { /// initial block number || /// block_ctx for block_ctx in block_ctxs /// ) - pub fn pi_hash_galileo(&self, version: Version) -> B256 { - keccak256( - std::iter::empty() - .chain(&[version.as_version_byte()]) - .chain(&self.chain_id.to_be_bytes()) - .chain(self.prev_state_root.as_slice()) - .chain(self.post_state_root.as_slice()) - .chain(self.withdraw_root.as_slice()) - .chain(self.tx_data_digest.as_slice()) - .chain(self.prev_msg_queue_hash.as_slice()) - .chain(self.post_msg_queue_hash.as_slice()) - .chain(&self.initial_block_number.to_be_bytes()) - .chain( - self.block_ctxs - .iter() - .flat_map(|block_ctx| block_ctx.to_bytes()) - .collect::>() - .as_slice(), - ) - .cloned() - .collect::>(), - ) + pub fn pi_galileo(&self, version: Version) -> Vec { + std::iter::empty() + .chain(&[version.as_version_byte()]) + .chain(&self.chain_id.to_be_bytes()) + .chain(self.prev_state_root.as_slice()) + .chain(self.post_state_root.as_slice()) + .chain(self.withdraw_root.as_slice()) + .chain(self.tx_data_digest.as_slice()) + .chain(self.prev_msg_queue_hash.as_slice()) + .chain(self.post_msg_queue_hash.as_slice()) + .chain(&self.initial_block_number.to_be_bytes()) + .chain( + self.block_ctxs + .iter() + .flat_map(|block_ctx| block_ctx.to_bytes()) + .collect::>() + .as_slice(), + ) + .copied() + .collect() } - /// Public input hash for a given chunk (galileo or da-codec@v9) is defined as + /// Public inputs encoded for a given chunk (galileo or da-codec@v9) is defined as /// /// The same as galileo. - pub fn pi_hash_galileo_v2(&self, version: Version) -> B256 { - self.pi_hash_galileo(version) + pub fn pi_galileo_v2(&self, version: Version) -> Vec { + self.pi_galileo(version) } - /// Public input hash for a given chunk for L3 validium @ v1: + /// Public inputs encoded for a given chunk for L3 validium @ v1: /// - /// keccak( + /// concat( /// version || /// chain id || /// prev state root || @@ -339,31 +332,29 @@ impl ChunkInfo { /// post blockhash || /// encryption key /// ) - pub fn pi_hash_validium(&self, version: Version) -> B256 { - keccak256( - std::iter::empty() - .chain(&[version.as_version_byte()]) - .chain(&self.chain_id.to_be_bytes()) - .chain(self.prev_state_root.as_slice()) - .chain(self.post_state_root.as_slice()) - .chain(self.withdraw_root.as_slice()) - .chain(self.tx_data_digest.as_slice()) - .chain(self.prev_msg_queue_hash.as_slice()) - .chain(self.post_msg_queue_hash.as_slice()) - .chain(&self.initial_block_number.to_be_bytes()) - .chain( - self.block_ctxs - .iter() - .flat_map(|block_ctx| block_ctx.to_bytes()) - .collect::>() - .as_slice(), - ) - .chain(self.prev_blockhash.as_slice()) - .chain(self.post_blockhash.as_slice()) - .chain(self.encryption_key.as_ref().expect("domain=Validium")) - .cloned() - .collect::>(), - ) + pub fn pi_validium(&self, version: Version) -> Vec { + std::iter::empty() + .chain(&[version.as_version_byte()]) + .chain(&self.chain_id.to_be_bytes()) + .chain(self.prev_state_root.as_slice()) + .chain(self.post_state_root.as_slice()) + .chain(self.withdraw_root.as_slice()) + .chain(self.tx_data_digest.as_slice()) + .chain(self.prev_msg_queue_hash.as_slice()) + .chain(self.post_msg_queue_hash.as_slice()) + .chain(&self.initial_block_number.to_be_bytes()) + .chain( + self.block_ctxs + .iter() + .flat_map(|block_ctx| block_ctx.to_bytes()) + .collect::>() + .as_slice(), + ) + .chain(self.prev_blockhash.as_slice()) + .chain(self.post_blockhash.as_slice()) + .chain(self.encryption_key.as_ref().expect("domain=Validium")) + .copied() + .collect() } } @@ -371,17 +362,17 @@ pub type VersionedChunkInfo = (ChunkInfo, Version); impl MultiVersionPublicInputs for ChunkInfo { /// Compute the public input hash for the chunk given the version tuple. - fn pi_hash_by_version(&self, version: Version) -> B256 { + fn pi_by_version(&self, version: Version) -> Vec { match (version.domain, version.stf_version) { (Domain::Scroll, STFVersion::V6) => { assert_ne!(self.data_hash, B256::ZERO, "v6 must have valid data_hash"); - self.pi_hash_euclidv1() + self.pi_euclidv1() } - (Domain::Scroll, STFVersion::V7) => self.pi_hash_euclidv2(), - (Domain::Scroll, STFVersion::V8) => self.pi_hash_feynman(), - (Domain::Scroll, STFVersion::V9) => self.pi_hash_galileo(version), - (Domain::Scroll, STFVersion::V10) => self.pi_hash_galileo_v2(version), - (Domain::Validium, STFVersion::V1) => self.pi_hash_validium(version), + (Domain::Scroll, STFVersion::V7) => self.pi_euclidv2(), + (Domain::Scroll, STFVersion::V8) => self.pi_feynman(), + (Domain::Scroll, STFVersion::V9) => self.pi_galileo(version), + (Domain::Scroll, STFVersion::V10) => self.pi_galileo_v2(version), + (Domain::Validium, STFVersion::V1) => self.pi_validium(version), (domain, stf_version) => { unreachable!("unsupported version=({domain:?}, {stf_version:?})") } diff --git a/crates/types/batch/Cargo.toml b/crates/types/batch/Cargo.toml index 108d0c5b..c173a4d8 100644 --- a/crates/types/batch/Cargo.toml +++ b/crates/types/batch/Cargo.toml @@ -26,6 +26,10 @@ halo2curves-axiom = "0.7.0" sbv-primitives = { workspace = true, optional = true } c-kzg = { workspace = true, optional = true } +bridge_core = { workspace = true } +bridge_adapters_zk = { workspace = true, features = ["verifier"] } +bridge_steps_da = { workspace = true, features = ["verifier"] } + [features] default = [] host = ["dep:sbv-primitives", "dep:c-kzg"] diff --git a/crates/types/batch/src/blob_consistency/openvm.rs b/crates/types/batch/src/blob_consistency/openvm.rs index e5d44356..8cde912a 100644 --- a/crates/types/batch/src/blob_consistency/openvm.rs +++ b/crates/types/batch/src/blob_consistency/openvm.rs @@ -63,9 +63,9 @@ pub fn verify_kzg_proof(z: Scalar, y: Scalar, commitment: G1Affine, proof: G1Aff .expect("kzg proof not G1 identity"); let p_minus_y = G1Affine::from_xy_nonidentity(commitment.x().clone(), commitment.y().clone()) .expect("kzg commitment not G1 identity") - - msm(&[y], std::slice::from_ref(&G1Affine::GENERATOR)); + - msm::(&[y], std::slice::from_ref(&G1Affine::GENERATOR)); let g2_generator: &G2Affine = &G2_GENERATOR; - let x_minus_z = msm(&[z], std::slice::from_ref(g2_generator)) - KZG_G2_SETUP.clone(); + let x_minus_z = msm::(&[z], std::slice::from_ref(g2_generator)) - KZG_G2_SETUP.clone(); let p0_proof = AffinePoint::new(proof_q.x().clone(), proof_q.y().clone()); let q0 = AffinePoint::new(p_minus_y.x().clone(), p_minus_y.y().clone()); diff --git a/crates/types/batch/src/builder/mod.rs b/crates/types/batch/src/builder/mod.rs index b575968c..d4b976a6 100644 --- a/crates/types/batch/src/builder/mod.rs +++ b/crates/types/batch/src/builder/mod.rs @@ -6,7 +6,7 @@ pub use v7::BatchInfoBuilderV7; pub mod validium; -use types_base::public_inputs::{batch::BatchInfo, chunk::ChunkInfo}; +use types_base::public_inputs::scroll::{batch::BatchInfo, chunk::ChunkInfo}; use crate::{BatchHeader, BatchHeaderV6, BatchHeaderV7, PointEvalWitness, payload::Payload}; diff --git a/crates/types/batch/src/builder/v6.rs b/crates/types/batch/src/builder/v6.rs index 3c59c3cd..becf0222 100644 --- a/crates/types/batch/src/builder/v6.rs +++ b/crates/types/batch/src/builder/v6.rs @@ -1,5 +1,5 @@ use alloy_primitives::B256; -use types_base::public_inputs::batch::BatchInfo; +use types_base::public_inputs::scroll::batch::BatchInfo; use crate::{ BatchHeader, PayloadV6, diff --git a/crates/types/batch/src/builder/v7.rs b/crates/types/batch/src/builder/v7.rs index adf1afc5..b2e69930 100644 --- a/crates/types/batch/src/builder/v7.rs +++ b/crates/types/batch/src/builder/v7.rs @@ -1,7 +1,7 @@ use std::marker::PhantomData; use alloy_primitives::B256; -use types_base::public_inputs::batch::BatchInfo; +use types_base::public_inputs::scroll::batch::BatchInfo; use types_base::version::Version; use crate::PointEvalWitness; diff --git a/crates/types/batch/src/builder/validium.rs b/crates/types/batch/src/builder/validium.rs index f3de0a48..8547016f 100644 --- a/crates/types/batch/src/builder/validium.rs +++ b/crates/types/batch/src/builder/validium.rs @@ -1,5 +1,5 @@ use types_base::{ - public_inputs::{batch::BatchInfo, chunk::ChunkInfo}, + public_inputs::scroll::{batch::BatchInfo, chunk::ChunkInfo}, version::Version, }; diff --git a/crates/types/batch/src/dogeos.rs b/crates/types/batch/src/dogeos.rs new file mode 100644 index 00000000..6170020b --- /dev/null +++ b/crates/types/batch/src/dogeos.rs @@ -0,0 +1,2 @@ +mod witness; +pub use witness::*; diff --git a/crates/types/batch/src/dogeos/witness.rs b/crates/types/batch/src/dogeos/witness.rs new file mode 100644 index 00000000..becbe1cb --- /dev/null +++ b/crates/types/batch/src/dogeos/witness.rs @@ -0,0 +1,81 @@ +use bridge_adapters_zk::serde::SerdeWrapper; +use bridge_adapters_zk::{StepInputEnvelope, ZkVerifierExt}; +use bridge_core::VerifierContext; +use bridge_steps_da::DaInclusionVerifier; +use types_base::aggregation::{AggregationInput, ProofCarryingWitness}; +use types_base::public_inputs::dogeos::batch::{DogeOsBatchInfo, DogeOsBatchInfoExtras}; +use types_base::public_inputs::dogeos::chunk::DogeOsChunkInfoExtras; +use types_base::public_inputs::scroll; + +/// Witness to the batch circuit. +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +pub struct DogeOsBatchWitness { + /// Scroll ChunkWitness + pub inner: crate::BatchWitness, + pub extras: DogeOsBatchWitnessExtras, +} + +/// Other DogeOs-specific fields can be added here +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +pub struct DogeOsBatchWitnessExtras { + pub chunk_info_extras: Vec, + pub verifier_context: SerdeWrapper, + pub inclusion: SerdeWrapper>, + // TODO: to be decided later how to handle celestia consensus + // pub blobstream: openvm_blobstream::GuestInput, +} + +impl ProofCarryingWitness for DogeOsBatchWitness { + fn get_proofs(&self) -> Vec { + self.inner.chunk_proofs.clone() + } +} + +impl From<&DogeOsBatchWitness> for DogeOsBatchInfo { + fn from(witness: &DogeOsBatchWitness) -> Self { + let scroll_batch_info = scroll::batch::BatchInfo::from(&witness.inner); + verify_da_inclusion(witness, &scroll_batch_info); + + DogeOsBatchInfo { + inner: scroll_batch_info, + extras: DogeOsBatchInfoExtras {} + } + } +} + +fn verify_da_inclusion(witness: &DogeOsBatchWitness, _scroll_batch_info: &scroll::batch::BatchInfo) { + DaInclusionVerifier + .verify_envelope(&witness.extras.inclusion, &witness.extras.verifier_context) + .expect("failed to verify inclusion proof"); + + // TODO: uncomment and complete these checks + // let da_header = &witness.extras.inclusion.artifact.v2_header; + // + // // See: https://github.com/DogeOS69/dogeos-core/tree/feat/trust-minimized-bridge-crates/crates/common_types/src/protos + // // | Field | Type / Size | Meaning | Source / Notes | + // // |-------|-------------|---------|----------------| + // // | `prev_state_root` | bytes (32) | L2 state root before batch | DogeOS RPC | + // assert_eq!( + // da_header.prev_state_root, + // scroll_batch_info.parent_state_root + // ); + // // | `state_root` | bytes (32) | L2 state root after batch | DogeOS RPC | + // assert_eq!(da_header.state_root, scroll_batch_info.state_root); + // // | `prev_batch_hash` | bytes (32) | Hash of previous batch | From `commitBatches` inputs | + // assert_eq!( + // da_header.prev_batch_hash, + // scroll_batch_info.parent_batch_hash + // ); + // // | `batch_hash` | bytes (32) | Hash of current batch | `calculate_batch_hash` (codec version, batch index, blob commitment, prev batch hash) | + // assert_eq!(da_header.batch_hash, scroll_batch_info.batch_hash); + // // | `prev_l1_message_queue_hash` | bytes (32) | Pre-batch queue hash | Scroll codec `prev_l1_message_queue_hash` | + // assert_eq!( + // da_header.prev_l1_message_queue_hash, + // scroll_batch_info.prev_msg_queue_hash + // ); + // // | `l1_message_queue_hash` | bytes (32) | Post-batch L1 message queue hash | Scroll codec `post_l1_message_queue_hash` | + // assert_eq!( + // da_header.l1_message_queue_hash, + // scroll_batch_info.post_msg_queue_hash + // ); +} diff --git a/crates/types/batch/src/lib.rs b/crates/types/batch/src/lib.rs index 85795e1e..397f0a7d 100644 --- a/crates/types/batch/src/lib.rs +++ b/crates/types/batch/src/lib.rs @@ -22,4 +22,6 @@ pub use witness::{ build_point_eval_witness, }; +pub mod dogeos; + pub mod utils; diff --git a/crates/types/batch/src/payload/mod.rs b/crates/types/batch/src/payload/mod.rs index 53e5d525..9e258e69 100644 --- a/crates/types/batch/src/payload/mod.rs +++ b/crates/types/batch/src/payload/mod.rs @@ -1,5 +1,5 @@ use alloy_primitives::B256; -use types_base::public_inputs::chunk::ChunkInfo; +use types_base::public_inputs::scroll::chunk::ChunkInfo; use crate::BatchHeader; diff --git a/crates/types/batch/src/payload/v6.rs b/crates/types/batch/src/payload/v6.rs index f3c882f3..0a3ad2f1 100644 --- a/crates/types/batch/src/payload/v6.rs +++ b/crates/types/batch/src/payload/v6.rs @@ -1,6 +1,6 @@ use alloy_primitives::B256; use itertools::Itertools; -use types_base::{public_inputs::chunk::ChunkInfo, utils::keccak256}; +use types_base::{public_inputs::scroll::chunk::ChunkInfo, utils::keccak256}; use crate::BatchHeaderV6; diff --git a/crates/types/batch/src/payload/v7.rs b/crates/types/batch/src/payload/v7.rs index 71652b95..80c78d6c 100644 --- a/crates/types/batch/src/payload/v7.rs +++ b/crates/types/batch/src/payload/v7.rs @@ -1,6 +1,6 @@ use alloy_primitives::B256; use types_base::{ - public_inputs::chunk::{BlockContextV2, ChunkInfo, SIZE_BLOCK_CTX}, + public_inputs::scroll::chunk::{BlockContextV2, ChunkInfo, SIZE_BLOCK_CTX}, utils::keccak256, }; diff --git a/crates/types/batch/src/witness.rs b/crates/types/batch/src/witness.rs index e8096df0..5ae4def7 100644 --- a/crates/types/batch/src/witness.rs +++ b/crates/types/batch/src/witness.rs @@ -3,8 +3,10 @@ use types_base::{ aggregation::{AggregationInput, ProofCarryingWitness}, public_inputs::{ ForkName, - batch::BatchInfo, - chunk::{ChunkInfo, LegacyChunkInfo}, + scroll::{ + batch::BatchInfo, + chunk::{ChunkInfo, LegacyChunkInfo}, + }, }, }; diff --git a/crates/types/bundle/Cargo.toml b/crates/types/bundle/Cargo.toml index 0304e485..ce8fbff7 100644 --- a/crates/types/bundle/Cargo.toml +++ b/crates/types/bundle/Cargo.toml @@ -12,6 +12,7 @@ rkyv.workspace = true serde.workspace = true types-base = { path = "../base", package = "scroll-zkvm-types-base"} +types-batch = { path = "../batch", package = "scroll-zkvm-types-batch" } [features] default = [] diff --git a/crates/types/bundle/src/dogeos.rs b/crates/types/bundle/src/dogeos.rs new file mode 100644 index 00000000..272361b5 --- /dev/null +++ b/crates/types/bundle/src/dogeos.rs @@ -0,0 +1,35 @@ +use types_base::aggregation::{AggregationInput, ProofCarryingWitness}; +use types_base::public_inputs::dogeos::batch::DogeOsBatchInfoExtras; +use types_base::public_inputs::dogeos::bundle::DogeOsBundleInfo; + +/// The witness for the bundle circuit. +#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)] +pub struct DogeOsBundleWitness { + pub inner: crate::BundleWitness, + pub batch_info_extras: Vec, +} + +impl From<(crate::BundleWitness, Vec)> for DogeOsBundleWitness { + fn from(value: (crate::BundleWitness, Vec)) -> Self { + Self { + inner: value.0, + batch_info_extras: value.1, + } + } +} + +impl ProofCarryingWitness for DogeOsBundleWitness { + fn get_proofs(&self) -> Vec { + self.inner.batch_proofs.clone() + } +} + +impl From<&DogeOsBundleWitness> for DogeOsBundleInfo { + fn from(witness: &DogeOsBundleWitness) -> Self { + let scroll_bundle_info = + types_base::public_inputs::scroll::bundle::BundleInfo::from(&witness.inner); + DogeOsBundleInfo { + inner: scroll_bundle_info, + } + } +} diff --git a/crates/types/bundle/src/lib.rs b/crates/types/bundle/src/lib.rs index 622170a7..7cf00368 100644 --- a/crates/types/bundle/src/lib.rs +++ b/crates/types/bundle/src/lib.rs @@ -1,2 +1,4 @@ mod witness; pub use witness::{ArchivedLegacyBundleWitness, BundleWitness, LegacyBundleWitness}; + +pub mod dogeos; diff --git a/crates/types/bundle/src/witness.rs b/crates/types/bundle/src/witness.rs index 71417ac6..b731e1eb 100644 --- a/crates/types/bundle/src/witness.rs +++ b/crates/types/bundle/src/witness.rs @@ -1,7 +1,7 @@ use types_base::{ aggregation::{AggregationInput, ProofCarryingWitness}, fork_name::ForkName, - public_inputs::{ + public_inputs::scroll::{ batch::{BatchInfo, LegacyBatchInfo}, bundle::BundleInfo, }, diff --git a/crates/types/chunk/Cargo.toml b/crates/types/chunk/Cargo.toml index 0d758c68..c0370fc8 100644 --- a/crates/types/chunk/Cargo.toml +++ b/crates/types/chunk/Cargo.toml @@ -29,6 +29,11 @@ openvm-pairing = { workspace = true, features = ["bn254"] } types-base = { path = "../base", package = "scroll-zkvm-types-base"} +bridge_core = { workspace = true } +bridge_adapters_zk = { workspace = true, features = ["verifier"] } +bridge_steps_deposit = { workspace = true, features = ["verifier"] } +bridge_transforms = { workspace = true } + [dev-dependencies] serde_json.workspace = true diff --git a/crates/types/chunk/src/dogeos.rs b/crates/types/chunk/src/dogeos.rs new file mode 100644 index 00000000..d3473299 --- /dev/null +++ b/crates/types/chunk/src/dogeos.rs @@ -0,0 +1,7 @@ +mod types; + +mod execute; +pub use execute::execute; + +mod witness; +pub use witness::{DogeOsChunkWitness, DogeOsChunkWitnessExtras}; diff --git a/crates/types/chunk/src/dogeos/execute.rs b/crates/types/chunk/src/dogeos/execute.rs new file mode 100644 index 00000000..c5035c66 --- /dev/null +++ b/crates/types/chunk/src/dogeos/execute.rs @@ -0,0 +1,139 @@ +use super::witness::DogeOsChunkWitness; +use crate::dogeos::DogeOsChunkWitnessExtras; +use crate::dogeos::types::{MOAT_CONTRACT_ADDRESS, handleL1MessageCall}; +use crate::scroll::relayMessageCall; +use alloy_primitives::U256; +use alloy_sol_types::SolCall; +use bridge_adapters_zk::ZkVerifierExt; +use bridge_steps_deposit::{HeaderVerifier, MidstateVerifier}; +use itertools::Itertools; +use sbv_primitives::types::consensus::TxL1Message; +use types_base::public_inputs::dogeos::chunk::{DogeOsChunkInfo, DogeOsChunkInfoExtras}; + +pub fn execute(witness: DogeOsChunkWitness) -> Result { + let l1_messages = witness + .inner + .blocks + .iter() + .flat_map(|block| block.transactions.iter()) + .filter_map(|tx| tx.as_l1_message()) + .map(|tx| tx.inner().clone()) + .collect::>(); + + let chunk_info = crate::scroll::execute(witness.inner)?; + + verify_deposits(&witness.extras, &l1_messages)?; + + let start_blockhash = witness + .extras + .header + .statement + .start_blockhash + .expect("start_blockhash must be present in header statement"); + let end_blockhash = witness + .extras + .header + .statement + .end_blockhash + .expect("end_blockhash must be present in header statement"); + + let info_extras = DogeOsChunkInfoExtras { + start_blockhash: start_blockhash.into(), + end_blockhash: end_blockhash.into(), + }; + println!("info_extras = {:?}", info_extras); + + Ok(DogeOsChunkInfo { + inner: chunk_info, + extras: info_extras, + }) +} + +fn verify_deposits( + extras: &DogeOsChunkWitnessExtras, + l1_messages: &[TxL1Message], +) -> Result<(), String> { + HeaderVerifier + .verify_envelope(&extras.header, &extras.verifier_context) + .map_err(|e| format!("dogeos deposit header verification failed: {e}"))?; + assert_eq!( + &extras.header.statement, + &extras.midstate.statement.header_range + ); + MidstateVerifier + .verify_envelope(&extras.midstate, &extras.verifier_context) + .map_err(|e| format!("dogeos deposit midstate verification failed: {e}"))?; + + for (deposit, l1_message) in extras + .midstate + .statement + .expected_deposits + .iter() + .zip_eq(l1_messages) + { + let relay_call: relayMessageCall = relayMessageCall::abi_decode(l1_message.input.as_ref()) + .map_err(|e| format!("dogeos relay call decode failed: {e}"))?; + // -- l1 message checks -- + // possibly redundant checks, kept for clarity + + // ref: https://github.com/DogeOS69/dogeos-core/blob/73ff17223d3bdb473b164bd87798207b5df7275e/crates/l1_interface/src/state/log_generator.rs#L531-L552 + // assert_eq!(l1_message.sender, aliased_l1_messenger); + + // ref: + // - https://github.com/DogeOS69/dogeos-core/blob/73ff17223d3bdb473b164bd87798207b5df7275e/crates/l1_interface/src/state/log_generator.rs#L507-L512 + // - https://github.com/DogeOS69/dogeos-core/blob/73ff17223d3bdb473b164bd87798207b5df7275e/crates/l1_interface/src/state/log_generator.rs#L556 + // assert_eq!(l1_message.to, messenger_target); + + // ref: https://github.com/DogeOS69/dogeos-core/blob/73ff17223d3bdb473b164bd87798207b5df7275e/crates/l1_interface/src/state/log_generator.rs#L557 + // assert_eq!(l1_message.value, U256::ZERO); + + // -- relay call checks -- + + // ref: + // - https://github.com/DogeOS69/dogeos-core/blob/73ff17223d3bdb473b164bd87798207b5df7275e/crates/l1_interface/src/state/log_generator.rs#L490 + // - https://github.com/DogeOS69/dogeos-core/blob/d0f71b8596f116d7fef5859c5a44eb385bf55499/crates/l1_interface/src/deposit/calldata_builder.rs#L102 + assert_eq!( + relay_call.sender, + deposit.txid[..20], + "dogeos synthetic relay call sender mismatch" + ); + + // ref: https://github.com/DogeOS69/dogeos-core/blob/d0f71b8596f116d7fef5859c5a44eb385bf55499/crates/l1_interface/src/deposit/calldata_builder.rs#L103 + assert_eq!( + relay_call.target, MOAT_CONTRACT_ADDRESS, + "dogeos relay call target mismatch" + ); + + // ref: https://github.com/DogeOS69/dogeos-core/blob/73ff17223d3bdb473b164bd87798207b5df7275e/crates/l1_interface/src/state/log_generator.rs#L503 + let amount = U256::from(bridge_transforms::convert_doge_to_eth_units( + deposit.amount_sats, + )); + // ref: https://github.com/DogeOS69/dogeos-core/blob/d0f71b8596f116d7fef5859c5a44eb385bf55499/crates/l1_interface/src/deposit/calldata_builder.rs#L104 + assert_eq!( + relay_call.value, amount, + "dogeos relay call amount mismatch" + ); + // nonce/queueIndex check is skipped, as it's guaranteed by rolling hash + + let moat_call: handleL1MessageCall = + handleL1MessageCall::abi_decode(relay_call.message.as_ref()) + .map_err(|e| format!("dogeos moat call decode failed: {e}"))?; + + // -- moat call checks -- + + // ref: + // - https://github.com/DogeOS69/dogeos-core/blob/73ff17223d3bdb473b164bd87798207b5df7275e/crates/l1_interface/src/state/log_generator.rs#L500 + // - https://github.com/DogeOS69/dogeos-core/blob/d0f71b8596f116d7fef5859c5a44eb385bf55499/crates/l1_interface/src/deposit/calldata_builder.rs#L96 + assert_eq!( + moat_call.target, deposit.evm_recipient, + "dogeos deposit recipient mismatch" + ); + + // ref: + // - https://github.com/DogeOS69/dogeos-core/blob/73ff17223d3bdb473b164bd87798207b5df7275e/crates/l1_interface/src/state/log_generator.rs#L514-L518 + // - https://github.com/DogeOS69/dogeos-core/blob/d0f71b8596f116d7fef5859c5a44eb385bf55499/crates/l1_interface/src/deposit/calldata_builder.rs#L96 + assert_eq!(moat_call.depositID, deposit.txid); + } + + Ok(()) +} diff --git a/crates/types/chunk/src/dogeos/types.rs b/crates/types/chunk/src/dogeos/types.rs new file mode 100644 index 00000000..b0da142c --- /dev/null +++ b/crates/types/chunk/src/dogeos/types.rs @@ -0,0 +1,51 @@ +use alloy_primitives::{Address, address}; +use alloy_sol_types::sol; + +sol! { + /// Moat.handleL1Message function + /// This is the final L2 execution target + /// Signature: handleL1Message(address,bytes32) + function handleL1Message( + address target, + bytes32 depositID + ) external; +} + +/// FIXME: replace with actual Moat contract address +pub const MOAT_CONTRACT_ADDRESS: Address = address!("0xcccccccccccccccccccccccccccccccccccccccc"); + +#[cfg(test)] +mod tests { + use super::*; + use crate::dogeos::types::handleL1MessageCall; + use crate::scroll::relayMessageCall; + use alloy_primitives::{B256, U256}; + + fn create_queue_transaction_calldata( + sender: Address, + to: Address, + value: U256, + nonce: u64, + deposit_id: B256, + ) -> Vec { + // Step 1: Create Moat.handleL1Message calldata (innermost call) + // This is what will ultimately be executed when relayMessage calls the Moat contract + let moat_call = handleL1MessageCall { + target: to, + depositID: deposit_id, + }; + let moat_calldata = moat_call.abi_encode(); + + // Step 2: Create L2ScrollMessenger.relayMessage calldata (what gets queued) + // This is the call that L1MessageQueue stores and L2ScrollMessenger will execute + let relay_call = relayMessageCall { + sender, // Original L1 sender + target: MOAT_CONTRACT_ADDRESS, // Moat contract (intermediate target) + value, // ETH value to transfer + messageNonce: U256::from(nonce), // Queue index as nonce + message: moat_calldata.into(), // Nested Moat.handleL1Message call + }; + + relay_call.abi_encode() + } +} diff --git a/crates/types/chunk/src/dogeos/witness.rs b/crates/types/chunk/src/dogeos/witness.rs new file mode 100644 index 00000000..b79a82b0 --- /dev/null +++ b/crates/types/chunk/src/dogeos/witness.rs @@ -0,0 +1,40 @@ +use crate::scroll; +use bridge_adapters_zk::StepInputEnvelope; +use bridge_adapters_zk::serde::SerdeWrapper; +use bridge_core::VerifierContext; +use bridge_steps_deposit::{HeaderVerifier, MidstateVerifier}; +use std::ops::Deref; +use types_base::public_inputs::dogeos::chunk::DogeOsChunkInfo; + +/// The witness type accepted by the chunk-circuit. +#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] +pub struct DogeOsChunkWitness { + /// Scroll ChunkWitness + pub inner: scroll::ChunkWitness, + /// Other DogeOs-specific fields can be added here + pub extras: DogeOsChunkWitnessExtras, +} + +/// Other DogeOs-specific fields can be added here +#[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] +pub struct DogeOsChunkWitnessExtras { + pub verifier_context: SerdeWrapper, + pub header: SerdeWrapper>, + pub midstate: SerdeWrapper>, +} + +impl TryFrom for DogeOsChunkInfo { + type Error = String; + + fn try_from(value: DogeOsChunkWitness) -> Result { + super::execute(value) + } +} + +impl Deref for DogeOsChunkWitness { + type Target = scroll::ChunkWitness; + + fn deref(&self) -> &Self::Target { + &self.inner + } +} diff --git a/crates/types/chunk/src/ethereum/execute.rs b/crates/types/chunk/src/ethereum/execute.rs index baf34f03..b984c528 100644 --- a/crates/types/chunk/src/ethereum/execute.rs +++ b/crates/types/chunk/src/ethereum/execute.rs @@ -1,4 +1,4 @@ -use crate::ChunkWitness; +use super::ChunkWitness; use sbv_core::verifier; use sbv_primitives::chainspec::{Chain, get_chain_spec}; diff --git a/crates/types/chunk/src/lib.rs b/crates/types/chunk/src/lib.rs index b47e7996..685b0cf8 100644 --- a/crates/types/chunk/src/lib.rs +++ b/crates/types/chunk/src/lib.rs @@ -1,13 +1,11 @@ mod crypto; pub use crypto::Crypto; -//pub use witness::{ChunkWitness, LegacyChunkWitness, ValidiumInputs}; #[cfg(feature = "scroll")] -mod scroll; +pub mod scroll; + #[cfg(feature = "scroll")] -pub use scroll::*; +pub mod dogeos; #[cfg(not(feature = "scroll"))] -mod ethereum; -#[cfg(not(feature = "scroll"))] -pub use ethereum::*; +pub mod ethereum; diff --git a/crates/types/chunk/src/scroll.rs b/crates/types/chunk/src/scroll.rs index 4e0ad631..b6f6b099 100644 --- a/crates/types/chunk/src/scroll.rs +++ b/crates/types/chunk/src/scroll.rs @@ -1,5 +1,8 @@ mod types; -pub use types::validium::SecretKey; +pub use types::{ + finalizeDepositERC20Call, finalizeDepositERC20EncryptedCall, relayMessageCall, + validium::SecretKey, +}; mod execute; pub use execute::execute; diff --git a/crates/types/chunk/src/scroll/execute.rs b/crates/types/chunk/src/scroll/execute.rs index 7aeb9d00..f8ae3418 100644 --- a/crates/types/chunk/src/scroll/execute.rs +++ b/crates/types/chunk/src/scroll/execute.rs @@ -1,4 +1,4 @@ -use crate::{ChunkWitness, scroll::types::ChunkExt}; +use super::{ChunkWitness, types::ChunkExt}; use ecies::SecretKey; use sbv_core::verifier::{self, VerifyResult}; use sbv_helpers::manually_drop_on_zkvm; @@ -13,7 +13,7 @@ use sbv_primitives::{ }; use types_base::{ fork_name::ForkName, - public_inputs::chunk::{BlockContextV2, ChunkInfo}, + public_inputs::scroll::chunk::{BlockContextV2, ChunkInfo}, }; /// `compression_infos` can be `None` in host mode. diff --git a/crates/types/chunk/src/scroll/types.rs b/crates/types/chunk/src/scroll/types.rs index 63c7853c..c45f61c0 100644 --- a/crates/types/chunk/src/scroll/types.rs +++ b/crates/types/chunk/src/scroll/types.rs @@ -1,6 +1,6 @@ -use super::types::validium::SecretKey; -use super::witness::ValidiumInputs; +use super::{types::validium::SecretKey, witness::ValidiumInputs}; use alloy_primitives::keccak256; +use alloy_sol_types::sol; use itertools::Itertools; use sbv_helpers::manually_drop_on_zkvm; use sbv_primitives::{ @@ -15,6 +15,38 @@ use std::ops::Deref; pub mod validium; +sol! { + #[derive(Debug)] + function relayMessage( + address sender, + address target, + uint256 value, + uint256 messageNonce, + bytes message + ); + + #[derive(Debug)] + function finalizeDepositERC20( + address token, + address l2Token, + address from, + address to, + uint256 amount, + bytes l2Data + ); + + #[derive(Debug)] + function finalizeDepositERC20Encrypted( + address token, + address l2Token, + address from, + bytes to, + uint256 amount, + bytes l2Data + ); + +} + const LEGACY_DA_HEADER_LEN: usize = size_of::() // block number + size_of::() // timestamp + U256::BYTES // base fee per gas diff --git a/crates/types/chunk/src/scroll/types/validium.rs b/crates/types/chunk/src/scroll/types/validium.rs index 32b4e849..876ab9ae 100644 --- a/crates/types/chunk/src/scroll/types/validium.rs +++ b/crates/types/chunk/src/scroll/types/validium.rs @@ -1,43 +1,12 @@ #![allow(non_snake_case)] +use super::{finalizeDepositERC20Call, finalizeDepositERC20EncryptedCall, relayMessageCall}; use alloy_primitives::{Address, Bytes}; -use alloy_sol_types::{SolCall, sol}; +use alloy_sol_types::SolCall; use sbv_primitives::types::consensus::TxL1Message; pub use ecies::SecretKey; -sol! { - #[derive(Debug)] - function relayMessage( - address sender, - address target, - uint256 value, - uint256 messageNonce, - bytes message - ); - - #[derive(Debug)] - function finalizeDepositERC20( - address token, - address l2Token, - address from, - address to, - uint256 amount, - bytes l2Data - ); - - #[derive(Debug)] - function finalizeDepositERC20Encrypted( - address token, - address l2Token, - address from, - bytes to, - uint256 amount, - bytes l2Data - ); - -} - #[derive(Debug, thiserror::Error)] pub enum ValidiumError { #[error(transparent)] diff --git a/crates/types/chunk/src/scroll/witness.rs b/crates/types/chunk/src/scroll/witness.rs index dff158a5..e0851af4 100644 --- a/crates/types/chunk/src/scroll/witness.rs +++ b/crates/types/chunk/src/scroll/witness.rs @@ -6,7 +6,7 @@ use sbv_primitives::types::consensus::TxL1Message; use sbv_primitives::types::evm::ScrollTxCompressionInfos; use std::collections::HashSet; use types_base::version::Version; -use types_base::{fork_name::ForkName, public_inputs::chunk::ChunkInfo}; +use types_base::{fork_name::ForkName, public_inputs::scroll::chunk::ChunkInfo}; /// The witness type accepted by the chunk-circuit. #[derive(Clone, Debug, serde::Serialize, serde::Deserialize)] @@ -188,7 +188,7 @@ impl TryFrom for ChunkInfo { type Error = String; fn try_from(value: ChunkWitness) -> Result { - crate::execute(value) + super::execute(value) } } diff --git a/crates/types/src/lib.rs b/crates/types/src/lib.rs index 52ddbbfc..b5f3f417 100644 --- a/crates/types/src/lib.rs +++ b/crates/types/src/lib.rs @@ -1,20 +1,39 @@ // re-export for a compatible interface with old circuit/types for prover -pub mod bundle { - pub use types_base::public_inputs::bundle::BundleInfo; - pub use types_bundle::*; +pub mod scroll { + pub mod bundle { + pub use types_base::public_inputs::scroll::bundle::BundleInfo; + pub use types_bundle::*; + } + + pub mod batch { + pub use types_base::public_inputs::scroll::batch::{BatchInfo, VersionedBatchInfo}; + pub use types_batch::*; + } + + pub mod chunk { + pub use types_base::public_inputs::scroll::chunk::{ + BlockContextV2, ChunkInfo, SIZE_BLOCK_CTX, VersionedChunkInfo, + }; + pub use types_chunk::scroll::*; + } } -pub mod batch { - pub use types_base::public_inputs::batch::{BatchInfo, VersionedBatchInfo}; - pub use types_batch::*; -} - -pub mod chunk { - pub use types_base::public_inputs::chunk::{ - BlockContextV2, ChunkInfo, SIZE_BLOCK_CTX, VersionedChunkInfo, - }; - pub use types_chunk::*; +pub mod dogeos { + pub mod bundle { + pub use types_base::public_inputs::scroll::bundle::BundleInfo; + pub use types_bundle::*; + } + + pub mod batch { + pub use types_base::public_inputs::scroll::batch::{BatchInfo, VersionedBatchInfo}; + pub use types_batch::*; + } + + pub mod chunk { + pub use types_base::public_inputs::dogeos::chunk::DogeOsChunkInfo; + pub use types_chunk::dogeos::*; + } } pub use types_base::{aggregation as types_agg, public_inputs, version};