diff --git a/Cargo.lock b/Cargo.lock index 93530490..27193943 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -69,9 +69,9 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" [[package]] name = "alloy-primitives" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +checksum = "f4b6fb2b432ff223d513db7f908937f63c252bee0af9b82bfd25b0a5dd1eb0d8" dependencies = [ "alloy-rlp", "bytes", @@ -80,6 +80,8 @@ dependencies = [ "derive_more", "hex-literal", "itoa", + "k256", + "keccak-asm", "proptest", "rand", "ruint", @@ -89,49 +91,48 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc0fac0fc16baf1f63f78b47c3d24718f3619b0714076f6a02957d808d52cbef" +checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" dependencies = [ - "alloy-rlp-derive", "arrayvec", "bytes", - "smol_str", ] [[package]] name = "alloy-rlp-derive" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0391754c09fab4eae3404d19d0d297aa1c670c1775ab51d8a5312afeca23157" +checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "alloy-sol-macro" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c" +checksum = "8b0b5ab0cb07c21adf9d72e988b34e8200ce648c2bba8d009183bb1c50fb1216" dependencies = [ "const-hex", "dunce", "heck", + "indexmap 2.1.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-types" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d7107bed88e8f09f0ddcc3335622d87bfb6821f3e0c7473329fb1cfad5e015" +checksum = "6c08f62ded7ce03513bfb60ef5cad4fff5d4f67eac6feb4df80426b7b9ffb06e" dependencies = [ "alloy-primitives", "alloy-sol-macro", @@ -156,9 +157,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.5" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" +checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" dependencies = [ "anstyle", "anstyle-parse", @@ -204,9 +205,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "ark-bn254" @@ -450,9 +451,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "assert_cmd" -version = "2.0.12" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88903cb14723e4d4003335bb7f8a14f27691649105346a0f0957466c096adfe6" +checksum = "00ad3f3a942eee60335ab4342358c161ee296829e0d16ff42fc1d6cb07815467" dependencies = [ "anstyle", "bstr", @@ -465,13 +466,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -485,6 +486,16 @@ dependencies = [ "rustc_version 0.4.0", ] +[[package]] +name = "aurora-engine-modexp" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfacad86e9e138fca0670949eb8ed4ffdf73a55bded8887efe0863cd1a3a6f70" +dependencies = [ + "hex", + "num", +] + [[package]] name = "auto_impl" version = "1.1.0" @@ -541,9 +552,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -566,7 +577,7 @@ version = "0.66.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "cexpr", "clang-sys", "lazy_static", @@ -579,7 +590,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.41", + "syn 2.0.48", "which", ] @@ -606,9 +617,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" dependencies = [ "serde", ] @@ -664,9 +675,9 @@ dependencies = [ [[package]] name = "bonsai-sdk" -version = "0.6.0-rc.2" +version = "0.6.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fa94a9fb49765a92b7af1d8ee805eb65f7e68f54b71444d7f3d2e0093b6e28c" +checksum = "0186d8850ad1d53286eba36a338357bef35d0dbb4ce83e3bab159e43620ab686" dependencies = [ "reqwest", "serde", @@ -675,9 +686,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" +checksum = "c48f0051a4b4c5e0b6d365cd04af53aeaa209e3cc15ec2cdb69e73cc87fbd0dc" dependencies = [ "memchr", "regex-automata", @@ -698,9 +709,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9" dependencies = [ "bytemuck_derive", ] @@ -713,7 +724,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -733,9 +744,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "0.1.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac926d808fb72fe09ebf471a091d6d72918876ccf0b4989766093d2d0d24a0ef" +checksum = "32700dc7904064bb64e857d38a1766607372928e2466ee5f02a869829b3297d7" dependencies = [ "bindgen", "blst", @@ -772,7 +783,7 @@ checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" dependencies = [ "camino", "cargo-platform", - "semver 1.0.20", + "semver 1.0.21", "serde", "serde_json", "thiserror", @@ -805,22 +816,22 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" dependencies = [ "glob", "libc", @@ -829,9 +840,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.11" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" dependencies = [ "clap_builder", "clap_derive", @@ -839,9 +850,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.11" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" dependencies = [ "anstream", "anstyle", @@ -858,7 +869,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -945,9 +956,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -963,35 +974,28 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.16" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", ] [[package]] name = "crossbeam-utils" -version = "0.8.17" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crunchy" @@ -1042,7 +1046,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -1053,7 +1057,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -1080,9 +1084,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", @@ -1264,7 +1268,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "hex", "k256", @@ -1278,20 +1282,20 @@ dependencies = [ [[package]] name = "enumn" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "env_logger" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" dependencies = [ "humantime", "is-terminal", @@ -1308,9 +1312,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "erased-serde" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4adbf0983fe06bd3a5c19c8477a637c2389feb0994eca7a59e3b961054aa7c0a" +checksum = "55d05712b2d8d88102bc9868020c9e5c7a1f5527c452b9b97450a1d006140ba7" dependencies = [ "serde", ] @@ -1375,9 +1379,9 @@ dependencies = [ [[package]] name = "ethers-core" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f03e0bdc216eeb9e355b90cf610ef6c5bb8aca631f97b5ae9980ce34ea7878d" +checksum = "918b1a9ba585ea61022647def2f27c29ba19f6d2a4a4c8f68a9ae97fd5769737" dependencies = [ "arrayvec", "bytes", @@ -1408,7 +1412,7 @@ checksum = "25d6c0c9455d93d4990c06e049abf9b30daf148cf461ee939c11d88907c60816" dependencies = [ "async-trait", "auto_impl", - "base64 0.21.5", + "base64 0.21.7", "bytes", "const-hex", "enr", @@ -1542,7 +1546,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -1568,9 +1572,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1583,9 +1587,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1593,15 +1597,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1610,32 +1614,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -1649,9 +1653,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1687,9 +1691,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", @@ -1737,9 +1741,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.22" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", @@ -1797,9 +1801,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" [[package]] name = "hex" @@ -1920,9 +1924,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2028,9 +2032,9 @@ dependencies = [ [[package]] name = "inventory" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0508c56cfe9bfd5dfeb0c22ab9a6abfda2f27bdca422132e494266351ed8d83c" +checksum = "c8573b2b1fb643a372c73b23f4da5f888677feef3305146d68a539250a9bccc7" [[package]] name = "ipnet" @@ -2040,13 +2044,13 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is-terminal" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455" dependencies = [ "hermit-abi", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2084,9 +2088,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" dependencies = [ "wasm-bindgen", ] @@ -2097,7 +2101,7 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "pem", "ring 0.16.20", "serde", @@ -2107,9 +2111,9 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.1" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" dependencies = [ "cfg-if", "ecdsa", @@ -2121,13 +2125,23 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb8515fff80ed850aea4a1595f2e519c003e2a00a82fe168ebf5269196caf444" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + [[package]] name = "lazy-regex" version = "3.1.0" @@ -2148,7 +2162,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2168,9 +2182,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libflate" @@ -2198,12 +2212,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -2218,16 +2232,16 @@ version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "libc", "redox_syscall", ] [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -2266,9 +2280,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "memmap2" @@ -2279,15 +2293,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] - [[package]] name = "metal" version = "0.25.0" @@ -2418,7 +2423,7 @@ checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2476,23 +2481,23 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2516,9 +2521,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "flate2", "memchr", @@ -2582,7 +2587,7 @@ version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 2.0.0", "proc-macro2", "quote", "syn 1.0.109", @@ -2640,9 +2645,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" dependencies = [ "memchr", "thiserror", @@ -2671,22 +2676,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2725,13 +2730,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "predicates" -version = "3.0.4" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dfc28575c2e3f19cb3c73b93af36460ae898d426eba6fc15b9bd2a5220758a0" +checksum = "68b87bfd4605926cdfefc1c3b5f8fe560e3feca9d5552cf68c466d3d8236c7e8" dependencies = [ "anstyle", "difflib", - "itertools 0.11.0", "predicates-core", ] @@ -2753,12 +2757,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ "proc-macro2", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2787,12 +2791,20 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" dependencies = [ - "toml_datetime", - "toml_edit 0.20.2", + "toml_edit 0.20.7", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.0", ] [[package]] @@ -2821,9 +2833,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2836,7 +2848,7 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.1", + "bitflags 2.4.2", "lazy_static", "num-traits", "rand", @@ -2875,7 +2887,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn 2.0.41", + "syn 2.0.48", "tempfile", "which", ] @@ -2890,7 +2902,7 @@ dependencies = [ "itertools 0.11.0", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2919,9 +2931,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2979,9 +2991,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" dependencies = [ "either", "rayon-core", @@ -2989,9 +3001,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -3019,9 +3031,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -3031,9 +3043,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -3048,9 +3060,9 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "relative-path" -version = "1.9.0" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca" +checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc" [[package]] name = "reqwest" @@ -3058,7 +3070,7 @@ version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -3095,8 +3107,7 @@ dependencies = [ [[package]] name = "revm" version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f4ca8ae0345104523b4af1a8a7ea97cfa1865cdb7a7c25d23c1a18d9b48598" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "auto_impl", "revm-interpreter", @@ -3108,8 +3119,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f959cafdf64a7f89b014fa73dc2325001cf654b3d9400260b212d19a2ebe3da0" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "revm-primitives", "serde", @@ -3118,12 +3128,11 @@ dependencies = [ [[package]] name = "revm-precompile" version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d360a88223d85709d2e95d4609eb1e19c649c47e28954bfabae5e92bb37e83e" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ + "aurora-engine-modexp", "c-kzg", "k256", - "num", "once_cell", "revm-primitives", "ripemd", @@ -3135,13 +3144,11 @@ dependencies = [ [[package]] name = "revm-primitives" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51187b852d9e458816a2e19c81f1dd6c924077e1a8fccd16e4f044f865f299d7" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "alloy-primitives", - "alloy-rlp", "auto_impl", - "bitflags 2.4.1", + "bitflags 2.4.2", "bitvec", "c-kzg", "enumn", @@ -3200,9 +3207,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7718c870b500fd884d983540b387ad811096c9ad9820399c1606cebb3e451b" +checksum = "36d1805bd1ad2b5b9c6e8513810768d9de976683938f90dda142c4721230c644" dependencies = [ "anyhow", "elf", @@ -3214,11 +3221,12 @@ dependencies = [ [[package]] name = "risc0-build" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ad217d2d2faf966402c2dbfdf6e287460701662887f6788b2cd60a9cfdaa60c" +checksum = "277d192ea9e469117c0f99b33be5acf5f5f34610f7b58a222022c30178c605a4" dependencies = [ "anyhow", + "cargo-platform", "cargo_metadata", "docker-generate", "risc0-binfmt", @@ -3231,9 +3239,9 @@ dependencies = [ [[package]] name = "risc0-build-kernel" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b716255923f8e23f6364e34a04ad6b681bc38f17cef811a6ff20770331e6507c" +checksum = "fb02e6c958cc0cfbf987296cefe936b38ebc9aeb1abc0be658984cab2a5739ff" dependencies = [ "cc", "directories", @@ -3244,13 +3252,14 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc50c49da03cb01c5e6329b6c70410faeacb421b1a1824670c3cc804dcf5f63" +checksum = "17513c8e87155dbfe108cb6b4795ffd2daecfa391798f1d8573c4bdecb16c947" dependencies = [ "anyhow", "bytemuck", "downloader", + "hex", "metal", "rand", "rayon", @@ -3264,9 +3273,9 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion-sys" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34e7be5b8ae5dd6337244a96543789abd5ced0ea47c0f54ee50bce6992a0f68f" +checksum = "335ef3ff3be0552fb12399ac943094a7b8e795398f27ca502e17a49a6e3eb564" dependencies = [ "glob", "risc0-build-kernel", @@ -3275,9 +3284,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35a9ac0cef2cce7a541b8062a1824cb5044115461eccdb766bd32b7f1c61bab9" +checksum = "c1f8919f96f980c40105a4e1460795abb3c7e0f8caea4713a12da258d94ea12d" dependencies = [ "anyhow", "metal", @@ -3292,9 +3301,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im-sys" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a11e5653ec6b6d28fa997dae6f533943eb6bfb8868c2b3395770dfae8f3f824f" +checksum = "f6aa0c5237171139f9617294d91c5e6b807ffffdfe74b2e92512937b38f55b5b" dependencies = [ "glob", "risc0-build-kernel", @@ -3303,9 +3312,9 @@ dependencies = [ [[package]] name = "risc0-core" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dbec429192da66bfab64a0d07ab001f3c91b5268f6296c2e9a0fe3fc791c114" +checksum = "6023c0820c52e2829ae7780ade0ba5816b6dd5dd172c6973bf76a0802dc8f3bc" dependencies = [ "bytemuck", "rand_core", @@ -3313,9 +3322,9 @@ dependencies = [ [[package]] name = "risc0-sys" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d306530b38a49bd41009517c194f37a101109d83595bf2d241b909caba8ff0" +checksum = "847913d5399e7637f8bc72198a610b1a6596fc5824b8c7a27d30478d6f9118d6" dependencies = [ "cc", "risc0-build-kernel", @@ -3323,9 +3332,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac5cf694ff0a35f06f0583de7a7830712a746a4dd79f1a9299e5c4985e586cee" +checksum = "2dceae2b472760fbf9e2435ded5981a7ddcd36b6af3ec021b1670405b00b0c5b" dependencies = [ "anyhow", "blake2", @@ -3350,9 +3359,9 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a0eab6b58643205cda3a1052fe55d24563c6fd8c2492501311bc4d78c6b431" +checksum = "2b6138aa5ce729fe0bf7d86f9e64d12e78a01758a6d3bee197e5a66e1a6bbe9f" dependencies = [ "addr2line", "anyhow", @@ -3385,7 +3394,7 @@ dependencies = [ "risc0-zkvm-platform", "rrs-lib", "rustc-demangle", - "semver 1.0.20", + "semver 1.0.21", "serde", "sha2", "tempfile", @@ -3395,9 +3404,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8873fc53469a3842eecef969a37316480a0edcfe85bce499b6342719366d8b" +checksum = "600ace62adbbb99d52642d539816569239b080dc496414f1cd04ed2faecc6203" dependencies = [ "bytemuck", "getrandom", @@ -3467,7 +3476,7 @@ dependencies = [ "regex", "relative-path", "rustc_version 0.4.0", - "syn 2.0.41", + "syn 2.0.48", "unicode-ident", ] @@ -3534,16 +3543,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.20", + "semver 1.0.21", ] [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", @@ -3568,7 +3577,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", ] [[package]] @@ -3601,12 +3610,12 @@ dependencies = [ [[package]] name = "ruzstd" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3ffab8f9715a0d455df4bbb9d21e91135aab3cd3ca187af0cd0c3c3f868fdc" +checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" dependencies = [ "byteorder", - "thiserror-core", + "derive_more", "twox-hash", ] @@ -3672,18 +3681,18 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27" dependencies = [ "secp256k1-sys", ] [[package]] name = "secp256k1-sys" -version = "0.8.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" dependencies = [ "cc", ] @@ -3699,9 +3708,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" dependencies = [ "serde", ] @@ -3729,29 +3738,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ "indexmap 2.1.0", "itoa", @@ -3773,11 +3782,11 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +checksum = "f5c9fdb6b00a489875b22efd4b78fe2b363b72265cc5f6eb2e2b9ee270e6140c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "chrono", "hex", "indexmap 1.9.3", @@ -3790,14 +3799,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +checksum = "dbff351eb4b33600a2e138dfa0b10b65a238ea8ff8fb2387c422c5022a3e8298" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3832,11 +3841,21 @@ dependencies = [ "keccak", ] +[[package]] +name = "sha3-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac61da6b35ad76b195eb4771210f947734321a8d81d7738e1580d953bc7a15e" +dependencies = [ + "cc", + "cfg-if", +] + [[package]] name = "shlex" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" @@ -3880,18 +3899,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" - -[[package]] -name = "smol_str" -version = "0.2.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" -dependencies = [ - "serde", -] +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" @@ -3962,7 +3972,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3997,9 +4007,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.41" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -4008,14 +4018,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" +checksum = "63bef2e2c735acbc06874eca3a8506f02a3c4700e6e748afc92cc2e4220e8a03" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -4047,22 +4057,22 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ "cfg-if", "fastrand", "redox_syscall", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "termcolor" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -4075,42 +4085,22 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "thiserror" -version = "1.0.51" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] -[[package]] -name = "thiserror-core" -version = "1.0.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c001ee18b7e5e3f62cbf58c7fe220119e68d902bb7443179c0c8aef30090e999" -dependencies = [ - "thiserror-core-impl", -] - -[[package]] -name = "thiserror-core-impl" -version = "1.0.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4c60d69f36615a077cc7663b9cb8e42275722d23e58a7fa3d2c7f2915d09d04" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.41", -] - [[package]] name = "thiserror-impl" -version = "1.0.51" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -4202,7 +4192,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -4246,9 +4236,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] name = "toml_edit" @@ -4263,9 +4253,20 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.20.2" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.1.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ "indexmap 2.1.0", "toml_datetime", @@ -4298,7 +4299,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -4374,9 +4375,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "typetag" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196976efd4a62737b3a2b662cda76efb448d099b1049613d7a5d72743c611ce0" +checksum = "c43148481c7b66502c48f35b8eef38b6ccdc7a9f04bd4cc294226d901ccc9bc7" dependencies = [ "erased-serde", "inventory", @@ -4387,13 +4388,13 @@ dependencies = [ [[package]] name = "typetag-impl" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eea6765137e2414c44c7b1e07c73965a118a72c46148e1e168b3fc9d3ccf3aa" +checksum = "291db8a81af4840c10d636e047cac67664e343be44e24dfdbd1492df9a5d3390" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -4422,9 +4423,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -4520,9 +4521,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -4530,24 +4531,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" dependencies = [ "cfg-if", "js-sys", @@ -4557,9 +4558,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4567,28 +4568,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ "js-sys", "wasm-bindgen", @@ -4645,11 +4646,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] @@ -4786,9 +4787,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.30" +version = "0.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b5c3db89721d50d0e2a673f5043fc4722f76dcc352d7b1ab8b8288bed4ed2c5" +checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" dependencies = [ "memchr", ] @@ -4833,22 +4834,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -4868,7 +4869,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index ce4fc58f..ac4c165c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,12 +1,6 @@ [workspace] resolver = "2" -members = [ - "guests", - "host", - "lib", - "primitives", - "testing/ef-tests" -] +members = ["guests", "host", "lib", "primitives", "testing/ef-tests"] # Always optimize; building and running the guest takes much longer without optimization. [profile.dev] @@ -23,8 +17,13 @@ lto = true opt-level = 3 [workspace.dependencies] -bonsai-sdk = "0.6.0-rc.2" +bonsai-sdk = "0.6.0-rc.3" hashbrown = { version = "0.14", features = ["inline-more"] } -risc0-build = "0.20.0-rc.2" -risc0-zkvm = { version = "0.20.0-rc.2", default-features = false } -revm = { version = "3.5", default-features = false, features = ["std", "serde", "optional_no_base_fee", "optional_balance_check"] } +risc0-build = { version = "0.20.0-rc.3" } +risc0-zkvm = { version = "0.20.0-rc.3", default-features = false } +revm-primitives = { git = "https://github.com/bluealloy/revm.git", rev = "6cd0bfc96da64513affe01c1964dd80beeb8c620", default_features = false } +revm = { git = "https://github.com/bluealloy/revm.git", rev = "6cd0bfc96da64513affe01c1964dd80beeb8c620", default-features = false, features = [ + "std", + "serde", + "optimism", +] } diff --git a/guests/eth-block/Cargo.lock b/guests/eth-block/Cargo.lock index c449005e..78c2ea49 100644 --- a/guests/eth-block/Cargo.lock +++ b/guests/eth-block/Cargo.lock @@ -52,9 +52,9 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" [[package]] name = "alloy-primitives" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +checksum = "f4b6fb2b432ff223d513db7f908937f63c252bee0af9b82bfd25b0a5dd1eb0d8" dependencies = [ "alloy-rlp", "bytes", @@ -63,6 +63,8 @@ dependencies = [ "derive_more", "hex-literal", "itoa", + "k256", + "keccak-asm", "proptest", "rand", "ruint", @@ -72,49 +74,48 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc0fac0fc16baf1f63f78b47c3d24718f3619b0714076f6a02957d808d52cbef" +checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" dependencies = [ - "alloy-rlp-derive", "arrayvec", "bytes", - "smol_str", ] [[package]] name = "alloy-rlp-derive" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0391754c09fab4eae3404d19d0d297aa1c670c1775ab51d8a5312afeca23157" +checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "alloy-sol-macro" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c" +checksum = "8b0b5ab0cb07c21adf9d72e988b34e8200ce648c2bba8d009183bb1c50fb1216" dependencies = [ "const-hex", "dunce", "heck", + "indexmap 2.1.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-types" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d7107bed88e8f09f0ddcc3335622d87bfb6821f3e0c7473329fb1cfad5e015" +checksum = "6c08f62ded7ce03513bfb60ef5cad4fff5d4f67eac6feb4df80426b7b9ffb06e" dependencies = [ "alloy-primitives", "alloy-sol-macro", @@ -139,9 +140,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "ark-bn254" @@ -385,13 +386,13 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -405,6 +406,16 @@ dependencies = [ "rustc_version 0.4.0", ] +[[package]] +name = "aurora-engine-modexp" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfacad86e9e138fca0670949eb8ed4ffdf73a55bded8887efe0863cd1a3a6f70" +dependencies = [ + "hex", + "num", +] + [[package]] name = "auto_impl" version = "1.1.0" @@ -452,9 +463,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -468,7 +479,7 @@ version = "0.66.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "cexpr", "clang-sys", "lazy_static", @@ -481,7 +492,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.41", + "syn 2.0.48", "which", ] @@ -508,9 +519,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" dependencies = [ "serde", ] @@ -572,9 +583,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9" dependencies = [ "bytemuck_derive", ] @@ -587,7 +598,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -607,9 +618,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "0.1.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac926d808fb72fe09ebf471a091d6d72918876ccf0b4989766093d2d0d24a0ef" +checksum = "32700dc7904064bb64e857d38a1766607372928e2466ee5f02a869829b3297d7" dependencies = [ "bindgen", "blst", @@ -646,22 +657,22 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" dependencies = [ "glob", "libc", @@ -720,9 +731,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -785,7 +796,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -796,7 +807,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -823,9 +834,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", @@ -948,7 +959,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "hex", "k256", @@ -962,13 +973,13 @@ dependencies = [ [[package]] name = "enumn" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -1045,9 +1056,9 @@ dependencies = [ [[package]] name = "ethers-core" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f03e0bdc216eeb9e355b90cf610ef6c5bb8aca631f97b5ae9980ce34ea7878d" +checksum = "918b1a9ba585ea61022647def2f27c29ba19f6d2a4a4c8f68a9ae97fd5769737" dependencies = [ "arrayvec", "bytes", @@ -1078,7 +1089,7 @@ checksum = "25d6c0c9455d93d4990c06e049abf9b30daf148cf461ee939c11d88907c60816" dependencies = [ "async-trait", "auto_impl", - "base64 0.21.5", + "base64 0.21.7", "bytes", "const-hex", "enr", @@ -1180,9 +1191,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1195,9 +1206,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1205,15 +1216,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1222,32 +1233,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -1261,9 +1272,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1299,9 +1310,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", @@ -1345,9 +1356,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.22" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", @@ -1405,9 +1416,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" [[package]] name = "hex" @@ -1522,9 +1533,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1651,9 +1662,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" dependencies = [ "wasm-bindgen", ] @@ -1664,7 +1675,7 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "pem", "ring 0.16.20", "serde", @@ -1674,8 +1685,8 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.1" -source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256/v0.13.1-risczero.1#5fea17d53fbaa0ff72dbe16da3ee2c2d02f2490c" +version = "0.13.3" +source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256/v0.13.3-risczero.0#d4f457a04410397cbb652a67c168b6cd6e9757c4" dependencies = [ "cfg-if", "ecdsa", @@ -1687,13 +1698,23 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb8515fff80ed850aea4a1595f2e519c003e2a00a82fe168ebf5269196caf444" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -1711,9 +1732,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libflate" @@ -1741,12 +1762,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -1757,9 +1778,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -1779,9 +1800,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "mime" @@ -1867,7 +1888,7 @@ checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -1925,30 +1946,30 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] @@ -2004,7 +2025,7 @@ version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 2.0.0", "proc-macro2", "quote", "syn 1.0.109", @@ -2062,9 +2083,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" dependencies = [ "memchr", "thiserror", @@ -2083,22 +2104,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2137,12 +2158,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ "proc-macro2", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2171,12 +2192,20 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" dependencies = [ - "toml_datetime", - "toml_edit 0.20.2", + "toml_edit 0.20.7", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.0", ] [[package]] @@ -2205,9 +2234,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2220,7 +2249,7 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.1", + "bitflags 2.4.2", "lazy_static", "num-traits", "rand", @@ -2240,9 +2269,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2303,9 +2332,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -2315,9 +2344,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -2336,7 +2365,7 @@ version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -2373,8 +2402,7 @@ dependencies = [ [[package]] name = "revm" version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f4ca8ae0345104523b4af1a8a7ea97cfa1865cdb7a7c25d23c1a18d9b48598" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "auto_impl", "revm-interpreter", @@ -2386,8 +2414,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f959cafdf64a7f89b014fa73dc2325001cf654b3d9400260b212d19a2ebe3da0" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "revm-primitives", "serde", @@ -2396,12 +2423,11 @@ dependencies = [ [[package]] name = "revm-precompile" version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d360a88223d85709d2e95d4609eb1e19c649c47e28954bfabae5e92bb37e83e" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ + "aurora-engine-modexp", "c-kzg", "k256", - "num", "once_cell", "revm-primitives", "ripemd", @@ -2413,13 +2439,11 @@ dependencies = [ [[package]] name = "revm-primitives" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51187b852d9e458816a2e19c81f1dd6c924077e1a8fccd16e4f044f865f299d7" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "alloy-primitives", - "alloy-rlp", "auto_impl", - "bitflags 2.4.1", + "bitflags 2.4.2", "bitvec", "c-kzg", "enumn", @@ -2478,9 +2502,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7718c870b500fd884d983540b387ad811096c9ad9820399c1606cebb3e451b" +checksum = "36d1805bd1ad2b5b9c6e8513810768d9de976683938f90dda142c4721230c644" dependencies = [ "anyhow", "elf", @@ -2492,12 +2516,13 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc50c49da03cb01c5e6329b6c70410faeacb421b1a1824670c3cc804dcf5f63" +checksum = "17513c8e87155dbfe108cb6b4795ffd2daecfa391798f1d8573c4bdecb16c947" dependencies = [ "anyhow", "bytemuck", + "hex", "risc0-core", "risc0-zkp", "tracing", @@ -2505,9 +2530,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35a9ac0cef2cce7a541b8062a1824cb5044115461eccdb766bd32b7f1c61bab9" +checksum = "c1f8919f96f980c40105a4e1460795abb3c7e0f8caea4713a12da258d94ea12d" dependencies = [ "anyhow", "risc0-core", @@ -2518,9 +2543,9 @@ dependencies = [ [[package]] name = "risc0-core" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dbec429192da66bfab64a0d07ab001f3c91b5268f6296c2e9a0fe3fc791c114" +checksum = "6023c0820c52e2829ae7780ade0ba5816b6dd5dd172c6973bf76a0802dc8f3bc" dependencies = [ "bytemuck", "rand_core", @@ -2528,9 +2553,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac5cf694ff0a35f06f0583de7a7830712a746a4dd79f1a9299e5c4985e586cee" +checksum = "2dceae2b472760fbf9e2435ded5981a7ddcd36b6af3ec021b1670405b00b0c5b" dependencies = [ "anyhow", "blake2", @@ -2548,9 +2573,9 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a0eab6b58643205cda3a1052fe55d24563c6fd8c2492501311bc4d78c6b431" +checksum = "2b6138aa5ce729fe0bf7d86f9e64d12e78a01758a6d3bee197e5a66e1a6bbe9f" dependencies = [ "anyhow", "ark-bn254", @@ -2571,7 +2596,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", - "semver 1.0.20", + "semver 1.0.21", "serde", "sha2", "tracing", @@ -2579,9 +2604,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8873fc53469a3842eecef969a37316480a0edcfe85bce499b6342719366d8b" +checksum = "600ace62adbbb99d52642d539816569239b080dc496414f1cd04ed2faecc6203" dependencies = [ "bytemuck", "getrandom", @@ -2689,16 +2714,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.20", + "semver 1.0.21", ] [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", @@ -2723,7 +2748,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", ] [[package]] @@ -2816,18 +2841,18 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27" dependencies = [ "secp256k1-sys", ] [[package]] name = "secp256k1-sys" -version = "0.8.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" dependencies = [ "cc", ] @@ -2843,9 +2868,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "semver-parser" @@ -2870,29 +2895,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ "indexmap 2.1.0", "itoa", @@ -2914,11 +2939,11 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +checksum = "f5c9fdb6b00a489875b22efd4b78fe2b363b72265cc5f6eb2e2b9ee270e6140c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "chrono", "hex", "indexmap 1.9.3", @@ -2931,14 +2956,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +checksum = "dbff351eb4b33600a2e138dfa0b10b65a238ea8ff8fb2387c422c5022a3e8298" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2972,11 +2997,21 @@ dependencies = [ "keccak", ] +[[package]] +name = "sha3-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac61da6b35ad76b195eb4771210f947734321a8d81d7738e1580d953bc7a15e" +dependencies = [ + "cc", + "cfg-if", +] + [[package]] name = "shlex" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" @@ -3020,18 +3055,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" - -[[package]] -name = "smol_str" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" -dependencies = [ - "serde", -] +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" @@ -3096,7 +3122,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3131,9 +3157,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.41" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -3142,14 +3168,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" +checksum = "63bef2e2c735acbc06874eca3a8506f02a3c4700e6e748afc92cc2e4220e8a03" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3181,35 +3207,35 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ "cfg-if", "fastrand", "redox_syscall", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "thiserror" -version = "1.0.51" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.51" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3301,7 +3327,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3345,9 +3371,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] name = "toml_edit" @@ -3362,9 +3388,20 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.20.2" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.1.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ "indexmap 2.1.0", "toml_datetime", @@ -3397,7 +3434,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3487,9 +3524,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -3579,9 +3616,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3589,24 +3626,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" dependencies = [ "cfg-if", "js-sys", @@ -3616,9 +3653,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3626,28 +3663,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ "js-sys", "wasm-bindgen", @@ -3695,11 +3732,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] @@ -3836,9 +3873,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.30" +version = "0.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b5c3db89721d50d0e2a673f5043fc4722f76dcc352d7b1ab8b8288bed4ed2c5" +checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" dependencies = [ "memchr", ] @@ -3883,22 +3920,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3918,7 +3955,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] diff --git a/guests/eth-block/Cargo.toml b/guests/eth-block/Cargo.toml index 7b7ced15..0df07293 100644 --- a/guests/eth-block/Cargo.toml +++ b/guests/eth-block/Cargo.toml @@ -6,13 +6,13 @@ edition = "2021" [workspace] [dependencies] -risc0-zkvm = { version = "0.20.0-rc.2", default-features = false, features = ['std'] } +risc0-zkvm = { version = "0.20.0-rc.3", default-features = false, features = ['std'] } zeth-lib = { path = "../../lib", default-features = false } [patch.crates-io] # use optimized risc0 circuit crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0" } -k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.1-risczero.1" } +k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.3-risczero.0" } sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.6-risczero.0" } [profile.release] diff --git a/guests/eth-block/src/main.rs b/guests/eth-block/src/main.rs index eccfe9d1..7c7714d4 100644 --- a/guests/eth-block/src/main.rs +++ b/guests/eth-block/src/main.rs @@ -26,10 +26,15 @@ pub fn main() { // Read the input previous block and transaction data let input = env::read(); // Build the resulting block - let (header, state) = EthereumStrategy::build_from(Ð_MAINNET_CHAIN_SPEC, input) + let mut output = EthereumStrategy::build_from(Ð_MAINNET_CHAIN_SPEC, input) .expect("Failed to build the resulting block"); - // Output the resulting block's hash to the journal - env::commit(&header.hash()); + // Abridge successful construction results + if let Some(trie_root) = output.compress_state() { + // Leak memory, save cycles + core::mem::forget(trie_root); + } + // Output the construction result + env::commit(&output); // Leak memory, save cycles - core::mem::forget((header, state)); + core::mem::forget(output); } diff --git a/guests/op-block/Cargo.lock b/guests/op-block/Cargo.lock index 5d4cf600..70a3358c 100644 --- a/guests/op-block/Cargo.lock +++ b/guests/op-block/Cargo.lock @@ -52,9 +52,9 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" [[package]] name = "alloy-primitives" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +checksum = "f4b6fb2b432ff223d513db7f908937f63c252bee0af9b82bfd25b0a5dd1eb0d8" dependencies = [ "alloy-rlp", "bytes", @@ -63,6 +63,8 @@ dependencies = [ "derive_more", "hex-literal", "itoa", + "k256", + "keccak-asm", "proptest", "rand", "ruint", @@ -72,49 +74,48 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc0fac0fc16baf1f63f78b47c3d24718f3619b0714076f6a02957d808d52cbef" +checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" dependencies = [ - "alloy-rlp-derive", "arrayvec", "bytes", - "smol_str", ] [[package]] name = "alloy-rlp-derive" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0391754c09fab4eae3404d19d0d297aa1c670c1775ab51d8a5312afeca23157" +checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "alloy-sol-macro" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c" +checksum = "8b0b5ab0cb07c21adf9d72e988b34e8200ce648c2bba8d009183bb1c50fb1216" dependencies = [ "const-hex", "dunce", "heck", + "indexmap 2.1.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-types" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d7107bed88e8f09f0ddcc3335622d87bfb6821f3e0c7473329fb1cfad5e015" +checksum = "6c08f62ded7ce03513bfb60ef5cad4fff5d4f67eac6feb4df80426b7b9ffb06e" dependencies = [ "alloy-primitives", "alloy-sol-macro", @@ -139,9 +140,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "ark-bn254" @@ -385,13 +386,13 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -405,6 +406,16 @@ dependencies = [ "rustc_version 0.4.0", ] +[[package]] +name = "aurora-engine-modexp" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfacad86e9e138fca0670949eb8ed4ffdf73a55bded8887efe0863cd1a3a6f70" +dependencies = [ + "hex", + "num", +] + [[package]] name = "auto_impl" version = "1.1.0" @@ -452,9 +463,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -468,7 +479,7 @@ version = "0.66.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "cexpr", "clang-sys", "lazy_static", @@ -481,7 +492,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.41", + "syn 2.0.48", "which", ] @@ -508,9 +519,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" dependencies = [ "serde", ] @@ -572,9 +583,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9" dependencies = [ "bytemuck_derive", ] @@ -587,7 +598,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -607,9 +618,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "0.1.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac926d808fb72fe09ebf471a091d6d72918876ccf0b4989766093d2d0d24a0ef" +checksum = "32700dc7904064bb64e857d38a1766607372928e2466ee5f02a869829b3297d7" dependencies = [ "bindgen", "blst", @@ -646,22 +657,22 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" dependencies = [ "glob", "libc", @@ -720,9 +731,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -745,7 +756,7 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" version = "0.5.2" -source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risc0#8b30304277cfe553b51a78a0e693f48bbb059eb3" +source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" dependencies = [ "generic-array", "getrandom", @@ -785,7 +796,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -796,7 +807,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -823,9 +834,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", @@ -948,7 +959,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "hex", "k256", @@ -962,13 +973,13 @@ dependencies = [ [[package]] name = "enumn" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -1037,9 +1048,9 @@ dependencies = [ [[package]] name = "ethers-core" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f03e0bdc216eeb9e355b90cf610ef6c5bb8aca631f97b5ae9980ce34ea7878d" +checksum = "918b1a9ba585ea61022647def2f27c29ba19f6d2a4a4c8f68a9ae97fd5769737" dependencies = [ "arrayvec", "bytes", @@ -1070,7 +1081,7 @@ checksum = "25d6c0c9455d93d4990c06e049abf9b30daf148cf461ee939c11d88907c60816" dependencies = [ "async-trait", "auto_impl", - "base64 0.21.5", + "base64 0.21.7", "bytes", "const-hex", "enr", @@ -1172,9 +1183,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1187,9 +1198,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1197,15 +1208,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1214,32 +1225,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -1253,9 +1264,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1291,9 +1302,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", @@ -1337,9 +1348,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.22" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", @@ -1397,9 +1408,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" [[package]] name = "hex" @@ -1514,9 +1525,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1643,9 +1654,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" dependencies = [ "wasm-bindgen", ] @@ -1656,7 +1667,7 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "pem", "ring 0.16.20", "serde", @@ -1666,8 +1677,8 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.1" -source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256/v0.13.1-risc0#44b1fc2b317e76bb150636cf67d0fbdfcac39601" +version = "0.13.3" +source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256/v0.13.3-risczero.0#d4f457a04410397cbb652a67c168b6cd6e9757c4" dependencies = [ "cfg-if", "ecdsa", @@ -1679,13 +1690,23 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb8515fff80ed850aea4a1595f2e519c003e2a00a82fe168ebf5269196caf444" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -1703,9 +1724,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libflate" @@ -1733,12 +1754,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -1749,9 +1770,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -1771,9 +1792,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "mime" @@ -1859,7 +1880,7 @@ checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -1917,30 +1938,30 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] @@ -2004,7 +2025,7 @@ version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 2.0.0", "proc-macro2", "quote", "syn 1.0.109", @@ -2062,9 +2083,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" dependencies = [ "memchr", "thiserror", @@ -2083,22 +2104,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2137,12 +2158,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ "proc-macro2", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2171,12 +2192,20 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" dependencies = [ - "toml_datetime", - "toml_edit 0.20.2", + "toml_edit 0.20.7", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.0", ] [[package]] @@ -2205,9 +2234,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2220,7 +2249,7 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.1", + "bitflags 2.4.2", "lazy_static", "num-traits", "rand", @@ -2240,9 +2269,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2303,9 +2332,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -2315,9 +2344,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -2336,7 +2365,7 @@ version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -2373,8 +2402,7 @@ dependencies = [ [[package]] name = "revm" version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f4ca8ae0345104523b4af1a8a7ea97cfa1865cdb7a7c25d23c1a18d9b48598" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "auto_impl", "revm-interpreter", @@ -2386,8 +2414,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f959cafdf64a7f89b014fa73dc2325001cf654b3d9400260b212d19a2ebe3da0" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "revm-primitives", "serde", @@ -2396,12 +2423,11 @@ dependencies = [ [[package]] name = "revm-precompile" version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d360a88223d85709d2e95d4609eb1e19c649c47e28954bfabae5e92bb37e83e" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ + "aurora-engine-modexp", "c-kzg", "k256", - "num", "once_cell", "revm-primitives", "ripemd", @@ -2413,13 +2439,11 @@ dependencies = [ [[package]] name = "revm-primitives" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51187b852d9e458816a2e19c81f1dd6c924077e1a8fccd16e4f044f865f299d7" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "alloy-primitives", - "alloy-rlp", "auto_impl", - "bitflags 2.4.1", + "bitflags 2.4.2", "bitvec", "c-kzg", "enumn", @@ -2478,9 +2502,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7718c870b500fd884d983540b387ad811096c9ad9820399c1606cebb3e451b" +checksum = "36d1805bd1ad2b5b9c6e8513810768d9de976683938f90dda142c4721230c644" dependencies = [ "anyhow", "elf", @@ -2492,12 +2516,13 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc50c49da03cb01c5e6329b6c70410faeacb421b1a1824670c3cc804dcf5f63" +checksum = "17513c8e87155dbfe108cb6b4795ffd2daecfa391798f1d8573c4bdecb16c947" dependencies = [ "anyhow", "bytemuck", + "hex", "risc0-core", "risc0-zkp", "tracing", @@ -2505,9 +2530,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35a9ac0cef2cce7a541b8062a1824cb5044115461eccdb766bd32b7f1c61bab9" +checksum = "c1f8919f96f980c40105a4e1460795abb3c7e0f8caea4713a12da258d94ea12d" dependencies = [ "anyhow", "risc0-core", @@ -2518,9 +2543,9 @@ dependencies = [ [[package]] name = "risc0-core" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dbec429192da66bfab64a0d07ab001f3c91b5268f6296c2e9a0fe3fc791c114" +checksum = "6023c0820c52e2829ae7780ade0ba5816b6dd5dd172c6973bf76a0802dc8f3bc" dependencies = [ "bytemuck", "rand_core", @@ -2528,9 +2553,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac5cf694ff0a35f06f0583de7a7830712a746a4dd79f1a9299e5c4985e586cee" +checksum = "2dceae2b472760fbf9e2435ded5981a7ddcd36b6af3ec021b1670405b00b0c5b" dependencies = [ "anyhow", "blake2", @@ -2548,9 +2573,9 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a0eab6b58643205cda3a1052fe55d24563c6fd8c2492501311bc4d78c6b431" +checksum = "2b6138aa5ce729fe0bf7d86f9e64d12e78a01758a6d3bee197e5a66e1a6bbe9f" dependencies = [ "anyhow", "ark-bn254", @@ -2571,7 +2596,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", - "semver 1.0.20", + "semver 1.0.21", "serde", "sha2", "tracing", @@ -2579,9 +2604,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8873fc53469a3842eecef969a37316480a0edcfe85bce499b6342719366d8b" +checksum = "600ace62adbbb99d52642d539816569239b080dc496414f1cd04ed2faecc6203" dependencies = [ "bytemuck", "getrandom", @@ -2689,16 +2714,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.20", + "semver 1.0.21", ] [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", @@ -2723,7 +2748,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", ] [[package]] @@ -2816,18 +2841,18 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27" dependencies = [ "secp256k1-sys", ] [[package]] name = "secp256k1-sys" -version = "0.8.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" dependencies = [ "cc", ] @@ -2843,9 +2868,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "semver-parser" @@ -2870,29 +2895,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ "indexmap 2.1.0", "itoa", @@ -2914,11 +2939,11 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +checksum = "f5c9fdb6b00a489875b22efd4b78fe2b363b72265cc5f6eb2e2b9ee270e6140c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "chrono", "hex", "indexmap 1.9.3", @@ -2931,14 +2956,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +checksum = "dbff351eb4b33600a2e138dfa0b10b65a238ea8ff8fb2387c422c5022a3e8298" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2955,7 +2980,7 @@ dependencies = [ [[package]] name = "sha2" version = "0.10.6" -source = "git+https://github.com/risc0/RustCrypto-hashes?tag=sha2/v0.10.6-risc0#e75cafd9f55da196061f6fadf8bc8a86778192b7" +source = "git+https://github.com/risc0/RustCrypto-hashes?tag=sha2-v0.10.6-risczero.0#7fd6900c4f637bd15ee2642dfa77110f8f1ad065" dependencies = [ "cfg-if", "cpufeatures", @@ -2972,11 +2997,21 @@ dependencies = [ "keccak", ] +[[package]] +name = "sha3-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac61da6b35ad76b195eb4771210f947734321a8d81d7738e1580d953bc7a15e" +dependencies = [ + "cc", + "cfg-if", +] + [[package]] name = "shlex" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" @@ -3020,18 +3055,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" - -[[package]] -name = "smol_str" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" -dependencies = [ - "serde", -] +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" @@ -3096,7 +3122,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3131,9 +3157,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.41" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -3142,14 +3168,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" +checksum = "63bef2e2c735acbc06874eca3a8506f02a3c4700e6e748afc92cc2e4220e8a03" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3181,35 +3207,35 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ "cfg-if", "fastrand", "redox_syscall", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "thiserror" -version = "1.0.51" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.51" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3301,7 +3327,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3345,9 +3371,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] name = "toml_edit" @@ -3362,9 +3388,20 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.20.2" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.1.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ "indexmap 2.1.0", "toml_datetime", @@ -3397,7 +3434,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3487,9 +3524,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -3579,9 +3616,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3589,24 +3626,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" dependencies = [ "cfg-if", "js-sys", @@ -3616,9 +3653,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3626,28 +3663,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ "js-sys", "wasm-bindgen", @@ -3695,11 +3732,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] @@ -3836,9 +3873,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.30" +version = "0.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b5c3db89721d50d0e2a673f5043fc4722f76dcc352d7b1ab8b8288bed4ed2c5" +checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" dependencies = [ "memchr", ] @@ -3883,22 +3920,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3918,7 +3955,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] diff --git a/guests/op-block/Cargo.toml b/guests/op-block/Cargo.toml index 5cd4dba9..35428bd3 100644 --- a/guests/op-block/Cargo.toml +++ b/guests/op-block/Cargo.toml @@ -6,14 +6,14 @@ edition = "2021" [workspace] [dependencies] -risc0-zkvm = { version = "0.20.0-rc.2", default-features = false, features = ['std'] } +risc0-zkvm = { version = "0.20.0-rc.3", default-features = false, features = ['std'] } zeth-lib = { path = "../../lib", default-features = false } [patch.crates-io] # use optimized risc0 circuit -crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risc0" } -k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.1-risc0" } -sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2/v0.10.6-risc0" } +crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0" } +k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.3-risczero.0" } +sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.6-risczero.0" } [profile.release] codegen-units = 1 diff --git a/guests/op-block/src/main.rs b/guests/op-block/src/main.rs index 623bd611..75bc183a 100644 --- a/guests/op-block/src/main.rs +++ b/guests/op-block/src/main.rs @@ -26,10 +26,15 @@ pub fn main() { // Read the input previous block and transaction data let input = env::read(); // Build the resulting block - let (header, state) = OptimismStrategy::build_from(&OP_MAINNET_CHAIN_SPEC, input) + let mut output = OptimismStrategy::build_from(&OP_MAINNET_CHAIN_SPEC, input) .expect("Failed to build the resulting block"); - // Output the resulting block's hash to the journal - env::commit(&header.hash()); + // Abridge successful construction results + if let Some(trie_root) = output.compress_state() { + // Leak memory, save cycles + core::mem::forget(trie_root); + } + // Output the construction result + env::commit(&output); // Leak memory, save cycles - core::mem::forget((header, state)); + core::mem::forget(output); } diff --git a/guests/op-compose/Cargo.lock b/guests/op-compose/Cargo.lock index f86dbb8a..f85a7343 100644 --- a/guests/op-compose/Cargo.lock +++ b/guests/op-compose/Cargo.lock @@ -52,9 +52,9 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" [[package]] name = "alloy-primitives" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +checksum = "f4b6fb2b432ff223d513db7f908937f63c252bee0af9b82bfd25b0a5dd1eb0d8" dependencies = [ "alloy-rlp", "bytes", @@ -63,6 +63,8 @@ dependencies = [ "derive_more", "hex-literal", "itoa", + "k256", + "keccak-asm", "proptest", "rand", "ruint", @@ -72,49 +74,48 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc0fac0fc16baf1f63f78b47c3d24718f3619b0714076f6a02957d808d52cbef" +checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" dependencies = [ - "alloy-rlp-derive", "arrayvec", "bytes", - "smol_str", ] [[package]] name = "alloy-rlp-derive" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0391754c09fab4eae3404d19d0d297aa1c670c1775ab51d8a5312afeca23157" +checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] name = "alloy-sol-macro" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c" +checksum = "8b0b5ab0cb07c21adf9d72e988b34e8200ce648c2bba8d009183bb1c50fb1216" dependencies = [ "const-hex", "dunce", "heck", + "indexmap 2.1.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-types" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d7107bed88e8f09f0ddcc3335622d87bfb6821f3e0c7473329fb1cfad5e015" +checksum = "6c08f62ded7ce03513bfb60ef5cad4fff5d4f67eac6feb4df80426b7b9ffb06e" dependencies = [ "alloy-primitives", "alloy-sol-macro", @@ -139,9 +140,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "ark-bn254" @@ -385,13 +386,13 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -405,6 +406,16 @@ dependencies = [ "rustc_version 0.4.0", ] +[[package]] +name = "aurora-engine-modexp" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfacad86e9e138fca0670949eb8ed4ffdf73a55bded8887efe0863cd1a3a6f70" +dependencies = [ + "hex", + "num", +] + [[package]] name = "auto_impl" version = "1.1.0" @@ -452,9 +463,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -468,7 +479,7 @@ version = "0.66.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "cexpr", "clang-sys", "lazy_static", @@ -481,7 +492,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.39", + "syn 2.0.48", "which", ] @@ -508,9 +519,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" dependencies = [ "serde", ] @@ -572,9 +583,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9" dependencies = [ "bytemuck_derive", ] @@ -587,7 +598,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -607,9 +618,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "0.1.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac926d808fb72fe09ebf471a091d6d72918876ccf0b4989766093d2d0d24a0ef" +checksum = "32700dc7904064bb64e857d38a1766607372928e2466ee5f02a869829b3297d7" dependencies = [ "bindgen", "blst", @@ -646,22 +657,22 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets", + "windows-targets 0.52.0", ] [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" dependencies = [ "glob", "libc", @@ -683,9 +694,9 @@ dependencies = [ [[package]] name = "const-oid" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "convert_case" @@ -695,9 +706,9 @@ checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -705,9 +716,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core2" @@ -720,9 +731,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -785,7 +796,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -796,7 +807,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -807,9 +818,9 @@ checksum = "7762d17f1241643615821a8455a0b2c3e803784b058693d990b11f2dce25a0ca" [[package]] name = "data-encoding" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" [[package]] name = "der" @@ -823,9 +834,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.9" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", @@ -910,9 +921,9 @@ checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "elf" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6e7d85896690fe195447717af8eceae0593ac2196fd42fe88c184e904406ce" +checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b" [[package]] name = "elliptic-curve" @@ -948,7 +959,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "hex", "k256", @@ -962,13 +973,13 @@ dependencies = [ [[package]] name = "enumn" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -979,12 +990,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1037,9 +1048,9 @@ dependencies = [ [[package]] name = "ethers-core" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f03e0bdc216eeb9e355b90cf610ef6c5bb8aca631f97b5ae9980ce34ea7878d" +checksum = "918b1a9ba585ea61022647def2f27c29ba19f6d2a4a4c8f68a9ae97fd5769737" dependencies = [ "arrayvec", "bytes", @@ -1070,7 +1081,7 @@ checksum = "25d6c0c9455d93d4990c06e049abf9b30daf148cf461ee939c11d88907c60816" dependencies = [ "async-trait", "auto_impl", - "base64 0.21.5", + "base64 0.21.7", "bytes", "const-hex", "enr", @@ -1157,9 +1168,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -1172,9 +1183,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1187,9 +1198,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1197,15 +1208,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1214,32 +1225,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -1253,9 +1264,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1291,9 +1302,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", @@ -1302,9 +1313,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "glob" @@ -1337,9 +1348,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.22" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", @@ -1371,9 +1382,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ "ahash", "allocator-api2", @@ -1397,9 +1408,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" [[package]] name = "hex" @@ -1427,11 +1438,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1447,9 +1458,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -1476,9 +1487,9 @@ checksum = "f58b778a5761513caf593693f8951c97a5b610841e754788400f32102eefdff1" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -1491,7 +1502,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", + "socket2", "tokio", "tower-service", "tracing", @@ -1514,9 +1525,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1543,9 +1554,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1607,7 +1618,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown 0.14.3", "serde", ] @@ -1637,15 +1648,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.65" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" dependencies = [ "wasm-bindgen", ] @@ -1656,7 +1667,7 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "pem", "ring 0.16.20", "serde", @@ -1666,8 +1677,8 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.1" -source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256/v0.13.1-risc0#44b1fc2b317e76bb150636cf67d0fbdfcac39601" +version = "0.13.3" +source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256/v0.13.3-risczero.0#d4f457a04410397cbb652a67c168b6cd6e9757c4" dependencies = [ "cfg-if", "ecdsa", @@ -1679,13 +1690,23 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb8515fff80ed850aea4a1595f2e519c003e2a00a82fe168ebf5269196caf444" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -1703,9 +1724,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.150" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libflate" @@ -1733,12 +1754,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -1749,9 +1770,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "linux-raw-sys" -version = "0.4.11" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -1771,9 +1792,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "mime" @@ -1798,13 +1819,13 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -1859,7 +1880,7 @@ checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -1917,39 +1938,39 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate 2.0.0", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "op-compose" @@ -1987,9 +2008,9 @@ dependencies = [ [[package]] name = "parity-scale-codec" -version = "3.6.5" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dec8a8073036902368c2cdc0387e85ff9a37054d7e7c98e592145e0c92cd4fb" +checksum = "881331e34fa842a2fb61cc2db9643a8fedc615e47cfcc52597d1af0db9a7e8fe" dependencies = [ "arrayvec", "bitvec", @@ -2001,11 +2022,11 @@ dependencies = [ [[package]] name = "parity-scale-codec-derive" -version = "3.6.5" +version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312270ee71e1cd70289dacf597cab7b207aa107d2f28191c2ae45b2ece18a260" +checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 2.0.0", "proc-macro2", "quote", "syn 1.0.109", @@ -2031,7 +2052,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -2057,15 +2078,15 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" dependencies = [ "memchr", "thiserror", @@ -2084,22 +2105,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -2138,12 +2159,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ "proc-macro2", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -2179,6 +2200,15 @@ dependencies = [ "toml_edit 0.20.7", ] +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.0", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -2205,9 +2235,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2220,7 +2250,7 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.1", + "bitflags 2.4.2", "lazy_static", "num-traits", "rand", @@ -2240,17 +2270,18 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] [[package]] name = "radium" -version = "0.7.1" -source = "git+https://github.com/ferrilab/radium.git?rev=723bed5#723bed5abd75994ee4b7221b8b12c9f4e77ce408" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" @@ -2302,9 +2333,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -2314,9 +2345,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -2331,11 +2362,11 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" -version = "0.11.22" +version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -2372,8 +2403,7 @@ dependencies = [ [[package]] name = "revm" version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f4ca8ae0345104523b4af1a8a7ea97cfa1865cdb7a7c25d23c1a18d9b48598" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "auto_impl", "revm-interpreter", @@ -2385,8 +2415,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f959cafdf64a7f89b014fa73dc2325001cf654b3d9400260b212d19a2ebe3da0" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "revm-primitives", "serde", @@ -2395,12 +2424,11 @@ dependencies = [ [[package]] name = "revm-precompile" version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d360a88223d85709d2e95d4609eb1e19c649c47e28954bfabae5e92bb37e83e" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ + "aurora-engine-modexp", "c-kzg", "k256", - "num", "once_cell", "revm-primitives", "ripemd", @@ -2412,17 +2440,15 @@ dependencies = [ [[package]] name = "revm-primitives" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51187b852d9e458816a2e19c81f1dd6c924077e1a8fccd16e4f044f865f299d7" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "alloy-primitives", - "alloy-rlp", "auto_impl", - "bitflags 2.4.1", + "bitflags 2.4.2", "bitvec", "c-kzg", "enumn", - "hashbrown 0.14.2", + "hashbrown 0.14.3", "hex", "serde", ] @@ -2454,16 +2480,16 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.5" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" dependencies = [ "cc", "getrandom", "libc", "spin 0.9.8", "untrusted 0.9.0", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -2477,9 +2503,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7718c870b500fd884d983540b387ad811096c9ad9820399c1606cebb3e451b" +checksum = "36d1805bd1ad2b5b9c6e8513810768d9de976683938f90dda142c4721230c644" dependencies = [ "anyhow", "elf", @@ -2491,12 +2517,13 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc50c49da03cb01c5e6329b6c70410faeacb421b1a1824670c3cc804dcf5f63" +checksum = "17513c8e87155dbfe108cb6b4795ffd2daecfa391798f1d8573c4bdecb16c947" dependencies = [ "anyhow", "bytemuck", + "hex", "risc0-core", "risc0-zkp", "tracing", @@ -2504,9 +2531,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35a9ac0cef2cce7a541b8062a1824cb5044115461eccdb766bd32b7f1c61bab9" +checksum = "c1f8919f96f980c40105a4e1460795abb3c7e0f8caea4713a12da258d94ea12d" dependencies = [ "anyhow", "risc0-core", @@ -2517,9 +2544,9 @@ dependencies = [ [[package]] name = "risc0-core" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dbec429192da66bfab64a0d07ab001f3c91b5268f6296c2e9a0fe3fc791c114" +checksum = "6023c0820c52e2829ae7780ade0ba5816b6dd5dd172c6973bf76a0802dc8f3bc" dependencies = [ "bytemuck", "rand_core", @@ -2527,9 +2554,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac5cf694ff0a35f06f0583de7a7830712a746a4dd79f1a9299e5c4985e586cee" +checksum = "2dceae2b472760fbf9e2435ded5981a7ddcd36b6af3ec021b1670405b00b0c5b" dependencies = [ "anyhow", "blake2", @@ -2547,9 +2574,9 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a0eab6b58643205cda3a1052fe55d24563c6fd8c2492501311bc4d78c6b431" +checksum = "2b6138aa5ce729fe0bf7d86f9e64d12e78a01758a6d3bee197e5a66e1a6bbe9f" dependencies = [ "anyhow", "ark-bn254", @@ -2570,7 +2597,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", - "semver 1.0.20", + "semver 1.0.21", "serde", "sha2", "tracing", @@ -2578,9 +2605,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8873fc53469a3842eecef969a37316480a0edcfe85bce499b6342719366d8b" +checksum = "600ace62adbbb99d52642d539816569239b080dc496414f1cd04ed2faecc6203" dependencies = [ "bytemuck", "getrandom", @@ -2688,30 +2715,30 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.20", + "semver 1.0.21", ] [[package]] name = "rustix" -version = "0.38.25" +version = "0.38.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.21.9" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", - "ring 0.17.5", + "ring 0.17.7", "rustls-webpki", "sct", ] @@ -2722,7 +2749,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", ] [[package]] @@ -2731,7 +2758,7 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.5", + "ring 0.17.7", "untrusted 0.9.0", ] @@ -2755,9 +2782,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "scale-info" @@ -2795,7 +2822,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.5", + "ring 0.17.7", "untrusted 0.9.0", ] @@ -2815,18 +2842,18 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27" dependencies = [ "secp256k1-sys", ] [[package]] name = "secp256k1-sys" -version = "0.8.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" dependencies = [ "cc", ] @@ -2842,9 +2869,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "semver-parser" @@ -2869,29 +2896,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.192" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ "indexmap 2.1.0", "itoa", @@ -2913,11 +2940,11 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +checksum = "f5c9fdb6b00a489875b22efd4b78fe2b363b72265cc5f6eb2e2b9ee270e6140c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "chrono", "hex", "indexmap 1.9.3", @@ -2930,14 +2957,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +checksum = "dbff351eb4b33600a2e138dfa0b10b65a238ea8ff8fb2387c422c5022a3e8298" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -2971,11 +2998,21 @@ dependencies = [ "keccak", ] +[[package]] +name = "sha3-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac61da6b35ad76b195eb4771210f947734321a8d81d7738e1580d953bc7a15e" +dependencies = [ + "cc", + "cfg-if", +] + [[package]] name = "shlex" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" @@ -3019,28 +3056,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" - -[[package]] -name = "smol_str" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" -dependencies = [ - "serde", -] - -[[package]] -name = "socket2" -version = "0.4.10" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" @@ -3049,7 +3067,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -3066,9 +3084,9 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "spki" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" dependencies = [ "base64ct", "der", @@ -3105,7 +3123,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -3140,9 +3158,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.39" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -3151,14 +3169,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" +checksum = "63bef2e2c735acbc06874eca3a8506f02a3c4700e6e748afc92cc2e4220e8a03" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -3190,35 +3208,35 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ "cfg-if", "fastrand", "redox_syscall", "rustix", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -3232,9 +3250,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" dependencies = [ "deranged", "itoa", @@ -3252,9 +3270,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" dependencies = [ "time-core", ] @@ -3285,9 +3303,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.34.0" +version = "1.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" dependencies = [ "backtrace", "bytes", @@ -3297,9 +3315,9 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2", "tokio-macros", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -3310,7 +3328,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -3380,6 +3398,17 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_edit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +dependencies = [ + "indexmap 2.1.0", + "toml_datetime", + "winnow", +] + [[package]] name = "tower-service" version = "0.3.2" @@ -3406,7 +3435,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -3440,9 +3469,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" @@ -3496,9 +3525,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -3535,9 +3564,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -3588,9 +3617,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.88" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3598,24 +3627,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.88" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.38" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" +checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" dependencies = [ "cfg-if", "js-sys", @@ -3625,9 +3654,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.88" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3635,28 +3664,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.88" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.88" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" [[package]] name = "web-sys" -version = "0.3.65" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ "js-sys", "wasm-bindgen", @@ -3664,9 +3693,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.2" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "which" @@ -3704,11 +3733,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets", + "windows-targets 0.52.0", ] [[package]] @@ -3717,7 +3746,16 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", ] [[package]] @@ -3726,13 +3764,28 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -3741,47 +3794,89 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + [[package]] name = "winnow" -version = "0.5.19" +version = "0.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" dependencies = [ "memchr", ] @@ -3793,7 +3888,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ "cfg-if", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] @@ -3826,22 +3921,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.26" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.26" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -3861,7 +3956,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.48", ] [[package]] @@ -3875,7 +3970,7 @@ dependencies = [ "ethers-core", "ethers-providers", "flate2", - "hashbrown 0.14.2", + "hashbrown 0.14.3", "libflate", "log", "once_cell", diff --git a/guests/op-compose/Cargo.toml b/guests/op-compose/Cargo.toml index 6d995081..79ca5e73 100644 --- a/guests/op-compose/Cargo.toml +++ b/guests/op-compose/Cargo.toml @@ -6,15 +6,14 @@ edition = "2021" [workspace] [dependencies] -risc0-zkvm = { version = "0.20.0-rc.2", default-features = false, features = ['std'] } +risc0-zkvm = { version = "0.20.0-rc.3", default-features = false, features = ['std'] } zeth-lib = { path = "../../lib", default-features = false } zeth-primitives = { path = "../../primitives", default-features = false } [patch.crates-io] -radium = { git = 'https://github.com/ferrilab/radium.git', rev = "723bed5" } # use optimized risc0 circuit crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risc0" } -k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.1-risc0" } +k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.3-risczero.0" } sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2/v0.10.6-risc0" } [profile.release] diff --git a/guests/op-derive/Cargo.lock b/guests/op-derive/Cargo.lock index a838723b..1b6ea128 100644 --- a/guests/op-derive/Cargo.lock +++ b/guests/op-derive/Cargo.lock @@ -52,9 +52,9 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" [[package]] name = "alloy-primitives" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +checksum = "f4b6fb2b432ff223d513db7f908937f63c252bee0af9b82bfd25b0a5dd1eb0d8" dependencies = [ "alloy-rlp", "bytes", @@ -63,6 +63,8 @@ dependencies = [ "derive_more", "hex-literal", "itoa", + "k256", + "keccak-asm", "proptest", "rand", "ruint", @@ -72,49 +74,48 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc0fac0fc16baf1f63f78b47c3d24718f3619b0714076f6a02957d808d52cbef" +checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" dependencies = [ - "alloy-rlp-derive", "arrayvec", "bytes", - "smol_str", ] [[package]] name = "alloy-rlp-derive" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0391754c09fab4eae3404d19d0d297aa1c670c1775ab51d8a5312afeca23157" +checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "alloy-sol-macro" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c" +checksum = "8b0b5ab0cb07c21adf9d72e988b34e8200ce648c2bba8d009183bb1c50fb1216" dependencies = [ "const-hex", "dunce", "heck", + "indexmap 2.1.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-types" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d7107bed88e8f09f0ddcc3335622d87bfb6821f3e0c7473329fb1cfad5e015" +checksum = "6c08f62ded7ce03513bfb60ef5cad4fff5d4f67eac6feb4df80426b7b9ffb06e" dependencies = [ "alloy-primitives", "alloy-sol-macro", @@ -139,9 +140,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "ark-bn254" @@ -385,13 +386,13 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -405,6 +406,16 @@ dependencies = [ "rustc_version 0.4.0", ] +[[package]] +name = "aurora-engine-modexp" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfacad86e9e138fca0670949eb8ed4ffdf73a55bded8887efe0863cd1a3a6f70" +dependencies = [ + "hex", + "num", +] + [[package]] name = "auto_impl" version = "1.1.0" @@ -452,9 +463,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -468,7 +479,7 @@ version = "0.66.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "cexpr", "clang-sys", "lazy_static", @@ -481,7 +492,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.41", + "syn 2.0.48", "which", ] @@ -508,9 +519,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" dependencies = [ "serde", ] @@ -572,9 +583,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9" dependencies = [ "bytemuck_derive", ] @@ -587,7 +598,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -607,9 +618,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "0.1.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac926d808fb72fe09ebf471a091d6d72918876ccf0b4989766093d2d0d24a0ef" +checksum = "32700dc7904064bb64e857d38a1766607372928e2466ee5f02a869829b3297d7" dependencies = [ "bindgen", "blst", @@ -646,22 +657,22 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" dependencies = [ "glob", "libc", @@ -720,9 +731,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -745,7 +756,7 @@ checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-bigint" version = "0.5.2" -source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risc0#8b30304277cfe553b51a78a0e693f48bbb059eb3" +source = "git+https://github.com/risc0/RustCrypto-crypto-bigint?tag=v0.5.2-risczero.0#8b30304277cfe553b51a78a0e693f48bbb059eb3" dependencies = [ "generic-array", "getrandom", @@ -785,7 +796,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -796,7 +807,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -823,9 +834,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", @@ -948,7 +959,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "hex", "k256", @@ -962,13 +973,13 @@ dependencies = [ [[package]] name = "enumn" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -1037,9 +1048,9 @@ dependencies = [ [[package]] name = "ethers-core" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f03e0bdc216eeb9e355b90cf610ef6c5bb8aca631f97b5ae9980ce34ea7878d" +checksum = "918b1a9ba585ea61022647def2f27c29ba19f6d2a4a4c8f68a9ae97fd5769737" dependencies = [ "arrayvec", "bytes", @@ -1070,7 +1081,7 @@ checksum = "25d6c0c9455d93d4990c06e049abf9b30daf148cf461ee939c11d88907c60816" dependencies = [ "async-trait", "auto_impl", - "base64 0.21.5", + "base64 0.21.7", "bytes", "const-hex", "enr", @@ -1172,9 +1183,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1187,9 +1198,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1197,15 +1208,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1214,32 +1225,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -1253,9 +1264,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1291,9 +1302,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", @@ -1337,9 +1348,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.22" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", @@ -1397,9 +1408,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" [[package]] name = "hex" @@ -1514,9 +1525,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1643,9 +1654,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" dependencies = [ "wasm-bindgen", ] @@ -1656,7 +1667,7 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "pem", "ring 0.16.20", "serde", @@ -1666,8 +1677,8 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.1" -source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256/v0.13.1-risc0#44b1fc2b317e76bb150636cf67d0fbdfcac39601" +version = "0.13.3" +source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256/v0.13.3-risczero.0#d4f457a04410397cbb652a67c168b6cd6e9757c4" dependencies = [ "cfg-if", "ecdsa", @@ -1679,13 +1690,23 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb8515fff80ed850aea4a1595f2e519c003e2a00a82fe168ebf5269196caf444" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -1703,9 +1724,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libflate" @@ -1733,12 +1754,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -1749,9 +1770,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -1771,9 +1792,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "mime" @@ -1859,7 +1880,7 @@ checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -1917,30 +1938,30 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] @@ -2005,7 +2026,7 @@ version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 2.0.0", "proc-macro2", "quote", "syn 1.0.109", @@ -2063,9 +2084,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" dependencies = [ "memchr", "thiserror", @@ -2084,22 +2105,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2138,12 +2159,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ "proc-macro2", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2172,12 +2193,20 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" dependencies = [ - "toml_datetime", - "toml_edit 0.20.2", + "toml_edit 0.20.7", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.0", ] [[package]] @@ -2206,9 +2235,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2221,7 +2250,7 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.1", + "bitflags 2.4.2", "lazy_static", "num-traits", "rand", @@ -2241,17 +2270,18 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] [[package]] name = "radium" -version = "0.7.1" -source = "git+https://github.com/ferrilab/radium.git?rev=723bed5#723bed5abd75994ee4b7221b8b12c9f4e77ce408" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rand" @@ -2303,9 +2333,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -2315,9 +2345,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -2336,7 +2366,7 @@ version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -2373,8 +2403,7 @@ dependencies = [ [[package]] name = "revm" version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f4ca8ae0345104523b4af1a8a7ea97cfa1865cdb7a7c25d23c1a18d9b48598" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "auto_impl", "revm-interpreter", @@ -2386,8 +2415,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f959cafdf64a7f89b014fa73dc2325001cf654b3d9400260b212d19a2ebe3da0" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "revm-primitives", "serde", @@ -2396,12 +2424,11 @@ dependencies = [ [[package]] name = "revm-precompile" version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d360a88223d85709d2e95d4609eb1e19c649c47e28954bfabae5e92bb37e83e" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ + "aurora-engine-modexp", "c-kzg", "k256", - "num", "once_cell", "revm-primitives", "ripemd", @@ -2413,13 +2440,11 @@ dependencies = [ [[package]] name = "revm-primitives" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51187b852d9e458816a2e19c81f1dd6c924077e1a8fccd16e4f044f865f299d7" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "alloy-primitives", - "alloy-rlp", "auto_impl", - "bitflags 2.4.1", + "bitflags 2.4.2", "bitvec", "c-kzg", "enumn", @@ -2478,9 +2503,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7718c870b500fd884d983540b387ad811096c9ad9820399c1606cebb3e451b" +checksum = "36d1805bd1ad2b5b9c6e8513810768d9de976683938f90dda142c4721230c644" dependencies = [ "anyhow", "elf", @@ -2492,12 +2517,13 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc50c49da03cb01c5e6329b6c70410faeacb421b1a1824670c3cc804dcf5f63" +checksum = "17513c8e87155dbfe108cb6b4795ffd2daecfa391798f1d8573c4bdecb16c947" dependencies = [ "anyhow", "bytemuck", + "hex", "risc0-core", "risc0-zkp", "tracing", @@ -2505,9 +2531,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35a9ac0cef2cce7a541b8062a1824cb5044115461eccdb766bd32b7f1c61bab9" +checksum = "c1f8919f96f980c40105a4e1460795abb3c7e0f8caea4713a12da258d94ea12d" dependencies = [ "anyhow", "risc0-core", @@ -2518,9 +2544,9 @@ dependencies = [ [[package]] name = "risc0-core" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dbec429192da66bfab64a0d07ab001f3c91b5268f6296c2e9a0fe3fc791c114" +checksum = "6023c0820c52e2829ae7780ade0ba5816b6dd5dd172c6973bf76a0802dc8f3bc" dependencies = [ "bytemuck", "rand_core", @@ -2528,9 +2554,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac5cf694ff0a35f06f0583de7a7830712a746a4dd79f1a9299e5c4985e586cee" +checksum = "2dceae2b472760fbf9e2435ded5981a7ddcd36b6af3ec021b1670405b00b0c5b" dependencies = [ "anyhow", "blake2", @@ -2548,9 +2574,9 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a0eab6b58643205cda3a1052fe55d24563c6fd8c2492501311bc4d78c6b431" +checksum = "2b6138aa5ce729fe0bf7d86f9e64d12e78a01758a6d3bee197e5a66e1a6bbe9f" dependencies = [ "anyhow", "ark-bn254", @@ -2571,7 +2597,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", - "semver 1.0.20", + "semver 1.0.21", "serde", "sha2", "tracing", @@ -2579,9 +2605,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8873fc53469a3842eecef969a37316480a0edcfe85bce499b6342719366d8b" +checksum = "600ace62adbbb99d52642d539816569239b080dc496414f1cd04ed2faecc6203" dependencies = [ "bytemuck", "getrandom", @@ -2689,16 +2715,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.20", + "semver 1.0.21", ] [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", @@ -2723,7 +2749,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", ] [[package]] @@ -2816,18 +2842,18 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27" dependencies = [ "secp256k1-sys", ] [[package]] name = "secp256k1-sys" -version = "0.8.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" dependencies = [ "cc", ] @@ -2843,9 +2869,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "semver-parser" @@ -2870,29 +2896,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ "indexmap 2.1.0", "itoa", @@ -2914,11 +2940,11 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +checksum = "f5c9fdb6b00a489875b22efd4b78fe2b363b72265cc5f6eb2e2b9ee270e6140c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "chrono", "hex", "indexmap 1.9.3", @@ -2931,14 +2957,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +checksum = "dbff351eb4b33600a2e138dfa0b10b65a238ea8ff8fb2387c422c5022a3e8298" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2955,7 +2981,7 @@ dependencies = [ [[package]] name = "sha2" version = "0.10.6" -source = "git+https://github.com/risc0/RustCrypto-hashes?tag=sha2/v0.10.6-risc0#e75cafd9f55da196061f6fadf8bc8a86778192b7" +source = "git+https://github.com/risc0/RustCrypto-hashes?tag=sha2-v0.10.6-risczero.0#7fd6900c4f637bd15ee2642dfa77110f8f1ad065" dependencies = [ "cfg-if", "cpufeatures", @@ -2972,11 +2998,21 @@ dependencies = [ "keccak", ] +[[package]] +name = "sha3-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac61da6b35ad76b195eb4771210f947734321a8d81d7738e1580d953bc7a15e" +dependencies = [ + "cc", + "cfg-if", +] + [[package]] name = "shlex" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" @@ -3020,18 +3056,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" - -[[package]] -name = "smol_str" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" -dependencies = [ - "serde", -] +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" @@ -3096,7 +3123,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3131,9 +3158,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.41" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -3142,14 +3169,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" +checksum = "63bef2e2c735acbc06874eca3a8506f02a3c4700e6e748afc92cc2e4220e8a03" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3181,35 +3208,35 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ "cfg-if", "fastrand", "redox_syscall", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "thiserror" -version = "1.0.51" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.51" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3301,7 +3328,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3345,9 +3372,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] name = "toml_edit" @@ -3362,9 +3389,20 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.20.2" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.1.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ "indexmap 2.1.0", "toml_datetime", @@ -3397,7 +3435,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3487,9 +3525,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -3579,9 +3617,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3589,24 +3627,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" dependencies = [ "cfg-if", "js-sys", @@ -3616,9 +3654,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3626,28 +3664,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ "js-sys", "wasm-bindgen", @@ -3695,11 +3733,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] @@ -3836,9 +3874,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.30" +version = "0.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b5c3db89721d50d0e2a673f5043fc4722f76dcc352d7b1ab8b8288bed4ed2c5" +checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" dependencies = [ "memchr", ] @@ -3883,22 +3921,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3918,7 +3956,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] diff --git a/guests/op-derive/Cargo.toml b/guests/op-derive/Cargo.toml index 8d5a6f17..18750a02 100644 --- a/guests/op-derive/Cargo.toml +++ b/guests/op-derive/Cargo.toml @@ -6,16 +6,15 @@ edition = "2021" [workspace] [dependencies] -risc0-zkvm = { version = "0.20.0-rc.2", default-features = false, features = ['std'] } +risc0-zkvm = { version = "0.20.0-rc.3", default-features = false, features = ['std'] } zeth-lib = { path = "../../lib", default-features = false } zeth-primitives = { path = "../../primitives", default-features = false } [patch.crates-io] -radium = { git = 'https://github.com/ferrilab/radium.git', rev = "723bed5" } # use optimized risc0 circuit -crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risc0" } -k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.1-risc0" } -sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2/v0.10.6-risc0" } +crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0" } +k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.3-risczero.0" } +sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.6-risczero.0" } [profile.release] codegen-units = 1 diff --git a/guests/op-derive/src/main.rs b/guests/op-derive/src/main.rs index 4f7c34db..123dac7e 100644 --- a/guests/op-derive/src/main.rs +++ b/guests/op-derive/src/main.rs @@ -23,10 +23,10 @@ risc0_zkvm::guest::entry!(main); pub fn main() { let derive_input: DeriveInput = env::read(); - let mut derive_machine = DeriveMachine::new(&OPTIMISM_CHAIN_SPEC, derive_input) + let mut derive_machine = DeriveMachine::new(&OPTIMISM_CHAIN_SPEC, derive_input, None) .expect("Could not create derive machine"); let output = derive_machine - .derive() + .derive(None) .expect("Failed to process derivation input"); env::commit(&output); } diff --git a/host/Cargo.toml b/host/Cargo.toml index e1deafb2..7c9d2f4f 100644 --- a/host/Cargo.toml +++ b/host/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" default-run = "zeth" [dependencies] -alloy-sol-types = "0.4" +alloy-sol-types = "0.6" anyhow = "1.0" bincode = "1.3.3" bonsai-sdk = { workspace = true } diff --git a/host/src/lib.rs b/host/src/lib.rs index 572239b2..f95bae93 100644 --- a/host/src/lib.rs +++ b/host/src/lib.rs @@ -12,23 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::{ - fs, - path::{Path, PathBuf}, -}; +use std::fs; use risc0_zkvm::Receipt; pub mod cli; pub mod operations; -pub fn cache_file_path(cache_path: &Path, network: &str, block_no: u64, ext: &str) -> PathBuf { - cache_path - .join(network) - .join(block_no.to_string()) - .with_extension(ext) -} - pub fn save_receipt(file_reference: &String, receipt: &Receipt, index: Option<&mut usize>) { let receipt_serialized = bincode::serialize(receipt).expect("Failed to serialize receipt!"); let path = if let Some(number) = index { diff --git a/host/src/operations/chains.rs b/host/src/operations/chains.rs index 76e14367..12b4f1a9 100644 --- a/host/src/operations/chains.rs +++ b/host/src/operations/chains.rs @@ -16,18 +16,18 @@ use std::fmt::Debug; use anyhow::Context; use ethers_core::types::Transaction as EthersTransaction; -use log::info; +use log::{info, warn}; use risc0_zkvm::compute_image_id; use serde::{Deserialize, Serialize}; use zeth_lib::{ builder::BlockBuilderStrategy, consts::ChainSpec, - host::{preflight::Preflight, verify::Verifier}, - input::Input, + host::{cache_file_path, preflight::Preflight, verify::Verifier}, + input::BlockBuildInput, + output::BlockBuildOutput, }; use crate::{ - cache_file_path, cli::Cli, operations::{execute, maybe_prove, verify_bonsai_receipt}, }; @@ -62,22 +62,33 @@ where let preflight_data = preflight_result.context("preflight failed")?; // Create the guest input from [Init] - let input: Input = preflight_data + let input: BlockBuildInput = preflight_data .clone() .try_into() .context("invalid preflight data")?; // Verify that the transactions run correctly info!("Running from memory ..."); - let (header, state_trie) = - N::build_from(&chain_spec, input.clone()).context("Error while building block")?; + let output = N::build_from(&chain_spec, input.clone()) + .context("Error while building block")? + .with_state_compressed(); - info!("Verifying final state using provider data ..."); - preflight_data.verify_block(&header, &state_trie)?; + match &output { + BlockBuildOutput::SUCCESS { + new_block_hash, + new_block_head, + new_block_state, + } => { + info!("Verifying final state using provider data ..."); + preflight_data.verify_block(new_block_head, new_block_state)?; - info!("Final block hash derived successfully. {}", header.hash()); + info!("Final block hash derived successfully. {}", new_block_hash); + } + BlockBuildOutput::FAILURE { .. } => { + warn!("Proving bad block construction!") + } + } - let expected_output = preflight_data.header.hash(); match &cli { Cli::Build(..) => {} Cli::Run(run_args) => { @@ -86,7 +97,7 @@ where run_args.exec_args.local_exec, run_args.exec_args.profile, guest_elf, - &expected_output, + &output, file_reference, ); } @@ -95,7 +106,7 @@ where &cli, &input, guest_elf, - &expected_output, + &output, Default::default(), file_reference, None, @@ -104,7 +115,7 @@ where Cli::Verify(verify_args) => { verify_bonsai_receipt( compute_image_id(guest_elf)?, - &expected_output, + &output, verify_args.bonsai_receipt_uuid.clone(), None, )?; diff --git a/host/src/operations/info.rs b/host/src/operations/info.rs index 38b3cb03..e70717dd 100644 --- a/host/src/operations/info.rs +++ b/host/src/operations/info.rs @@ -16,11 +16,14 @@ use alloy_sol_types::SolInterface; use log::warn; use zeth_lib::{ consts::Network, - host::provider::{new_provider, BlockQuery}, + host::{ + cache_file_path, + provider::{new_provider, BlockQuery}, + }, optimism::OpSystemInfo, }; -use crate::{cache_file_path, cli::Cli}; +use crate::cli::Cli; pub async fn op_info(cli: Cli) -> anyhow::Result<()> { let core_args = cli.core_args().clone(); diff --git a/host/src/operations/rollups.rs b/host/src/operations/rollups.rs index eb57a6cd..9dabde84 100644 --- a/host/src/operations/rollups.rs +++ b/host/src/operations/rollups.rs @@ -12,22 +12,28 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::collections::VecDeque; +use std::{ + borrow::BorrowMut, + collections::VecDeque, + sync::{Arc, Mutex}, +}; use anyhow::Context; use log::info; +use risc0_zkvm::Assumption; use zeth_guests::*; use zeth_lib::{ - builder::OptimismStrategy, + builder::{BlockBuilderStrategy, OptimismStrategy}, consts::{Network, OP_MAINNET_CHAIN_SPEC}, - host::{preflight::Preflight, rpc_db::RpcDb}, - input::Input, + host::{rpc_db::RpcDb, ProviderFactory}, + input::BlockBuildInput, optimism::{ batcher_db::BatcherDb, composition::{ComposeInput, ComposeInputOperation, ComposeOutputOperation}, config::OPTIMISM_CHAIN_SPEC, DeriveInput, DeriveMachine, }, + output::BlockBuildOutput, }; use zeth_primitives::{ block::Header, @@ -36,126 +42,98 @@ use zeth_primitives::{ }; use crate::{ - cache_file_path, - cli::{Cli, CoreArgs}, - operations::{execute, maybe_prove, verify_bonsai_receipt}, + cli::Cli, + operations::{maybe_prove, verify_bonsai_receipt}, }; -async fn fetch_op_blocks( - core_args: &CoreArgs, - block_number: u64, - block_count: u64, -) -> anyhow::Result>> { - let mut op_blocks = vec![]; - for i in 0..block_count { - let block_number = block_number + i; - let rpc_cache = core_args.cache.as_ref().map(|dir| { - cache_file_path(dir, &Network::Optimism.to_string(), block_number, "json.gz") - }); - let rpc_url = core_args.op_rpc_url.clone(); - // Collect block building data - let preflight_result = tokio::task::spawn_blocking(move || { - OptimismStrategy::run_preflight( - OP_MAINNET_CHAIN_SPEC.clone(), - rpc_cache, - rpc_url, - block_number, - ) - }) - .await? - .context("preflight failed")?; - - // Create the guest input from [Init] - let input = preflight_result - .clone() - .try_into() - .context("invalid preflight data")?; - - op_blocks.push(input); - } - - Ok(op_blocks) -} - pub async fn derive_rollup_blocks(cli: Cli, file_reference: &String) -> anyhow::Result<()> { info!("Fetching data ..."); let core_args = cli.core_args().clone(); - let op_blocks = fetch_op_blocks( - &core_args, - core_args.block_number + 1, - core_args.block_count, + let op_builder_provider_factory = ProviderFactory::new( + core_args.cache.clone(), + Network::Optimism, + core_args.op_rpc_url.clone(), + ); + let receipt_index = Arc::new(Mutex::new(0usize)); + + info!("Running preflight"); + let derive_input = DeriveInput { + db: RpcDb::new( + core_args.eth_rpc_url.clone(), + core_args.op_rpc_url.clone(), + core_args.cache.clone(), + ), + op_head_block_no: core_args.block_number, + op_derive_block_count: core_args.block_count, + op_block_outputs: vec![], + block_image_id: OP_BLOCK_ID, + }; + let mut derive_machine = DeriveMachine::new( + &OPTIMISM_CHAIN_SPEC, + derive_input, + Some(op_builder_provider_factory.clone()), ) - .await?; + .context("Could not create derive machine")?; + let mut op_block_inputs = vec![]; + let derive_output = derive_machine + .derive(Some(&mut op_block_inputs)) + .context("could not derive")?; - let (derive_input, output) = tokio::task::spawn_blocking(move || { - let derive_input = DeriveInput { - db: RpcDb::new( - core_args.eth_rpc_url.clone(), - core_args.op_rpc_url.clone(), - core_args.cache.clone(), - ), - op_head_block_no: core_args.block_number, - op_derive_block_count: core_args.block_count, - op_blocks: op_blocks.clone(), - }; - let mut derive_machine = DeriveMachine::new(&OPTIMISM_CHAIN_SPEC, derive_input) - .context("Could not create derive machine")?; - let derive_output = derive_machine.derive().context("could not derive")?; - let derive_input_mem = DeriveInput { - db: derive_machine.derive_input.db.get_mem_db(), - op_head_block_no: core_args.block_number, - op_derive_block_count: core_args.block_count, - op_blocks, - }; - let out: anyhow::Result<_> = Ok((derive_input_mem, derive_output)); - out - }) - .await? - .context("preflight failed")?; + let (assumptions, bonsai_receipt_uuids, op_block_outputs) = + build_op_blocks(&cli, file_reference, receipt_index.clone(), op_block_inputs); + + let derive_input_mem = DeriveInput { + db: derive_machine.derive_input.db.get_mem_db(), + op_head_block_no: core_args.block_number, + op_derive_block_count: core_args.block_count, + op_block_outputs, + block_image_id: OP_BLOCK_ID, + }; info!("Running from memory ..."); { - let output_mem = DeriveMachine::new(&OPTIMISM_CHAIN_SPEC, derive_input.clone()) - .context("Could not create derive machine")? - .derive() - .unwrap(); - assert_eq!(output, output_mem); + let output_mem = DeriveMachine::new( + &OPTIMISM_CHAIN_SPEC, + derive_input_mem.clone(), + Some(op_builder_provider_factory), + ) + .context("Could not create derive machine")? + .derive(None) + .unwrap(); + assert_eq!(derive_output, output_mem); } info!("In-memory test complete"); - println!("Eth tail: {} {}", output.eth_tail.0, output.eth_tail.1); - println!("Op Head: {} {}", output.op_head.0, output.op_head.1); - for derived_block in &output.derived_op_blocks { + println!( + "Eth tail: {} {}", + derive_output.eth_tail.0, derive_output.eth_tail.1 + ); + println!( + "Op Head: {} {}", + derive_output.op_head.0, derive_output.op_head.1 + ); + for derived_block in &derive_output.derived_op_blocks { println!("Derived: {} {}", derived_block.0, derived_block.1); } match &cli { Cli::Build(..) => {} - Cli::Run(run_args) => { - execute( - &derive_input, - run_args.exec_args.local_exec, - run_args.exec_args.profile, - OP_DERIVE_ELF, - &output, - file_reference, - ); - } + Cli::Run(..) => {} Cli::Prove(..) => { maybe_prove( &cli, - &derive_input, + &derive_input_mem, OP_DERIVE_ELF, - &output, - Default::default(), + &derive_output, + (assumptions, bonsai_receipt_uuids), file_reference, - None, + Some(receipt_index.lock().unwrap().borrow_mut()), ); } Cli::Verify(verify_args) => { verify_bonsai_receipt( OP_DERIVE_ID.into(), - &output, + &derive_output, verify_args.bonsai_receipt_uuid.clone(), None, )?; @@ -177,90 +155,111 @@ pub async fn compose_derived_rollup_blocks( // OP Composition info!("Fetching data ..."); let mut lift_queue = Vec::new(); - let mut receipt_index = 0; - let mut eth_chain: Vec
= Vec::new(); + let receipt_index = Arc::new(Mutex::new(0usize)); + let mut complete_eth_chain: Vec
= Vec::new(); for op_block_index in (0..core_args.block_count).step_by(composition_size as usize) { let db = RpcDb::new( core_args.eth_rpc_url.clone(), core_args.op_rpc_url.clone(), core_args.cache.clone(), ); - let op_head_block_no = core_args.block_number + op_block_index; - let op_blocks = fetch_op_blocks(&core_args, op_head_block_no + 1, composition_size).await?; - - let (input, output, chain) = tokio::task::spawn_blocking(move || { - let derive_input = DeriveInput { - db, - op_head_block_no: core_args.block_number + op_block_index, - op_derive_block_count: composition_size, - op_blocks: op_blocks.clone(), - }; - let mut derive_machine = DeriveMachine::new(&OPTIMISM_CHAIN_SPEC, derive_input) - .expect("Could not create derive machine"); - let eth_head_no = derive_machine.op_batcher.state.epoch.number; - let eth_head = derive_machine - .derive_input - .db - .get_eth_block_header(eth_head_no) - .context("could not fetch eth head")?; - let derive_output = derive_machine.derive().context("could not derive")?; - let eth_tail = derive_machine - .derive_input - .db - .get_eth_block_header(derive_output.eth_tail.0) - .context("could not fetch eth tail")?; - let mut eth_chain = vec![eth_head]; - for block_no in (eth_head_no + 1)..eth_tail.number { - let eth_block = derive_machine + let op_builder_provider_factory = ProviderFactory::new( + core_args.cache.clone(), + Network::Optimism, + core_args.op_rpc_url.clone(), + ); + + let derive_input = DeriveInput { + db, + op_head_block_no: core_args.block_number + op_block_index, + op_derive_block_count: composition_size, + op_block_outputs: vec![], + block_image_id: OP_BLOCK_ID, + }; + let mut derive_machine = DeriveMachine::new( + &OPTIMISM_CHAIN_SPEC, + derive_input, + Some(op_builder_provider_factory.clone()), + ) + .expect("Could not create derive machine"); + let eth_head_no = derive_machine.op_batcher.state.epoch.number; + let eth_head = derive_machine + .derive_input + .db + .get_full_eth_block(eth_head_no) + .context("could not fetch eth head")? + .block_header + .clone(); + let mut op_block_inputs = vec![]; + let derive_output = derive_machine + .derive(Some(&mut op_block_inputs)) + .context("could not derive")?; + let eth_tail = derive_machine + .derive_input + .db + .get_full_eth_block(derive_output.eth_tail.0) + .context("could not fetch eth tail")? + .block_header + .clone(); + let mut eth_chain = vec![eth_head]; + for block_no in (eth_head_no + 1)..eth_tail.number { + eth_chain.push( + derive_machine .derive_input .db - .get_eth_block_header(block_no) - .context("could not fetch eth block")?; - eth_chain.push(eth_block); - } - eth_chain.push(eth_tail); + .get_full_eth_block(block_no) + .context("could not fetch eth block")? + .block_header + .clone(), + ); + } + eth_chain.push(eth_tail); - let derive_input_mem = DeriveInput { - db: derive_machine.derive_input.db.get_mem_db(), - op_head_block_no: core_args.block_number + op_block_index, - op_derive_block_count: composition_size, - op_blocks, - }; - let out: anyhow::Result<_> = Ok((derive_input_mem, derive_output, eth_chain)); - out - }) - .await??; + let (assumptions, bonsai_receipt_uuids, op_block_outputs) = + build_op_blocks(&cli, file_reference, receipt_index.clone(), op_block_inputs); + + let derive_input_mem = DeriveInput { + db: derive_machine.derive_input.db.get_mem_db(), + op_head_block_no: core_args.block_number + op_block_index, + op_derive_block_count: composition_size, + op_block_outputs, + block_image_id: OP_BLOCK_ID, + }; info!("Deriving ..."); { - let output_mem = DeriveMachine::new(&OPTIMISM_CHAIN_SPEC, input.clone()) - .expect("Could not create derive machine") - .derive() - .unwrap(); - assert_eq!(output, output_mem); + let output_mem = DeriveMachine::new( + &OPTIMISM_CHAIN_SPEC, + derive_input_mem.clone(), + Some(op_builder_provider_factory), + ) + .expect("Could not create derive machine") + .derive(None) + .context("could not derive")?; + assert_eq!(derive_output, output_mem); } let receipt = maybe_prove( &cli, - &input, + &derive_input_mem, OP_DERIVE_ELF, - &output, - Default::default(), + &derive_output, + (assumptions, bonsai_receipt_uuids), file_reference, - Some(&mut receipt_index), + Some(receipt_index.lock().unwrap().borrow_mut()), ); // Append derivation outputs to lift queue - lift_queue.push((output, receipt)); + lift_queue.push((derive_output, receipt)); // Extend block chain - for block in chain { - let tail_num = match eth_chain.last() { + for block in eth_chain { + let tail_num = match complete_eth_chain.last() { None => 0u64, Some(tail) => tail.number, }; // This check should be sufficient if tail_num < block.number { - eth_chain.push(block); + complete_eth_chain.push(block); } } } @@ -269,17 +268,18 @@ pub async fn compose_derived_rollup_blocks( // Prep let mut sibling_map = Default::default(); let mut eth_mountain_range: MerkleMountainRange = Default::default(); - for block in ð_chain { + for block in &complete_eth_chain { eth_mountain_range.append_leaf(block.hash().0, Some(&mut sibling_map)); } let eth_chain_root = eth_mountain_range .root(Some(&mut sibling_map)) .expect("No eth blocks loaded!"); let prep_compose_input = ComposeInput { + block_image_id: OP_BLOCK_ID, derive_image_id: OP_DERIVE_ID, compose_image_id: OP_COMPOSE_ID, operation: ComposeInputOperation::PREP { - eth_blocks: eth_chain, + eth_blocks: complete_eth_chain, prior_prep: None, }, eth_chain_merkle_root: eth_chain_root, @@ -297,14 +297,16 @@ pub async fn compose_derived_rollup_blocks( &prep_compose_output, Default::default(), file_reference, - Some(&mut receipt_index), + Some(receipt_index.lock().unwrap().borrow_mut()), ); // Lift let mut join_queue = VecDeque::new(); for (derive_output, derive_receipt) in lift_queue { let eth_tail_hash = derive_output.eth_tail.1 .0; + info!("Lifting ... {:?}", &derive_output); let lift_compose_input = ComposeInput { + block_image_id: OP_BLOCK_ID, derive_image_id: OP_DERIVE_ID, compose_image_id: OP_COMPOSE_ID, operation: ComposeInputOperation::LIFT { @@ -313,11 +315,11 @@ pub async fn compose_derived_rollup_blocks( }, eth_chain_merkle_root: eth_chain_root, }; - info!("Lifting ..."); let lift_compose_output = lift_compose_input .clone() .process() .expect("Lift composition failed."); + info!("Lifted ... {:?}", &lift_compose_output); let lift_compose_receipt = if let Some((receipt_uuid, receipt)) = derive_receipt { maybe_prove( @@ -327,7 +329,7 @@ pub async fn compose_derived_rollup_blocks( &lift_compose_output, (vec![receipt.into()], vec![receipt_uuid]), file_reference, - Some(&mut receipt_index), + Some(receipt_index.lock().unwrap().borrow_mut()), ) } else { None @@ -338,8 +340,11 @@ pub async fn compose_derived_rollup_blocks( // Join while join_queue.len() > 1 { + // Pop left output let (left, left_receipt) = join_queue.pop_front().unwrap(); + // Only peek at right output let (right, _right_receipt) = join_queue.front().unwrap(); + info!("Joining"); let ComposeOutputOperation::AGGREGATE { op_tail: left_op_tail, .. @@ -356,12 +361,17 @@ pub async fn compose_derived_rollup_blocks( }; // Push dangling workloads (odd block count) to next round if left_op_tail != right_op_head { + info!( + "Skipping dangling workload: {} - {}", + left_op_tail.0, right_op_head.0 + ); join_queue.push_back((left, left_receipt)); continue; } - // Pair up join + // Actually pop right output for pairing let (right, right_receipt) = join_queue.pop_front().unwrap(); let join_compose_input = ComposeInput { + block_image_id: OP_BLOCK_ID, derive_image_id: OP_DERIVE_ID, compose_image_id: OP_COMPOSE_ID, operation: ComposeInputOperation::JOIN { left, right }, @@ -388,7 +398,7 @@ pub async fn compose_derived_rollup_blocks( vec![left_receipt_uuid, right_receipt_uuid], ), file_reference, - Some(&mut receipt_index), + Some(receipt_index.lock().unwrap().borrow_mut()), ) } else { None @@ -401,6 +411,7 @@ pub async fn compose_derived_rollup_blocks( // Finish let (aggregate_output, aggregate_receipt) = join_queue.pop_front().unwrap(); let finish_compose_input = ComposeInput { + block_image_id: OP_BLOCK_ID, derive_image_id: OP_DERIVE_ID, compose_image_id: OP_COMPOSE_ID, operation: ComposeInputOperation::FINISH { @@ -430,7 +441,7 @@ pub async fn compose_derived_rollup_blocks( vec![prep_receipt_uuid, aggregate_receipt_uuid], ), file_reference, - Some(&mut receipt_index), + Some(receipt_index.lock().unwrap().borrow_mut()), ); } else if let Cli::Verify(verify_args) = cli { verify_bonsai_receipt( @@ -447,3 +458,34 @@ pub async fn compose_derived_rollup_blocks( Ok(()) } + +fn build_op_blocks( + cli: &Cli, + file_reference: &String, + receipt_index: Arc>, + op_block_inputs: Vec>, +) -> (Vec, Vec, Vec) { + let mut assumptions: Vec = vec![]; + let mut bonsai_uuids = vec![]; + let mut op_block_outputs = vec![]; + for input in op_block_inputs { + let output = OptimismStrategy::build_from(&OP_MAINNET_CHAIN_SPEC, input.clone()) + .expect("Failed to build op block") + .with_state_compressed(); + + if let Some((bonsai_receipt_uuid, receipt)) = maybe_prove( + cli, + &input, + OP_BLOCK_ELF, + &output, + Default::default(), + file_reference, + Some(receipt_index.lock().unwrap().borrow_mut()), + ) { + assumptions.push(receipt.into()); + bonsai_uuids.push(bonsai_receipt_uuid); + } + op_block_outputs.push(output); + } + (assumptions, bonsai_uuids, op_block_outputs) +} diff --git a/host/testdata/derivation/optimism/109279674.json.gz b/host/testdata/derivation/optimism/109279674.json.gz index 1fc93512..ebd22b78 100644 Binary files a/host/testdata/derivation/optimism/109279674.json.gz and b/host/testdata/derivation/optimism/109279674.json.gz differ diff --git a/host/testdata/derivation/optimism/109279675.json.gz b/host/testdata/derivation/optimism/109279675.json.gz index 7434919e..caeed4b9 100644 Binary files a/host/testdata/derivation/optimism/109279675.json.gz and b/host/testdata/derivation/optimism/109279675.json.gz differ diff --git a/host/testdata/derivation/optimism/109279676.json.gz b/host/testdata/derivation/optimism/109279676.json.gz index efe9541d..af3eb10b 100644 Binary files a/host/testdata/derivation/optimism/109279676.json.gz and b/host/testdata/derivation/optimism/109279676.json.gz differ diff --git a/host/testdata/derivation/optimism/109279677.json.gz b/host/testdata/derivation/optimism/109279677.json.gz index b36645f5..cab3f9ca 100644 Binary files a/host/testdata/derivation/optimism/109279677.json.gz and b/host/testdata/derivation/optimism/109279677.json.gz differ diff --git a/host/testdata/derivation/optimism/109279678.json.gz b/host/testdata/derivation/optimism/109279678.json.gz index e59b69bd..ef2c4a91 100644 Binary files a/host/testdata/derivation/optimism/109279678.json.gz and b/host/testdata/derivation/optimism/109279678.json.gz differ diff --git a/host/testdata/derivation/optimism/109279679.json.gz b/host/testdata/derivation/optimism/109279679.json.gz index 4b0d1d08..218fdb29 100644 Binary files a/host/testdata/derivation/optimism/109279679.json.gz and b/host/testdata/derivation/optimism/109279679.json.gz differ diff --git a/host/testdata/optimism/107728767.json.gz b/host/testdata/optimism/107728767.json.gz index d4039ddf..a6b5f7bd 100644 Binary files a/host/testdata/optimism/107728767.json.gz and b/host/testdata/optimism/107728767.json.gz differ diff --git a/host/testdata/optimism/109194691.json.gz b/host/testdata/optimism/109194691.json.gz index a062e0f9..018fd08c 100644 Binary files a/host/testdata/optimism/109194691.json.gz and b/host/testdata/optimism/109194691.json.gz differ diff --git a/host/tests/cmd.rs b/host/tests/cmd.rs index 9309242b..803f1002 100644 --- a/host/tests/cmd.rs +++ b/host/tests/cmd.rs @@ -12,21 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::{ - path::{Path, PathBuf}, - str::FromStr, -}; +use std::path::{Path, PathBuf}; use assert_cmd::Command; -use risc0_zkvm::{ExecutorEnv, ExecutorImpl, FileSegmentRef}; use rstest::rstest; -use tempfile::tempdir; -use zeth_guests::ETH_BLOCK_ELF; -use zeth_lib::{ - builder::EthereumStrategy, consts::ETH_MAINNET_CHAIN_SPEC, host::preflight::Preflight, - input::Input, -}; -use zeth_primitives::{transactions::ethereum::EthereumTxEssence, trie::MptNodeData}; fn file_prefix(path: &Path) -> &str { let file_name = path.file_name().unwrap().to_str().unwrap(); @@ -41,6 +30,23 @@ fn zeth_ethereum(#[files("testdata/ethereum/*.json.gz")] path: PathBuf) { .unwrap() .args([ "build", + "--network=ethereum", + "--cache=testdata", + &format!("--block-number={}", block_no), + ]) + .assert() + .success(); +} + +#[rstest] +fn zeth_optimism(#[files("testdata/optimism/*.json.gz")] path: PathBuf) { + let block_no = file_prefix(&path); + + Command::cargo_bin("zeth") + .unwrap() + .args([ + "build", + "--network=optimism", "--cache=testdata", &format!("--block-number={}", block_no), ]) @@ -63,44 +69,3 @@ fn derive_optimism(#[case] op_block_no: u64, #[case] op_blocks: u64) { .assert() .success(); } - -#[rstest] -fn empty_blocks(#[files("testdata/ethereum/*.json.gz")] path: PathBuf) { - let block_no = u64::from_str(file_prefix(&path)).unwrap(); - // Set block cache directory - let rpc_cache = Some(PathBuf::from(format!( - "testdata/ethereum/{}.json.gz", - block_no - ))); - // Fetch all of the preflight data - let init = - EthereumStrategy::run_preflight(ETH_MAINNET_CHAIN_SPEC.clone(), rpc_cache, None, block_no) - .expect("Could not init"); - // Create input object - let mut input: Input = init.clone().try_into().unwrap(); - // Take out transaction and withdrawal execution data - input.transactions = Default::default(); - input.withdrawals = Default::default(); - input.contracts = Default::default(); - input.parent_state_trie = MptNodeData::Digest(input.parent_state_trie.hash()).into(); - input.parent_storage = Default::default(); - input.ancestor_headers = Default::default(); - // Prepare executor - let env = ExecutorEnv::builder() - .session_limit(None) - .segment_limit_po2(20) - .write(&input) - .unwrap() - .build() - .unwrap(); - let mut exec = ExecutorImpl::from_elf(env, ETH_BLOCK_ELF).unwrap(); - // Run Executor - let segment_dir = tempdir().unwrap(); - let session = exec - .run_with_callback(|segment| { - Ok(Box::new(FileSegmentRef::new(&segment, segment_dir.path())?)) - }) - .unwrap(); - // Output segment count - println!("Generated {} segments", session.segments.len()); -} diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 435551f2..969c3f45 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -alloy-sol-types = "0.4" +alloy-sol-types = "0.6" anyhow = "1.0" bytes = "1.5" ethers-core = { version = "2.0", features = ["optimism"] } @@ -12,7 +12,7 @@ hashbrown = { workspace = true } libflate = "2.0.0" once_cell = "1.18" revm = { workspace = true } -risc0-zkvm = { version = "0.20.0-rc.2", default-features = false, features = ['std'] } +risc0-zkvm = { version = "0.20.0-rc.3", default-features = false, features = ['std'] } ruint = { version = "1.10", default-features = false } serde = "1.0" thiserror = "1.0" diff --git a/lib/src/builder/execute/ethereum.rs b/lib/src/builder/execute/ethereum.rs index 36d11f35..c8cc58b0 100644 --- a/lib/src/builder/execute/ethereum.rs +++ b/lib/src/builder/execute/ethereum.rs @@ -1,4 +1,4 @@ -// Copyright 2023 RISC Zero, Inc. +// Copyright 2024 RISC Zero, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,8 +18,9 @@ use anyhow::{anyhow, bail, Context}; #[cfg(not(target_os = "zkvm"))] use log::debug; use revm::{ + interpreter::Host, primitives::{Account, Address, ResultAndState, SpecId, TransactTo, TxEnv}, - Database, DatabaseCommit, EVM, + Database, DatabaseCommit, Evm, }; use ruint::aliases::U256; use zeth_primitives::{ @@ -33,12 +34,10 @@ use zeth_primitives::{ }; use super::TxExecStrategy; -use crate::{ - builder::BlockBuilder, - consts, - consts::{GWEI_TO_WEI, MIN_SPEC_ID}, - guest_mem_forget, -}; +use crate::{builder::BlockBuilder, consts, guest_mem_forget}; + +/// Minimum supported protocol version: Paris (Block no. 15537394). +const MIN_SPEC_ID: SpecId = SpecId::MERGE; pub struct EthTxExecStrategy {} @@ -83,23 +82,26 @@ impl TxExecStrategy for EthTxExecStrategy { info!(" Extra data: {:?}", block_builder.input.extra_data); } - // initialize the EVM - let mut evm = EVM::new(); - - // set the EVM configuration - evm.env.cfg.chain_id = block_builder.chain_spec.chain_id(); - evm.env.cfg.spec_id = spec_id; - - // set the EVM block environment - evm.env.block.number = header.number.try_into().unwrap(); - evm.env.block.coinbase = block_builder.input.beneficiary; - evm.env.block.timestamp = header.timestamp; - evm.env.block.difficulty = U256::ZERO; - evm.env.block.prevrandao = Some(header.mix_hash); - evm.env.block.basefee = header.base_fee_per_gas; - evm.env.block.gas_limit = block_builder.input.gas_limit; - - evm.database(block_builder.db.take().unwrap()); + // initialize the Evm + let mut evm = Evm::builder() + .spec_id(spec_id) + .modify_cfg_env(|cfg_env| { + // set the EVM configuration + cfg_env.chain_id = block_builder.chain_spec.chain_id(); + cfg_env.optimism = false; + }) + .modify_block_env(|blk_env| { + // set the EVM block environment + blk_env.number = header.number.try_into().unwrap(); + blk_env.coinbase = block_builder.input.beneficiary; + blk_env.timestamp = header.timestamp; + blk_env.difficulty = U256::ZERO; + blk_env.prevrandao = Some(header.mix_hash); + blk_env.basefee = header.base_fee_per_gas; + blk_env.gas_limit = block_builder.input.gas_limit; + }) + .with_db(block_builder.db.take().unwrap()) + .build(); // bloom filter over all transaction logs let mut logs_bloom = Bloom::default(); @@ -134,7 +136,7 @@ impl TxExecStrategy for EthTxExecStrategy { } // process the transaction - fill_eth_tx_env(&mut evm.env.tx, &tx.essence, tx_from); + fill_eth_tx_env(&mut evm.env().tx, &tx.essence, tx_from); let ResultAndState { result, state } = evm .transact() .map_err(|evm_err| anyhow!("Error at transaction {}: {:?}", tx_no, evm_err))?; @@ -195,11 +197,9 @@ impl TxExecStrategy for EthTxExecStrategy { } } - evm.db().unwrap().commit(state); + evm.context.evm.db.commit(state); } - let mut db = evm.take_db(); - // process withdrawals unconditionally after any transactions let mut withdrawals_trie = MptNode::default(); for (i, withdrawal) in take(&mut block_builder.input.withdrawals) @@ -207,7 +207,7 @@ impl TxExecStrategy for EthTxExecStrategy { .enumerate() { // the withdrawal amount is given in Gwei - let amount_wei = GWEI_TO_WEI + let amount_wei = consts::GWEI_TO_WEI .checked_mul(withdrawal.amount.try_into().unwrap()) .unwrap(); @@ -218,7 +218,7 @@ impl TxExecStrategy for EthTxExecStrategy { debug!(" Value: {}", amount_wei); } // Credit withdrawal amount - increase_account_balance(&mut db, withdrawal.address, amount_wei)?; + increase_account_balance(&mut evm.context.evm.db, withdrawal.address, amount_wei)?; // Add withdrawal to trie withdrawals_trie .insert_rlp(&i.to_rlp(), withdrawal) @@ -239,7 +239,7 @@ impl TxExecStrategy for EthTxExecStrategy { // Leak memory, save cycles guest_mem_forget([tx_trie, receipt_trie, withdrawals_trie]); // Return block builder with updated database - Ok(block_builder.with_db(db)) + Ok(block_builder.with_db(evm.context.evm.db)) } } diff --git a/lib/src/builder/execute/optimism.rs b/lib/src/builder/execute/optimism.rs index a236a86b..18ff546a 100644 --- a/lib/src/builder/execute/optimism.rs +++ b/lib/src/builder/execute/optimism.rs @@ -1,4 +1,4 @@ -// Copyright 2023 RISC Zero, Inc. +// Copyright 2024 RISC Zero, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,14 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -use core::{fmt::Debug, mem::take, str::FromStr}; +use core::{fmt::Debug, mem::take}; use anyhow::{anyhow, bail, Context, Result}; #[cfg(not(target_os = "zkvm"))] use log::debug; use revm::{ - primitives::{Account, Address, ResultAndState, SpecId, TransactTo, TxEnv}, - Database, DatabaseCommit, EVM, + interpreter::Host, + optimism, + primitives::{Address, ResultAndState, SpecId, TransactTo, TxEnv}, + Database, DatabaseCommit, Evm, }; use ruint::aliases::U256; use zeth_primitives::{ @@ -30,19 +32,15 @@ use zeth_primitives::{ TxEssence, }, trie::MptNode, - Bloom, RlpBytes, + Bloom, Bytes, RlpBytes, }; -use super::{ - ethereum::{fill_eth_tx_env, increase_account_balance}, - TxExecStrategy, -}; -use crate::{ - builder::BlockBuilder, - consts, - consts::{GWEI_TO_WEI, MIN_SPEC_ID}, - guest_mem_forget, -}; +use super::{ethereum, TxExecStrategy}; +use crate::{builder::BlockBuilder, consts, guest_mem_forget}; + +/// Minimum supported protocol version: Bedrock (Block no. 105235063). +const MIN_SPEC_ID: SpecId = SpecId::BEDROCK; + pub struct OpTxExecStrategy {} impl TxExecStrategy for OpTxExecStrategy { @@ -80,59 +78,38 @@ impl TxExecStrategy for OpTxExecStrategy { info!(" EVM spec ID: {:?}", spec_id); info!(" Timestamp: {}", dt); info!(" Transactions: {}", block_builder.input.transactions.len()); - info!(" Withdrawals: {}", block_builder.input.withdrawals.len()); info!(" Fee Recipient: {:?}", block_builder.input.beneficiary); info!(" Gas limit: {}", block_builder.input.gas_limit); info!(" Base fee per gas: {}", header.base_fee_per_gas); info!(" Extra data: {:?}", block_builder.input.extra_data); } - // initialize the EVM - let mut evm = EVM::new(); - - // set the EVM configuration - evm.env.cfg.chain_id = chain_id; - evm.env.cfg.spec_id = spec_id; - - // set the EVM block environment - evm.env.block.number = header.number.try_into().unwrap(); - evm.env.block.coinbase = block_builder.input.beneficiary; - evm.env.block.timestamp = header.timestamp; - evm.env.block.difficulty = U256::ZERO; - evm.env.block.prevrandao = Some(header.mix_hash); - evm.env.block.basefee = header.base_fee_per_gas; - evm.env.block.gas_limit = block_builder.input.gas_limit; - - evm.database(block_builder.db.take().unwrap()); + let mut evm = Evm::builder() + .spec_id(spec_id) + .modify_cfg_env(|cfg_env| { + // set the EVM configuration + cfg_env.chain_id = chain_id; + cfg_env.optimism = true; + }) + .modify_block_env(|blk_env| { + // set the EVM block environment + blk_env.number = header.number.try_into().unwrap(); + blk_env.coinbase = block_builder.input.beneficiary; + blk_env.timestamp = header.timestamp; + blk_env.difficulty = U256::ZERO; + blk_env.prevrandao = Some(header.mix_hash); + blk_env.basefee = header.base_fee_per_gas; + blk_env.gas_limit = block_builder.input.gas_limit; + }) + .with_db(block_builder.db.take().unwrap()) + .append_handler_register(optimism::optimism_handle_register) + .build(); // bloom filter over all transaction logs let mut logs_bloom = Bloom::default(); // keep track of the gas used over all transactions let mut cumulative_gas_used = consts::ZERO; - let l1_info_depositor_address = - Address::from_str("0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001").unwrap(); - - let l1_block_attr_pre_deploy = - Address::from_str("0x4200000000000000000000000000000000000015").unwrap(); - - let l1_gas_oracle_pre_deploy = - Address::from_str("0x420000000000000000000000000000000000000F").unwrap(); - - let l1_fee_vault_pre_deploy = - Address::from_str("0x420000000000000000000000000000000000001A").unwrap(); - - let base_fee_vault_pre_deploy = - Address::from_str("0x4200000000000000000000000000000000000019").unwrap(); - - let l1_fee_overhead_decimals = U256::from(10).pow(read_uint( - &mut evm, - vec![0x31u8, 0x3cu8, 0xe5u8, 0x67u8], - Some(chain_id), - header.gas_limit, - l1_gas_oracle_pre_deploy, - )?); - // process all the transactions let mut tx_trie = MptNode::default(); let mut receipt_trie = MptNode::default(); @@ -140,87 +117,39 @@ impl TxExecStrategy for OpTxExecStrategy { .into_iter() .enumerate() { - // verify the transaction signature - let tx_from = tx - .recover_from() - .with_context(|| format!("Error recovering address for transaction {}", tx_no))?; - #[cfg(not(target_os = "zkvm"))] { let tx_hash = tx.hash(); debug!("Tx no. {} (hash: {})", tx_no, tx_hash); debug!(" Type: {}", tx.essence.tx_type()); - debug!(" Fr: {:?}", tx_from); debug!(" To: {:?}", tx.essence.to().unwrap_or_default()); } + // verify the transaction signature + let tx_from = tx + .recover_from() + .with_context(|| format!("Error recovering address for transaction {}", tx_no))?; + // verify transaction gas let block_available_gas = block_builder.input.gas_limit - cumulative_gas_used; if block_available_gas < tx.essence.gas_limit() { bail!("Error at transaction {}: gas exceeds block limit", tx_no); } - let l1_gas_fees = match &tx.essence { + match &tx.essence { OptimismTxEssence::OptimismDeposited(deposit) => { - // Disable gas fees - evm.env.cfg.disable_base_fee = true; - evm.env.cfg.disable_balance_check = true; - // Irrevocably credit minted amount - let db = evm.db().unwrap(); - increase_account_balance(db, tx_from, deposit.mint)?; - // Retrieve effective nonce - // todo: read this from contract - let effective_nonce = if tx_from == l1_info_depositor_address { - None - } else { - Some(db.basic(tx_from).unwrap().unwrap_or_default().nonce) - }; - // Initialize tx environment - fill_deposit_tx_env(&mut evm.env.tx, deposit, tx_from, effective_nonce); - - U256::ZERO - } - OptimismTxEssence::Ethereum(transaction) => { - // L1 gas fee - // todo: read these values only once after processing the first system tx - let l1_base_fee = read_uint( - &mut evm, - vec![0x5cu8, 0xf2u8, 0x49u8, 0x69u8], - Some(chain_id), - header.gas_limit, - l1_block_attr_pre_deploy, - )?; - let l1_fee_overhead = read_uint( - &mut evm, - vec![0x8bu8, 0x23u8, 0x9fu8, 0x73u8], - Some(chain_id), - header.gas_limit, - l1_block_attr_pre_deploy, - )?; - let l1_fee_scalar = read_uint( - &mut evm, - vec![0x9eu8, 0x8cu8, 0x49u8, 0x66u8], - Some(chain_id), - header.gas_limit, - l1_block_attr_pre_deploy, - )?; - - let tx_data = tx.to_rlp(); - let non_zero = tx_data.iter().filter(|b| *b > &0u8).count() as u128; - let zeroes = tx_data.len() as u128 - non_zero; - let l1_gas = U256::from(16u128 * non_zero + 4u128 * zeroes) + l1_fee_overhead; - let l1_gas_fees = - (l1_base_fee * l1_gas * l1_fee_scalar) / l1_fee_overhead_decimals; - - // Deduct L1 fee from sender - decrease_account_balance(evm.db().unwrap(), tx_from, l1_gas_fees)?; + #[cfg(not(target_os = "zkvm"))] + { + debug!(" Source: {:?}", &deposit.source_hash); + debug!(" Mint: {:?}", &deposit.mint); + debug!(" System Tx: {:?}", deposit.is_system_tx); + } - // Enable gas fees - evm.env.cfg.disable_base_fee = false; - evm.env.cfg.disable_balance_check = false; // Initialize tx environment - fill_eth_tx_env(&mut evm.env.tx, transaction, tx_from); - l1_gas_fees + fill_deposit_tx_env(&mut evm.env().tx, deposit, tx_from); + } + OptimismTxEssence::Ethereum(essence) => { + fill_eth_tx_env(&mut evm.env().tx, tx.to_rlp(), essence, tx_from); } }; @@ -272,20 +201,7 @@ impl TxExecStrategy for OpTxExecStrategy { } } - let db = evm.db().unwrap(); - - db.commit(state); - - if !matches!(tx.essence, OptimismTxEssence::OptimismDeposited(_)) { - // Credit L2 base fee - increase_account_balance( - db, - base_fee_vault_pre_deploy, - gas_used * header.base_fee_per_gas, - )?; - // Credit L1 gas fee - increase_account_balance(db, l1_fee_vault_pre_deploy, l1_gas_fees)?; - } + evm.context.evm.db.commit(state); // accumulate logs to the block bloom filter logs_bloom.accrue_bloom(&receipt.payload.logs_bloom); @@ -300,167 +216,49 @@ impl TxExecStrategy for OpTxExecStrategy { .context("failed to insert receipt")?; } - let mut db = evm.take_db(); - - // process withdrawals unconditionally after any transactions - let mut withdrawals_trie = MptNode::default(); - for (i, withdrawal) in take(&mut block_builder.input.withdrawals) - .into_iter() - .enumerate() - { - // the withdrawal amount is given in Gwei - let amount_wei = GWEI_TO_WEI - .checked_mul(withdrawal.amount.try_into().unwrap()) - .unwrap(); - - #[cfg(not(target_os = "zkvm"))] - { - debug!("Withdrawal no. {}", withdrawal.index); - debug!(" Recipient: {:?}", withdrawal.address); - debug!(" Value: {}", amount_wei); - } - // Read account from database - let withdrawal_address = withdrawal.address; - let mut withdrawal_account: Account = db - .basic(withdrawal.address) - .map_err(|db_err| anyhow!("Error at withdrawal {}: {:?}", i, db_err))? - .unwrap_or_default() - .into(); - // Credit withdrawal amount - withdrawal_account.info.balance = withdrawal_account - .info - .balance - .checked_add(amount_wei) - .unwrap(); - withdrawal_account.mark_touch(); - // Commit changes to database - db.commit([(withdrawal_address, withdrawal_account)].into()); - // Add withdrawal to trie - withdrawals_trie - .insert_rlp(&i.to_rlp(), withdrawal) - .context("failed to insert withdrawal")?; - } - // Update result header with computed values header.transactions_root = tx_trie.hash(); header.receipts_root = receipt_trie.hash(); header.logs_bloom = logs_bloom; header.gas_used = cumulative_gas_used; - header.withdrawals_root = if spec_id < SpecId::SHANGHAI { - None - } else { - Some(withdrawals_trie.hash()) - }; + header.withdrawals_root = None; // Leak memory, save cycles - guest_mem_forget([tx_trie, receipt_trie, withdrawals_trie]); + guest_mem_forget([tx_trie, receipt_trie]); // Return block builder with updated database - Ok(block_builder.with_db(db)) + Ok(block_builder.with_db(evm.context.evm.db)) } } -fn read_uint( - evm: &mut EVM, - abi_call: Vec, - chain_id: Option, - gas_limit: U256, - address: Address, -) -> Result -where - D: Database + DatabaseCommit, - ::Error: Debug, -{ - let op_l1_tx = - EthereumTxEssence::Legacy(zeth_primitives::transactions::ethereum::TxEssenceLegacy { - chain_id, - nonce: 0, - gas_price: U256::ZERO, - gas_limit, - to: TransactionKind::Call(address), - value: U256::ZERO, - data: abi_call.into(), - }); - - // disable base fees - evm.env.cfg.disable_base_fee = true; - evm.env.cfg.disable_balance_check = true; - fill_eth_tx_env(&mut evm.env.tx, &op_l1_tx, Default::default()); - - let Ok(ResultAndState { - result: execution_result, - .. - }) = evm.transact() - else { - bail!("Error during execution"); - }; - - let revm::primitives::ExecutionResult::Success { output, .. } = execution_result else { - bail!("Result unsuccessful"); - }; - - let revm::primitives::Output::Call(result_encoded) = output else { - bail!("Unsupported result"); - }; - - let ethers_core::abi::Token::Uint(uint_result) = - ethers_core::abi::decode(&[ethers_core::abi::ParamType::Uint(256)], &result_encoded)? - .pop() - .unwrap() - else { - bail!("Could not decode result"); - }; +fn fill_deposit_tx_env(tx_env: &mut TxEnv, essence: &TxEssenceOptimismDeposited, caller: Address) { + // initialize additional optimism tx fields + tx_env.optimism.source_hash = Some(essence.source_hash); + tx_env.optimism.mint = Some(essence.mint.try_into().unwrap()); + tx_env.optimism.is_system_transaction = Some(essence.is_system_tx); + tx_env.optimism.enveloped_tx = None; // only used for non-deposit txs - Ok(U256::from_limbs(uint_result.0)) -} - -fn fill_deposit_tx_env( - tx_env: &mut TxEnv, - tx: &TxEssenceOptimismDeposited, - caller: Address, - deposit_nonce: Option, -) { tx_env.caller = caller; // previously overridden to tx.from - tx_env.gas_limit = tx.gas_limit.try_into().unwrap(); + tx_env.gas_limit = essence.gas_limit.try_into().unwrap(); tx_env.gas_price = U256::ZERO; tx_env.gas_priority_fee = None; - tx_env.transact_to = if let TransactionKind::Call(to_addr) = tx.to { + tx_env.transact_to = if let TransactionKind::Call(to_addr) = essence.to { TransactTo::Call(to_addr) } else { TransactTo::create() }; - tx_env.value = tx.value; - tx_env.data = tx.data.clone(); + tx_env.value = essence.value; + tx_env.data = essence.data.clone(); tx_env.chain_id = None; - tx_env.nonce = deposit_nonce; + tx_env.nonce = None; tx_env.access_list.clear(); } -pub fn decrease_account_balance( - db: &mut D, - address: Address, - amount_wei: U256, -) -> anyhow::Result<()> -where - D: Database + DatabaseCommit, - ::Error: Debug, -{ - // Read account from database - let mut account: Account = db - .basic(address) - .map_err(|db_err| { - anyhow!( - "Error decreasing account balance for {}: {:?}", - address, - db_err - ) - })? - .unwrap_or_default() - .into(); - // Credit withdrawal amount - account.info.balance = account.info.balance.checked_sub(amount_wei).unwrap(); - account.mark_touch(); - // Commit changes to database - db.commit([(address, account)].into()); +fn fill_eth_tx_env(tx_env: &mut TxEnv, tx: Vec, essence: &EthereumTxEssence, caller: Address) { + // initialize additional optimism tx fields + tx_env.optimism.source_hash = None; + tx_env.optimism.mint = None; + tx_env.optimism.is_system_transaction = Some(false); + tx_env.optimism.enveloped_tx = Some(Bytes::from(tx)); - Ok(()) + ethereum::fill_eth_tx_env(tx_env, essence, caller); } diff --git a/lib/src/builder/mod.rs b/lib/src/builder/mod.rs index 7763b803..3625838c 100644 --- a/lib/src/builder/mod.rs +++ b/lib/src/builder/mod.rs @@ -12,6 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. +#[cfg(not(target_os = "zkvm"))] +use std::sync::{Arc, Mutex}; + use anyhow::Result; use revm::{Database, DatabaseCommit}; use zeth_primitives::{ @@ -28,8 +31,9 @@ use crate::{ prepare::{EthHeaderPrepStrategy, HeaderPrepStrategy}, }, consts::ChainSpec, - input::Input, + input::BlockBuildInput, mem_db::MemDb, + output::BlockBuildOutput, }; mod execute; @@ -37,13 +41,33 @@ mod finalize; mod initialize; mod prepare; +#[cfg(not(target_os = "zkvm"))] +type DatabaseRescue = Arc>>; +#[cfg(target_os = "zkvm")] +type DatabaseRescue = core::marker::PhantomData; + /// A generic builder for building a block. #[derive(Clone, Debug)] pub struct BlockBuilder<'a, D, E: TxEssence> { pub(crate) chain_spec: &'a ChainSpec, - pub(crate) input: Input, + pub(crate) input: BlockBuildInput, pub(crate) db: Option, pub(crate) header: Option
, + pub db_drop_destination: Option>, +} + +// This implementation allows us to recover data during erroneous block builds on the host +#[cfg(not(target_os = "zkvm"))] +impl<'a, D, E: TxEssence> Drop for BlockBuilder<'a, D, E> { + fn drop(&mut self) { + if let Some(backup_target) = &mut self.db_drop_destination { + if let Some(dropped_db) = self.db.take() { + if let Ok(mut target_option) = backup_target.lock() { + target_option.replace(dropped_db); + } + } + } + } } impl BlockBuilder<'_, D, E> @@ -53,12 +77,17 @@ where E: TxEssence, { /// Creates a new block builder. - pub fn new(chain_spec: &ChainSpec, input: Input) -> BlockBuilder<'_, D, E> { + pub fn new( + chain_spec: &ChainSpec, + input: BlockBuildInput, + db_backup: Option>, + ) -> BlockBuilder<'_, D, E> { BlockBuilder { chain_spec, db: None, header: None, input, + db_drop_destination: db_backup, } } @@ -97,6 +126,11 @@ where pub fn mut_db(&mut self) -> Option<&mut D> { self.db.as_mut() } + + /// Destroys the builder and returns the database + pub fn take_db(mut self) -> Option { + self.db.take() + } } /// A bundle of strategies for building a block using [BlockBuilder]. @@ -111,13 +145,41 @@ pub trait BlockBuilderStrategy { /// Builds a block from the given input. fn build_from( chain_spec: &ChainSpec, - input: Input, - ) -> Result<(Header, MptNode)> { - BlockBuilder::::new(chain_spec, input) - .initialize_database::()? - .prepare_header::()? - .execute_transactions::()? - .finalize::() + input: BlockBuildInput, + ) -> Result { + // Database initialization failure does not mean the block is faulty + let input_hash = input.partial_hash(); + let initialized = BlockBuilder::::new(chain_spec, input, None) + .initialize_database::()?; + + // Header validation errors mean a faulty block + let prepared = match initialized.prepare_header::() { + Ok(builder) => builder, + Err(_) => { + return Ok(BlockBuildOutput::FAILURE { + bad_input_hash: input_hash.into(), + }) + } + }; + + // Transaction execution errors mean a faulty block + let executed = match prepared.execute_transactions::() { + Ok(builder) => builder, + Err(_) => { + return Ok(BlockBuildOutput::FAILURE { + bad_input_hash: input_hash.into(), + }) + } + }; + + // Finalization does not indicate a faulty block + let (header, state) = executed.finalize::()?; + + Ok(BlockBuildOutput::SUCCESS { + new_block_hash: header.hash(), + new_block_head: header, + new_block_state: state, + }) } } diff --git a/lib/src/consts.rs b/lib/src/consts.rs index 5d58b944..029093c7 100644 --- a/lib/src/consts.rs +++ b/lib/src/consts.rs @@ -42,9 +42,6 @@ pub const MAX_BLOCK_HASH_AGE: u64 = 256; /// Multiplier for converting gwei to wei. pub const GWEI_TO_WEI: U256 = uint!(1_000_000_000_U256); -/// Minimum supported protocol version: Paris (Block no. 15537394). -pub const MIN_SPEC_ID: SpecId = SpecId::MERGE; - /// The Ethereum mainnet specification. pub static ETH_MAINNET_CHAIN_SPEC: Lazy = Lazy::new(|| { ChainSpec { @@ -65,10 +62,16 @@ pub static ETH_MAINNET_CHAIN_SPEC: Lazy = Lazy::new(|| { } }); -/// The optimism mainnet specification. +/// The Optimism mainnet specification. pub static OP_MAINNET_CHAIN_SPEC: Lazy = Lazy::new(|| ChainSpec { chain_id: 10, - hard_forks: BTreeMap::from([(SpecId::MERGE, ForkCondition::Block(0))]), + hard_forks: BTreeMap::from([ + (SpecId::FRONTIER, ForkCondition::Block(0)), + // previous versions not supported + (SpecId::BEDROCK, ForkCondition::Block(105235063)), + // Regolith is activated from day 1 of Bedrock on mainnet + (SpecId::REGOLITH, ForkCondition::Block(105235063)), + ]), eip_1559_constants: Eip1559Constants { base_fee_change_denominator: uint!(50_U256), base_fee_max_increase_denominator: uint!(10_U256), diff --git a/lib/src/host/mod.rs b/lib/src/host/mod.rs index c75d65d3..5208be3f 100644 --- a/lib/src/host/mod.rs +++ b/lib/src/host/mod.rs @@ -12,9 +12,48 @@ // See the License for the specific language governing permissions and // limitations under the License. +use std::path::{Path, PathBuf}; + +use crate::{ + consts::Network, + host::provider::{new_provider, Provider}, +}; + pub mod mpt; pub mod preflight; pub mod provider; pub mod provider_db; pub mod rpc_db; pub mod verify; + +pub fn cache_file_path(cache_path: &Path, network: &str, block_no: u64, ext: &str) -> PathBuf { + cache_path + .join(network) + .join(block_no.to_string()) + .with_extension(ext) +} + +#[derive(Clone)] +pub struct ProviderFactory { + pub dir: Option, + pub network: Network, + pub rpc_url: Option, +} + +impl ProviderFactory { + pub fn new(dir: Option, network: Network, rpc_url: Option) -> Self { + Self { + dir, + network, + rpc_url, + } + } + + pub fn create_provider(&self, block_number: u64) -> anyhow::Result> { + let rpc_cache = self + .dir + .as_ref() + .map(|dir| cache_file_path(dir, &self.network.to_string(), block_number, "json.gz")); + new_provider(rpc_cache, self.rpc_url.clone()) + } +} diff --git a/lib/src/host/preflight.rs b/lib/src/host/preflight.rs index 91c1aff1..e06cdea2 100644 --- a/lib/src/host/preflight.rs +++ b/lib/src/host/preflight.rs @@ -12,7 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::{fmt::Debug, path::PathBuf}; +use std::{ + fmt::Debug, + path::PathBuf, + sync::{Arc, Mutex}, +}; use anyhow::{anyhow, Context, Result}; use ethers_core::types::{ @@ -38,13 +42,13 @@ use crate::{ provider::{new_provider, BlockQuery}, provider_db::ProviderDb, }, - input::{Input, StorageEntry}, + input::{BlockBuildInput, StorageEntry}, mem_db::MemDb, }; /// The initial data required to build a block as returned by the [Preflight]. #[derive(Debug, Clone)] -pub struct Data { +pub struct BlockBuildPreflightData { pub db: MemDb, pub parent_header: Header, pub parent_proofs: HashMap, @@ -63,7 +67,13 @@ pub trait Preflight { cache_path: Option, rpc_url: Option, block_no: u64, - ) -> Result>; + ) -> Result>; + + fn preflight_input_with_provider_db( + chain_spec: ChainSpec, + provider_db: ProviderDb, + input: BlockBuildInput, + ) -> Result>; } /// Implements the [Preflight] trait for all compatible [BlockBuilderStrategy]s. @@ -77,7 +87,7 @@ where cache_path: Option, rpc_url: Option, block_no: u64, - ) -> Result> { + ) -> Result> { let mut provider = new_provider(cache_path, rpc_url)?; // Fetch the parent block @@ -107,15 +117,35 @@ where // Create the input data let input = new_preflight_input(block.clone(), parent_header.clone())?; - let transactions = input.transactions.clone(); - let withdrawals = input.withdrawals.clone(); // Create the block builder, run the transactions and extract the DB - let mut builder = BlockBuilder::new(&chain_spec, input) - .with_db(provider_db) - .prepare_header::()? - .execute_transactions::()?; - let provider_db = builder.mut_db().unwrap(); + Self::preflight_input_with_provider_db(chain_spec, provider_db, input).map( + move |mut headerless_preflight_data| { + headerless_preflight_data.header = block.try_into().expect("invalid block"); + headerless_preflight_data + }, + ) + } + + fn preflight_input_with_provider_db( + chain_spec: ChainSpec, + provider_db: ProviderDb, + input: BlockBuildInput, + ) -> Result> { + let parent_header = input.parent_header.clone(); + let transactions = input.transactions.clone(); + let withdrawals = input.withdrawals.clone(); + // Create the block builder, run the transactions and extract the DB even if run fails + let db_backup = Arc::new(Mutex::new(None)); + let builder = + BlockBuilder::new(&chain_spec, input, Some(db_backup.clone())).with_db(provider_db); + let mut provider_db = match builder.prepare_header::() { + Ok(builder) => match builder.execute_transactions::() { + Ok(builder) => builder.take_db().unwrap(), + Err(_) => db_backup.lock().unwrap().take().unwrap(), + }, + Err(_) => db_backup.lock().unwrap().take().unwrap(), + }; info!("Gathering inclusion proofs ..."); @@ -129,15 +159,16 @@ where info!("Saving provider cache ..."); // Save the provider cache - provider_db.get_provider().save()?; + provider_db.save_provider()?; info!("Provider-backed execution is Done!"); - Ok(Data { + // Fetch the target block + Ok(BlockBuildPreflightData { db: provider_db.get_initial_db().clone(), parent_header, parent_proofs, - header: block.try_into().context("invalid block")?, + header: Default::default(), transactions, withdrawals, proofs, @@ -149,7 +180,7 @@ where fn new_preflight_input( block: EthersBlock, parent_header: Header, -) -> Result> +) -> Result> where E: TxEssence + TryFrom, >::Error: Debug, @@ -176,7 +207,8 @@ where }) .collect::, _>>()?; - let input = Input { + let input = BlockBuildInput { + parent_header, beneficiary: from_ethers_h160(block.author.context("author missing")?), gas_limit: from_ethers_u256(block.gas_limit), timestamp: from_ethers_u256(block.timestamp), @@ -187,18 +219,17 @@ where parent_state_trie: Default::default(), parent_storage: Default::default(), contracts: Default::default(), - parent_header, ancestor_headers: Default::default(), }; Ok(input) } -/// Converts the [Data] returned by the [Preflight] into [Input] required by the -/// [BlockBuilder]. -impl TryFrom> for Input { +/// Converts the [BlockBuildPreflightData] returned by the [Preflight] into +/// [BlockBuildInput] required by the [BlockBuilder]. +impl TryFrom> for BlockBuildInput { type Error = anyhow::Error; - fn try_from(data: Data) -> Result> { + fn try_from(data: BlockBuildPreflightData) -> Result> { // collect the code from each account let mut contracts = HashSet::new(); for account in data.db.accounts.values() { @@ -225,7 +256,7 @@ impl TryFrom> for Input { ); // Create the block builder input - let input = Input { + let input = BlockBuildInput { parent_header: data.parent_header, beneficiary: data.header.beneficiary, gas_limit: data.header.gas_limit, diff --git a/lib/src/host/provider/file_provider.rs b/lib/src/host/provider/file_provider.rs index 285bd2db..f67bff5c 100644 --- a/lib/src/host/provider/file_provider.rs +++ b/lib/src/host/provider/file_provider.rs @@ -29,7 +29,7 @@ use serde_with::serde_as; use super::{AccountQuery, BlockQuery, MutProvider, ProofQuery, Provider, StorageQuery}; #[serde_as] -#[derive(Deserialize, Serialize)] +#[derive(Clone, Deserialize, Serialize)] pub struct FileProvider { #[serde(skip)] file_path: PathBuf, diff --git a/lib/src/host/provider_db.rs b/lib/src/host/provider_db.rs index 759547e8..6c487d87 100644 --- a/lib/src/host/provider_db.rs +++ b/lib/src/host/provider_db.rs @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +extern crate alloc; + use std::collections::BTreeSet; use ethers_core::types::{EIP1186ProofResponse, H160, H256}; @@ -48,8 +50,8 @@ impl ProviderDb { } } - pub fn get_provider(&self) -> &dyn Provider { - self.provider.as_ref() + pub fn save_provider(&self) -> anyhow::Result<()> { + self.provider.save() } pub fn get_initial_db(&self) -> &MemDb { diff --git a/lib/src/host/rpc_db.rs b/lib/src/host/rpc_db.rs index 1228ed4b..be5abd68 100644 --- a/lib/src/host/rpc_db.rs +++ b/lib/src/host/rpc_db.rs @@ -47,7 +47,6 @@ fn op_cache_path(cache: &Option, block_no: u64) -> Option { .map(|dir| cache_file_path(dir, "optimism", block_no, "json.gz")) } -#[derive(Clone)] pub struct RpcDb { eth_rpc_url: Option, op_rpc_url: Option, @@ -75,6 +74,10 @@ impl RpcDb { } impl BatcherDb for RpcDb { + fn validate(&self) -> anyhow::Result<()> { + Ok(()) + } + fn get_full_op_block( &mut self, block_no: u64, @@ -117,7 +120,7 @@ impl BatcherDb for RpcDb { fn get_full_eth_block( &mut self, block_no: u64, - ) -> anyhow::Result> { + ) -> anyhow::Result<&BlockInput> { let query = BlockQuery { block_no }; let mut provider = new_provider( eth_cache_path(&self.cache, block_no), @@ -157,23 +160,8 @@ impl BatcherDb for RpcDb { receipts, } }; - self.mem_db.full_eth_block.insert(block_no, block.clone()); + self.mem_db.full_eth_block.insert(block_no, block); provider.save()?; - Ok(block) - } - - fn get_eth_block_header(&mut self, block_no: u64) -> anyhow::Result
{ - let mut provider = new_provider( - eth_cache_path(&self.cache, block_no), - self.eth_rpc_url.clone(), - )?; - let header: Header = provider - .get_partial_block(&BlockQuery { block_no })? - .try_into()?; - self.mem_db - .eth_block_header - .insert(block_no, header.clone()); - provider.save()?; - Ok(header) + self.mem_db.get_full_eth_block(block_no) } } diff --git a/lib/src/host/verify.rs b/lib/src/host/verify.rs index 0afac794..c8a76a4c 100644 --- a/lib/src/host/verify.rs +++ b/lib/src/host/verify.rs @@ -63,7 +63,7 @@ pub trait Verifier { } /// Verify using the preflight data. -impl Verifier for preflight::Data { +impl Verifier for preflight::BlockBuildPreflightData { fn verify_block(&self, header: &Header, state: &MptNode) -> Result<()> { let errors = verify_state_trie(state, &self.proofs).context("failed to verify state trie")?; diff --git a/lib/src/input.rs b/lib/src/input.rs index 7984e85b..f360e263 100644 --- a/lib/src/input.rs +++ b/lib/src/input.rs @@ -12,14 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. +use ethers_core::k256::sha2::{Digest, Sha256}; use hashbrown::HashMap; use serde::{Deserialize, Serialize}; use zeth_primitives::{ block::Header, transactions::{Transaction, TxEssence}, + tree::Hash, trie::MptNode, withdrawal::Withdrawal, - Address, Bytes, B256, U256, + Address, Bytes, RlpBytes, B256, U256, }; /// Represents the state of an account's storage. @@ -28,8 +30,8 @@ use zeth_primitives::{ pub type StorageEntry = (MptNode, Vec); /// External block input. -#[derive(Debug, Clone, Default, Deserialize, Serialize)] -pub struct Input { +#[derive(Debug, Clone, Default, Eq, PartialEq, Deserialize, Serialize)] +pub struct BlockBuildInput { /// Previous block header pub parent_header: Header, /// Address to which all priority fees in this block are transferred. @@ -56,6 +58,24 @@ pub struct Input { pub ancestor_headers: Vec
, } +impl BlockBuildInput { + pub fn partial_hash(&self) -> Hash { + let mut hasher = Sha256::new(); + + hasher.update(self.parent_header.to_rlp()); + hasher.update(self.beneficiary.0); + hasher.update(self.gas_limit.as_le_slice()); + hasher.update(self.timestamp.as_le_slice()); + hasher.update(self.extra_data.as_ref()); + hasher.update(self.mix_hash.0); + // todo: use precalculated trie root hashes if available + hasher.update(self.transactions.to_rlp()); + hasher.update(self.withdrawals.to_rlp()); + + hasher.finalize().into() + } +} + #[cfg(test)] mod tests { use zeth_primitives::transactions::ethereum::EthereumTxEssence; @@ -64,7 +84,7 @@ mod tests { #[test] fn input_serde_roundtrip() { - let input = Input:: { + let input = BlockBuildInput:: { parent_header: Default::default(), beneficiary: Default::default(), gas_limit: Default::default(), @@ -78,7 +98,7 @@ mod tests { contracts: vec![], ancestor_headers: vec![], }; - let _: Input = + let _: BlockBuildInput = bincode::deserialize(&bincode::serialize(&input).unwrap()).unwrap(); } } diff --git a/lib/src/lib.rs b/lib/src/lib.rs index 633ebec8..96c57268 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -22,6 +22,7 @@ pub mod consts; pub mod input; pub mod mem_db; pub mod optimism; +pub mod output; mod utils; diff --git a/lib/src/optimism/batcher.rs b/lib/src/optimism/batcher.rs index 266b0ab4..cf38c045 100644 --- a/lib/src/optimism/batcher.rs +++ b/lib/src/optimism/batcher.rs @@ -1,4 +1,4 @@ -// Copyright 2023 RISC Zero, Inc. +// Copyright 2024 RISC Zero, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -13,14 +13,11 @@ // limitations under the License. use core::cmp::Ordering; -use std::{ - cmp::Reverse, - collections::{BinaryHeap, VecDeque}, -}; +use std::collections::{BTreeMap, VecDeque}; -use anyhow::{ensure, Context, Result}; +use anyhow::{bail, ensure, Context, Result}; use zeth_primitives::{ - batch::Batch, + batch::{Batch, BatchEssence}, transactions::{ ethereum::EthereumTxEssence, optimism::{OptimismTxEssence, OPTIMISM_DEPOSITED_TX_TYPE}, @@ -34,9 +31,16 @@ use super::{ }; #[derive(Debug, Clone, Copy, Eq, PartialEq, Default)] -pub struct BlockInfo { +pub struct BlockId { + pub hash: B256, + pub number: BlockNumber, +} + +#[derive(Debug, Clone, Copy, Eq, PartialEq, Default)] +pub struct L2BlockInfo { pub hash: B256, pub timestamp: u64, + pub l1_origin: BlockId, } #[derive(Clone, Debug, Default, PartialEq, Eq)] @@ -52,7 +56,7 @@ pub struct Epoch { pub struct State { pub current_l1_block_number: BlockNumber, pub current_l1_block_hash: BlockHash, - pub safe_head: BlockInfo, + pub safe_head: L2BlockInfo, pub epoch: Epoch, pub op_epoch_queue: VecDeque, pub next_epoch: Option, @@ -62,7 +66,7 @@ impl State { pub fn new( current_l1_block_number: BlockNumber, current_l1_block_hash: BlockHash, - safe_head: BlockInfo, + safe_head: L2BlockInfo, epoch: Epoch, ) -> Self { State { @@ -75,19 +79,19 @@ impl State { } } - pub fn do_next_epoch(&mut self) -> anyhow::Result<()> { - self.epoch = self.next_epoch.take().expect("No next epoch!"); + pub fn do_next_epoch(&mut self) -> Result<()> { + self.epoch = self.next_epoch.take().context("no next epoch!")?; self.deque_next_epoch_if_none()?; Ok(()) } - pub fn push_epoch(&mut self, epoch: Epoch) -> anyhow::Result<()> { + pub fn push_epoch(&mut self, epoch: Epoch) -> Result<()> { self.op_epoch_queue.push_back(epoch); self.deque_next_epoch_if_none()?; Ok(()) } - fn deque_next_epoch_if_none(&mut self) -> anyhow::Result<()> { + fn deque_next_epoch_if_none(&mut self) -> Result<()> { if self.next_epoch.is_none() { while let Some(next_epoch) = self.op_epoch_queue.pop_front() { if next_epoch.number <= self.epoch.number { @@ -96,7 +100,7 @@ impl State { self.next_epoch = Some(next_epoch); break; } else { - anyhow::bail!("Epoch gap!"); + bail!("Epoch gap!"); } } } @@ -112,8 +116,15 @@ enum BatchStatus { Future, } +/// A [Batch] with inclusion information. +pub struct BatchWithInclusion { + pub essence: BatchEssence, + pub inclusion_block_number: BlockNumber, +} + pub struct Batcher { - batches: BinaryHeap>, + /// Multimap of batches, keyed by timestamp + batches: BTreeMap>, batcher_channel: BatcherChannels, pub state: State, pub config: ChainConfig, @@ -122,7 +133,7 @@ pub struct Batcher { impl Batcher { pub fn new( config: ChainConfig, - op_head: BlockInfo, + op_head: L2BlockInfo, eth_block: &BlockInput, ) -> Result { let eth_block_hash = eth_block.block_header.hash(); @@ -143,7 +154,7 @@ impl Batcher { ); Ok(Batcher { - batches: BinaryHeap::new(), + batches: BTreeMap::new(), batcher_channel, state, config, @@ -198,7 +209,10 @@ impl Batcher { batch.essence.parent_hash, batch.essence.epoch_num ); - self.batches.push(Reverse(batch)); + self.batches + .entry(batch.essence.timestamp) + .or_default() + .push_back(batch); }); } @@ -209,78 +223,85 @@ impl Batcher { } pub fn read_batch(&mut self) -> Result> { - let mut out = None; + let epoch = &self.state.epoch; + let safe_l2_head = self.state.safe_head; + + ensure!( + safe_l2_head.l1_origin.hash == epoch.hash + || safe_l2_head.l1_origin.number == epoch.number - 1, + "buffered L1 chain epoch does not match safe head origin" + ); + + let mut next_batch = None; // Grab the first accepted batch. From the spec: // "The batches are processed in order of the inclusion on L1: if multiple batches can be // accept-ed the first is applied. An implementation can defer future batches a later // derivation step to reduce validation work." - while let Some(Reverse(batch)) = self.batches.pop() { - match self.batch_status(&batch) { - BatchStatus::Accept => { - out = Some(batch); - break; - } - BatchStatus::Drop => { - #[cfg(not(target_os = "zkvm"))] - log::debug!("Dropping batch"); - } - BatchStatus::Future => { - #[cfg(not(target_os = "zkvm"))] - log::debug!("Encountered future batch"); - - self.batches.push(Reverse(batch)); - break; - } - BatchStatus::Undecided => { - #[cfg(not(target_os = "zkvm"))] - log::debug!("Encountered undecided batch"); - - self.batches.push(Reverse(batch)); - break; + 'outer: while let Some((ts, mut batches)) = self.batches.pop_first() { + // iterate over all batches, in order of inclusion and find the first accepted batch + // retain batches that may be processed in the future, or those we are undecided on + while let Some(batch) = batches.pop_front() { + match self.batch_status(&batch) { + BatchStatus::Accept => { + next_batch = Some(batch); + // if there are still batches left, insert them back into the map + if !batches.is_empty() { + self.batches.insert(ts, batches); + } + break 'outer; + } + BatchStatus::Drop => {} + BatchStatus::Future | BatchStatus::Undecided => { + batches.push_front(batch); + self.batches.insert(ts, batches); + break 'outer; + } } } } + if let Some(batch) = next_batch { + return Ok(Some(Batch(batch.essence))); + } + // If there are no accepted batches, attempt to generate the default batch. From the spec: // "If no batch can be accept-ed, and the stage has completed buffering of all batches // that can fully be read from the L1 block at height epoch.number + - // sequence_window_size, and the next_epoch is available, then an empty batch can - // be derived." - if out.is_none() { - let current_l1_block = self.state.current_l1_block_number; - let safe_head = self.state.safe_head; - let current_epoch = &self.state.epoch; - let next_epoch = &self.state.next_epoch; - let seq_window_size = self.config.seq_window_size; - - if let Some(next_epoch) = next_epoch { - if current_l1_block > current_epoch.number + seq_window_size { - let next_timestamp = safe_head.timestamp + self.config.blocktime; - let epoch = if next_timestamp < next_epoch.timestamp { - // From the spec: - // "If next_timestamp < next_epoch.time: the current L1 origin is repeated, - // to preserve the L2 time invariant." - current_epoch - } else { - next_epoch - }; - - out = Some(Batch::new( - current_l1_block, - safe_head.hash, - epoch.number, - epoch.hash, - next_timestamp, - )) - } + // sequence_window_size, and the next_epoch is available, then an empty batch can be + // derived." + let current_l1_block = self.state.current_l1_block_number; + let sequence_window_size = self.config.seq_window_size; + let first_of_epoch = epoch.number == safe_l2_head.l1_origin.number + 1; + + if current_l1_block > epoch.number + sequence_window_size { + if let Some(next_epoch) = &self.state.next_epoch { + let next_timestamp = safe_l2_head.timestamp + self.config.blocktime; + let batch_epoch = if next_timestamp < next_epoch.timestamp || first_of_epoch { + // From the spec: + // "If next_timestamp < next_epoch.time: the current L1 origin is repeated, + // to preserve the L2 time invariant." + // "If the batch is the first batch of the epoch, that epoch is used instead + // of advancing the epoch to ensure that there is at least one L2 block per + // epoch." + epoch + } else { + next_epoch + }; + + return Ok(Some(Batch::new( + safe_l2_head.hash, + batch_epoch.number, + batch_epoch.hash, + next_timestamp, + ))); } } - Ok(out) + Ok(None) } - fn batch_status(&self, batch: &Batch) -> BatchStatus { + fn batch_status(&self, batch: &BatchWithInclusion) -> BatchStatus { // Apply the batch status rules. The spec describes a precise order for these checks. let epoch = &self.state.epoch; @@ -295,7 +316,7 @@ impl Batcher { Ordering::Greater => { #[cfg(not(target_os = "zkvm"))] log::debug!( - "Future batch: {} = batch.essence.timestamp > next_timestamp = {}", + "Future batch: {} = batch.timestamp > next_timestamp = {}", &batch.essence.timestamp, &next_timestamp ); @@ -304,7 +325,7 @@ impl Batcher { Ordering::Less => { #[cfg(not(target_os = "zkvm"))] log::debug!( - "Batch too old: {} = batch.essence.timestamp < next_timestamp = {}", + "Batch too old: {} = batch.timestamp < next_timestamp = {}", &batch.essence.timestamp, &next_timestamp ); diff --git a/lib/src/optimism/batcher_channel.rs b/lib/src/optimism/batcher_channel.rs index 33d3ba67..c7b09b5d 100644 --- a/lib/src/optimism/batcher_channel.rs +++ b/lib/src/optimism/batcher_channel.rs @@ -1,4 +1,4 @@ -// Copyright 2023 RISC Zero, Inc. +// Copyright 2024 RISC Zero, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ use zeth_primitives::{ Address, BlockNumber, }; -use super::config::ChainConfig; +use super::{batcher::BatchWithInclusion, config::ChainConfig}; use crate::utils::MultiReader; pub const MAX_RLP_BYTES_PER_CHANNEL: u64 = 10_000_000; @@ -37,7 +37,7 @@ pub struct BatcherChannels { max_channel_bank_size: u64, channel_timeout: u64, channels: VecDeque, - batches: VecDeque>, + batches: VecDeque>, } impl BatcherChannels { @@ -126,7 +126,7 @@ impl BatcherChannels { Ok(()) } - pub fn read_batches(&mut self) -> Option> { + pub fn read_batches(&mut self) -> Option> { self.batches.pop_front() } @@ -282,7 +282,7 @@ impl Channel { /// Reads all batches from an ready channel. If there is an invalid batch, the rest of /// the channel is skipped, but previous batches are returned. - fn read_batches(&self, block_number: BlockNumber) -> Vec { + fn read_batches(&self, block_number: BlockNumber) -> Vec { debug_assert!(self.is_ready()); let mut batches = Vec::new(); @@ -297,18 +297,24 @@ impl Channel { batches } - fn decode_batches(&self, block_number: BlockNumber, batches: &mut Vec) -> Result<()> { + fn decode_batches( + &self, + block_number: BlockNumber, + batches: &mut Vec, + ) -> Result<()> { let decompressed = self .decompress() .context("failed to decompress channel data")?; let mut channel_data = decompressed.as_slice(); while !channel_data.is_empty() { - let mut batch = Batch::decode(&mut channel_data) + let batch = Batch::decode(&mut channel_data) .with_context(|| format!("failed to decode batch {}", batches.len()))?; - batch.inclusion_block_number = block_number; - batches.push(batch); + batches.push(BatchWithInclusion { + essence: batch.0, + inclusion_block_number: block_number, + }); } Ok(()) diff --git a/lib/src/optimism/batcher_db.rs b/lib/src/optimism/batcher_db.rs index ad571310..d88b2297 100644 --- a/lib/src/optimism/batcher_db.rs +++ b/lib/src/optimism/batcher_db.rs @@ -14,7 +14,7 @@ use std::collections::HashMap; -use anyhow::{ensure, Result}; +use anyhow::{ensure, Context, Result}; use serde::{Deserialize, Serialize}; use zeth_primitives::{ block::Header, @@ -40,10 +40,10 @@ pub struct BlockInput { } pub trait BatcherDb { + fn validate(&self) -> Result<()>; fn get_full_op_block(&mut self, block_no: u64) -> Result>; fn get_op_block_header(&mut self, block_no: u64) -> Result
; - fn get_full_eth_block(&mut self, block_no: u64) -> Result>; - fn get_eth_block_header(&mut self, block_no: u64) -> Result
; + fn get_full_eth_block(&mut self, block_no: u64) -> Result<&BlockInput>; } #[derive(Debug, Clone, Deserialize, Serialize)] @@ -72,92 +72,107 @@ impl Default for MemDb { } impl BatcherDb for MemDb { - fn get_full_op_block(&mut self, block_no: u64) -> Result> { - let op_block = self.full_op_block.remove(&block_no).unwrap(); - assert_eq!(block_no, op_block.block_header.number); - - // Validate tx list - { - let mut tx_trie = MptNode::default(); - for (tx_no, tx) in op_block.transactions.iter().enumerate() { - let trie_key = tx_no.to_rlp(); - tx_trie.insert_rlp(&trie_key, tx)?; + fn validate(&self) -> Result<()> { + for (block_no, op_block) in &self.full_op_block { + ensure!( + *block_no == op_block.block_header.number, + "Block number mismatch" + ); + + // Validate tx list + { + let mut tx_trie = MptNode::default(); + for (tx_no, tx) in op_block.transactions.iter().enumerate() { + let trie_key = tx_no.to_rlp(); + tx_trie.insert_rlp(&trie_key, tx)?; + } + ensure!( + tx_trie.hash() == op_block.block_header.transactions_root, + "Invalid op block transaction data!" + ); } + + // Validate receipts ensure!( - tx_trie.hash() == op_block.block_header.transactions_root, - "Invalid op block transaction data!" + op_block.receipts.is_none(), + "Op blocks should not contain receipts" ); } - // Validate receipts - ensure!( - op_block.receipts.is_none(), - "Op blocks should not contain receipts" - ); + for (block_no, op_block) in &self.op_block_header { + ensure!(*block_no == op_block.number, "Block number mismatch"); + } - Ok(op_block) - } + for (block_no, eth_block) in &self.full_eth_block { + ensure!( + *block_no == eth_block.block_header.number, + "Block number mismatch" + ); - fn get_op_block_header(&mut self, block_no: u64) -> Result
{ - let op_block = self.op_block_header.remove(&block_no).unwrap(); - assert_eq!(block_no, op_block.number); + // Validate tx list + { + let mut tx_trie = MptNode::default(); + for (tx_no, tx) in eth_block.transactions.iter().enumerate() { + let trie_key = tx_no.to_rlp(); + tx_trie.insert_rlp(&trie_key, tx)?; + } + ensure!( + tx_trie.hash() == eth_block.block_header.transactions_root, + "Invalid eth block transaction data!" + ); + } - Ok(op_block) + // Validate receipts + if eth_block.receipts.is_some() { + let mut receipt_trie = MptNode::default(); + for (tx_no, receipt) in eth_block.receipts.as_ref().unwrap().iter().enumerate() { + let trie_key = tx_no.to_rlp(); + receipt_trie.insert_rlp(&trie_key, receipt)?; + } + ensure!( + receipt_trie.hash() == eth_block.block_header.receipts_root, + "Invalid eth block receipt data!" + ); + } else { + let can_contain_deposits = deposits::can_contain( + &OPTIMISM_CHAIN_SPEC.deposit_contract, + ð_block.block_header.logs_bloom, + ); + let can_contain_config = system_config::can_contain( + &OPTIMISM_CHAIN_SPEC.system_config_contract, + ð_block.block_header.logs_bloom, + ); + ensure!( + !can_contain_deposits, + "Eth block has no receipts, but bloom filter indicates it has deposits" + ); + ensure!( + !can_contain_config, + "Eth block has no receipts, but bloom filter indicates it has config updates" + ); + } + } + + Ok(()) } - fn get_full_eth_block(&mut self, block_no: u64) -> Result> { - let eth_block = self.full_eth_block.remove(&block_no).unwrap(); - assert_eq!(block_no, eth_block.block_header.number); + fn get_full_op_block(&mut self, block_no: u64) -> Result> { + let op_block = self.full_op_block.remove(&block_no).unwrap(); - // Validate tx list - { - let mut tx_trie = MptNode::default(); - for (tx_no, tx) in eth_block.transactions.iter().enumerate() { - let trie_key = tx_no.to_rlp(); - tx_trie.insert_rlp(&trie_key, tx)?; - } - ensure!( - tx_trie.hash() == eth_block.block_header.transactions_root, - "Invalid eth block transaction data!" - ); - } + Ok(op_block) + } - // Validate receipts - if eth_block.receipts.is_some() { - let mut receipt_trie = MptNode::default(); - for (tx_no, receipt) in eth_block.receipts.as_ref().unwrap().iter().enumerate() { - let trie_key = tx_no.to_rlp(); - receipt_trie.insert_rlp(&trie_key, receipt)?; - } - ensure!( - receipt_trie.hash() == eth_block.block_header.receipts_root, - "Invalid eth block receipt data!" - ); - } else { - let can_contain_deposits = deposits::can_contain( - &OPTIMISM_CHAIN_SPEC.deposit_contract, - ð_block.block_header.logs_bloom, - ); - let can_contain_config = system_config::can_contain( - &OPTIMISM_CHAIN_SPEC.system_config_contract, - ð_block.block_header.logs_bloom, - ); - ensure!( - !can_contain_deposits, - "Eth block has no receipts, but bloom filter indicates it has deposits" - ); - ensure!( - !can_contain_config, - "Eth block has no receipts, but bloom filter indicates it has config updates" - ); - } + fn get_op_block_header(&mut self, block_no: u64) -> Result
{ + let op_block = self + .op_block_header + .remove(&block_no) + .context("not or no longer in db")?; - Ok(eth_block) + Ok(op_block) } - fn get_eth_block_header(&mut self, block_no: u64) -> Result
{ - let eth_block = self.eth_block_header.remove(&block_no).unwrap(); - assert_eq!(block_no, eth_block.number); + fn get_full_eth_block(&mut self, block_no: u64) -> Result<&BlockInput> { + let eth_block = self.full_eth_block.get(&block_no).unwrap(); Ok(eth_block) } diff --git a/lib/src/optimism/composition.rs b/lib/src/optimism/composition.rs index eb470c8e..4e68ff28 100644 --- a/lib/src/optimism/composition.rs +++ b/lib/src/optimism/composition.rs @@ -25,10 +25,11 @@ use zeth_primitives::{ use crate::optimism::DeriveOutput; /// Denotes a zkVM Image ID. -type ImageId = [u32; 8]; +pub type ImageId = [u32; 8]; #[derive(Debug, Clone, Deserialize, Serialize)] pub struct ComposeInput { + pub block_image_id: ImageId, pub derive_image_id: ImageId, pub compose_image_id: ImageId, pub operation: ComposeInputOperation, @@ -57,6 +58,7 @@ pub enum ComposeInputOperation { #[derive(Debug, Clone, Deserialize, Serialize, Eq, PartialEq)] pub struct ComposeOutput { + pub block_image_id: ImageId, pub derive_image_id: ImageId, pub compose_image_id: ImageId, pub operation: ComposeOutputOperation, @@ -93,6 +95,7 @@ impl ComposeInput { .expect("Failed to validate prior aggregation"); } // Validate context + assert_eq!(self.block_image_id, prior_output.block_image_id); assert_eq!(self.derive_image_id, prior_output.derive_image_id); assert_eq!(self.compose_image_id, prior_output.compose_image_id); assert_eq!( @@ -131,6 +134,7 @@ impl ComposeInput { } ComposeOutput { + block_image_id: self.block_image_id, derive_image_id: self.derive_image_id, compose_image_id: self.compose_image_id, operation: ComposeOutputOperation::PREP, @@ -150,6 +154,8 @@ impl ComposeInput { env::verify(Digest::from(self.derive_image_id), &derive_journal) .expect("Failed to lift derivation receipt"); } + // Verify usage of same block builder image id + assert_eq!(self.block_image_id, derive_output.block_image_id); // Verify inclusion of ethereum tail in Merkle root assert!( eth_tail_proof @@ -158,6 +164,7 @@ impl ComposeInput { ); // Create output ComposeOutput { + block_image_id: self.block_image_id, derive_image_id: self.derive_image_id, compose_image_id: self.compose_image_id, operation: ComposeOutputOperation::AGGREGATE { @@ -189,6 +196,9 @@ impl ComposeInput { .expect("Failed to verify right composition receipt"); } // Validate context + // block_image_id equality + assert_eq!(self.block_image_id, left_compose_output.block_image_id); + assert_eq!(self.block_image_id, right_compose_output.block_image_id); // derive_image_id equality assert_eq!(self.derive_image_id, left_compose_output.derive_image_id); assert_eq!(self.derive_image_id, right_compose_output.derive_image_id); @@ -225,6 +235,7 @@ impl ComposeInput { assert_eq!(&left_op_tail, &right_op_head); ComposeOutput { + block_image_id: self.block_image_id, derive_image_id: self.derive_image_id, compose_image_id: self.compose_image_id, operation: ComposeOutputOperation::AGGREGATE { @@ -258,6 +269,9 @@ impl ComposeInput { .expect("Failed to validate aggregate receipt"); } // Validate context + // block_image_id equality + assert_eq!(self.block_image_id, prep.block_image_id); + assert_eq!(self.block_image_id, aggregate.block_image_id); // derive_image_id equality assert_eq!(self.derive_image_id, prep.derive_image_id); assert_eq!(self.derive_image_id, aggregate.derive_image_id); @@ -279,6 +293,7 @@ impl ComposeInput { }; // Output new aggregate with validated chain root ComposeOutput { + block_image_id: self.block_image_id, derive_image_id: self.derive_image_id, compose_image_id: self.compose_image_id, operation: ComposeOutputOperation::AGGREGATE { diff --git a/lib/src/optimism/config.rs b/lib/src/optimism/config.rs index 16ec5bdc..e1f8f57b 100644 --- a/lib/src/optimism/config.rs +++ b/lib/src/optimism/config.rs @@ -23,10 +23,12 @@ use super::system_config::SystemConfig; pub struct ChainConfig { /// The initial system config value pub system_config: SystemConfig, - // The L1 attributes depositor address + /// The L1 attributes depositor address pub l1_attributes_depositor: Address, /// The L1 attributes contract pub l1_attributes_contract: Address, + /// The L2 address accumulating any transaction priority fee + pub sequencer_fee_vault: Address, /// The batch inbox address pub batch_inbox: Address, /// The deposit contract address @@ -57,6 +59,7 @@ impl ChainConfig { }, l1_attributes_depositor: address!("deaddeaddeaddeaddeaddeaddeaddeaddead0001"), l1_attributes_contract: address!("4200000000000000000000000000000000000015"), + sequencer_fee_vault: address!("4200000000000000000000000000000000000011"), batch_inbox: address!("ff00000000000000000000000000000000000010"), deposit_contract: address!("bEb5Fc579115071764c7423A4f12eDde41f106Ed"), system_config_contract: address!("229047fed2591dbec1eF1118d64F7aF3dB9EB290"), diff --git a/lib/src/optimism/mod.rs b/lib/src/optimism/mod.rs index 362bd5ac..5fc5e6ac 100644 --- a/lib/src/optimism/mod.rs +++ b/lib/src/optimism/mod.rs @@ -1,4 +1,4 @@ -// Copyright 2023 RISC Zero, Inc. +// Copyright 2024 RISC Zero, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -13,18 +13,21 @@ // limitations under the License. use core::iter::once; -use std::mem; use alloy_sol_types::{sol, SolInterface}; use anyhow::{bail, ensure, Context, Result}; #[cfg(not(target_os = "zkvm"))] use log::info; +#[cfg(target_os = "zkvm")] +use risc0_zkvm::{guest::env, serde::to_vec, sha::Digest}; use serde::{Deserialize, Serialize}; use zeth_primitives::{ batch::Batch, + block::Header, keccak::keccak, + rlp::Decodable, transactions::{ - ethereum::TransactionKind, + ethereum::{EthereumTxEssence, TransactionKind}, optimism::{OptimismTxEssence, TxEssenceOptimismDeposited}, Transaction, TxEssence, }, @@ -32,15 +35,21 @@ use zeth_primitives::{ uint, Address, BlockHash, BlockNumber, FixedBytes, RlpBytes, B256, U256, }; +#[cfg(not(target_os = "zkvm"))] use crate::{ builder::{BlockBuilderStrategy, OptimismStrategy}, + host::{preflight::Preflight, provider_db::ProviderDb, ProviderFactory}, +}; +use crate::{ consts::{ONE, OP_MAINNET_CHAIN_SPEC}, - input::Input, + input::BlockBuildInput, optimism::{ - batcher::{Batcher, BlockInfo}, + batcher::{Batcher, BlockId, L2BlockInfo}, batcher_db::BatcherDb, + composition::ImageId, config::ChainConfig, }, + output::BlockBuildOutput, }; pub mod batcher; @@ -83,7 +92,9 @@ pub struct DeriveInput { /// Block count for the operation. pub op_derive_block_count: u64, /// Block building data for execution - pub op_blocks: Vec>, + pub op_block_outputs: Vec, + /// Image id of block builder guest + pub block_image_id: ImageId, } /// Represents the output of the derivation process. @@ -95,31 +106,44 @@ pub struct DeriveOutput { pub op_head: (BlockNumber, BlockHash), /// Derived Optimism blocks. pub derived_op_blocks: Vec<(BlockNumber, BlockHash)>, + /// Image id of block builder guest + pub block_image_id: ImageId, } +#[cfg(target_os = "zkvm")] +type ProviderFactory = (); + /// Implementation of the actual derivation process. pub struct DeriveMachine { /// Input for the derivation process. pub derive_input: DeriveInput, - op_head_block_hash: BlockHash, - op_block_no: u64, + op_head_block_header: Header, op_block_seq_no: u64, pub op_batcher: Batcher, + pub provider_factory: Option, } impl DeriveMachine { /// Creates a new instance of DeriveMachine. - pub fn new(chain_config: &ChainConfig, mut derive_input: DeriveInput) -> Result { - let op_block_no = derive_input.op_head_block_no; + pub fn new( + chain_config: &ChainConfig, + mut derive_input: DeriveInput, + provider_factory: Option, + ) -> Result { + derive_input.db.validate()?; + #[cfg(not(target_os = "zkvm"))] + ensure!(provider_factory.is_some(), "Missing provider factory!"); // read system config from op_head (seq_no/epoch_no..etc) - let op_head = derive_input.db.get_full_op_block(op_block_no)?; + let op_head = derive_input + .db + .get_full_op_block(derive_input.op_head_block_no)?; let op_head_block_hash = op_head.block_header.hash(); #[cfg(not(target_os = "zkvm"))] info!( "Fetched Op head (block no {}) {}", - op_block_no, op_head_block_hash + derive_input.op_head_block_no, op_head_block_hash ); // the first transaction in a block MUST be a L1 attributes deposited transaction @@ -168,35 +192,59 @@ impl DeriveMachine { Batcher::new( op_chain_config, - BlockInfo { + L2BlockInfo { hash: op_head_block_hash, timestamp: op_head.block_header.timestamp.try_into().unwrap(), + l1_origin: BlockId { + number: set_l1_block_values.number, + hash: set_l1_block_values.hash, + }, }, - ð_head, + eth_head, )? }; Ok(DeriveMachine { derive_input, - op_head_block_hash, - op_block_no, + op_head_block_header: op_head.block_header, op_block_seq_no, op_batcher, + provider_factory, }) } - pub fn derive(&mut self) -> Result { + pub fn derive( + &mut self, + mut op_block_inputs: Option<&mut Vec>>, + ) -> Result { + #[cfg(target_os = "zkvm")] + op_block_inputs.take(); + + ensure!( + self.op_head_block_header.number == self.derive_input.op_head_block_no, + "Op head block number mismatch!" + ); let target_block_no = self.derive_input.op_head_block_no + self.derive_input.op_derive_block_count; + // Save starting op_head + let op_head = ( + self.op_head_block_header.number, + self.op_head_block_header.hash(), + ); + let mut derived_op_blocks = Vec::new(); let mut process_next_eth_block = false; - while self.op_block_no < target_block_no { + #[cfg(target_os = "zkvm")] + let mut op_block_output_iter = + core::mem::take(&mut self.derive_input.op_block_outputs).into_iter(); + + while self.op_head_block_header.number < target_block_no { #[cfg(not(target_os = "zkvm"))] info!( "op_block_no = {}, eth_block_no = {}", - self.op_block_no, self.op_batcher.state.current_l1_block_number + self.op_head_block_header.number, self.op_batcher.state.current_l1_block_number ); // Process next Eth block. We do this on every iteration, except the first iteration. @@ -209,7 +257,7 @@ impl DeriveMachine { .context("block not found")?; self.op_batcher - .process_l1_block(ð_block) + .process_l1_block(eth_block) .context("failed to create batcher transactions")?; } process_next_eth_block = true; @@ -217,114 +265,234 @@ impl DeriveMachine { // Process batches while let Some(op_batch) = self.op_batcher.read_batch()? { // Process the batch - self.op_block_no += 1; #[cfg(not(target_os = "zkvm"))] info!( "Read batch for Op block {}: timestamp={}, epoch={}, tx count={}, parent hash={:?}", - self.op_block_no, - op_batch.essence.timestamp, - op_batch.essence.epoch_num, - op_batch.essence.transactions.len(), - op_batch.essence.parent_hash, + self.op_head_block_header.number + 1, + op_batch.0.timestamp, + op_batch.0.epoch_num, + op_batch.0.transactions.len(), + op_batch.0.parent_hash, ); // Update sequence number (and fetch deposits if start of new epoch) - let deposits = - if op_batch.essence.epoch_num == self.op_batcher.state.epoch.number + 1 { - self.op_block_seq_no = 0; - self.op_batcher.state.do_next_epoch()?; - - self.op_batcher - .state - .epoch - .deposits - .iter() - .map(|tx| tx.to_rlp()) - .collect() - } else { - self.op_block_seq_no += 1; - - Vec::new() - }; - - // Obtain new Op head - let new_op_head = { - let new_op_head = self - .derive_input - .db - .get_op_block_header(self.op_block_no) - .context("block not found")?; - - // Verify new op head has the expected parent - assert_eq!( - new_op_head.parent_hash, - self.op_batcher.state.safe_head.hash - ); + let l2_safe_head = &self.op_batcher.state.safe_head; + let deposits = if l2_safe_head.l1_origin.number != op_batch.0.epoch_num { + self.op_block_seq_no = 0; + self.op_batcher.state.do_next_epoch()?; - // Verify that the new op head transactions are consistent with the batch - // transactions - { - // From the spec: - // The first transaction MUST be a L1 attributes deposited transaction, - // followed by an array of zero-or-more user-deposited transactions. - let l1_attributes_tx = self.derive_l1_attributes_deposited_tx(&op_batch); - let derived_transactions = once(l1_attributes_tx.to_rlp()) - .chain(deposits) - .chain(op_batch.essence.transactions.iter().map(|tx| tx.to_vec())) - .enumerate(); - - let mut tx_trie = MptNode::default(); - for (tx_no, tx) in derived_transactions { - let trie_key = tx_no.to_rlp(); - tx_trie.insert(&trie_key, tx)?; - } - if tx_trie.hash() != new_op_head.transactions_root { - bail!("Invalid op block transaction data! Transaction trie root does not match") - } - } + self.op_batcher.state.epoch.deposits.clone() + } else { + self.op_block_seq_no += 1; - new_op_head + vec![] }; - let new_op_head_hash = new_op_head.hash(); - - #[cfg(not(target_os = "zkvm"))] - info!( - "Derived Op block {} w/ hash {}", - new_op_head.number, new_op_head_hash - ); + let l1_epoch_header_mix_hash = self + .derive_input + .db + .get_full_eth_block(op_batch.0.epoch_num) + .context("eth block not found")? + .block_header + .mix_hash; + + // From the spec: + // The first transaction MUST be a L1 attributes deposited transaction, + // followed by an array of zero-or-more user-deposited transactions. + let l1_attributes_tx = self.derive_l1_attributes_deposited_tx(&op_batch); + // TODO: revise that skipping undecodable transactions is part of spec + let decoded_batch_transactions: Vec<_> = op_batch + .0 + .transactions + .iter() + .map(|tx| Transaction::decode(&mut tx.as_ref())) + .filter_map(|tx| tx.ok()) + // We always assume that chain id exists here + .map( + |mut tx: Transaction| match &mut tx.essence { + OptimismTxEssence::Ethereum(EthereumTxEssence::Legacy(essence)) => { + if essence.chain_id.is_none() { + essence.chain_id = Some(OP_MAINNET_CHAIN_SPEC.chain_id()) + } + tx + } + _ => tx, + }, + ) + .collect(); + + let derived_transactions: Vec<_> = once(l1_attributes_tx) + .chain(deposits) + .chain(decoded_batch_transactions) + .collect(); + let derived_transactions_rlp = derived_transactions + .iter() + .map(|tx| tx.to_rlp()) + .enumerate(); + + let mut tx_trie = MptNode::default(); + for (tx_no, tx) in derived_transactions_rlp { + let trie_key = tx_no.to_rlp(); + tx_trie.insert(&trie_key, tx)?; + } - self.op_batcher.state.safe_head = BlockInfo { - hash: new_op_head_hash, - timestamp: new_op_head.timestamp.try_into().unwrap(), + let new_op_head_input = BlockBuildInput { + parent_header: self.op_head_block_header.clone(), + beneficiary: self.op_batcher.config.sequencer_fee_vault, + gas_limit: self.op_batcher.config.system_config.gas_limit, + timestamp: U256::from(op_batch.0.timestamp), + extra_data: Default::default(), + mix_hash: l1_epoch_header_mix_hash, + transactions: derived_transactions, + withdrawals: vec![], + // initializing these fields is not needed here + parent_state_trie: Default::default(), + parent_storage: Default::default(), + contracts: vec![], + ancestor_headers: vec![], }; - derived_op_blocks.push((new_op_head.number, new_op_head_hash)); + // host: go run the preflight and queue up the input data (using RLP decoded + // transactions) + #[cfg(not(target_os = "zkvm"))] + let op_block_output = { + // Create the provider DB + // todo: run without factory (using outputs) + let provider_db = ProviderDb::new( + self.provider_factory + .as_ref() + .unwrap() + .create_provider(self.op_head_block_header.number)?, + self.op_head_block_header.number, + ); + let preflight_data = OptimismStrategy::preflight_input_with_provider_db( + OP_MAINNET_CHAIN_SPEC.clone(), + provider_db, + new_op_head_input.clone(), + ) + .map(|mut headerless_preflight_data| { + headerless_preflight_data.header = Header { + beneficiary: new_op_head_input.beneficiary, + gas_limit: new_op_head_input.gas_limit, + timestamp: new_op_head_input.timestamp, + extra_data: new_op_head_input.extra_data.clone(), + mix_hash: new_op_head_input.mix_hash, + // unnecessary + parent_hash: Default::default(), + ommers_hash: Default::default(), + state_root: Default::default(), + transactions_root: Default::default(), + receipts_root: Default::default(), + logs_bloom: Default::default(), + difficulty: Default::default(), + number: 0, + gas_used: Default::default(), + nonce: Default::default(), + base_fee_per_gas: Default::default(), + withdrawals_root: None, + }; + headerless_preflight_data + })?; + + let executable_input: BlockBuildInput = + preflight_data.try_into()?; + if let Some(ref mut inputs_vec) = op_block_inputs { + inputs_vec.push(executable_input.clone()); + } - if self.op_block_no == target_block_no { - break; - } - } - } + OptimismStrategy::build_from(&OP_MAINNET_CHAIN_SPEC, executable_input)? + .with_state_compressed() + }; + // guest: ask for receipt about provided block build output (compressed state trie + // expected) + #[cfg(target_os = "zkvm")] + let op_block_output = { + let output = op_block_output_iter.next().unwrap(); + // A valid receipt should be provided for block building results + let builder_journal = + to_vec(&output).expect("Failed to encode builder journal"); + env::verify( + Digest::from(self.derive_input.block_image_id), + &builder_journal, + ) + .expect("Failed to validate block build output"); + output + }; - // Execute transactions to verify valid state transitions - let op_blocks = mem::take(&mut self.derive_input.op_blocks); - if op_blocks.len() != derived_op_blocks.len() { - bail!( - "Mismatch between number of input op blocks {} and derived block count {}", - op_blocks.len(), - derived_op_blocks.len() - ); - } - for (i, input) in op_blocks.into_iter().enumerate() { - let (header, _) = OptimismStrategy::build_from(&OP_MAINNET_CHAIN_SPEC, input)?; - if header.hash() != derived_op_blocks[i].1 { - bail!( - "Mismatch between built block {} and derived block {}.", - header.number, - &derived_op_blocks[i].0 - ) + match op_block_output { + BlockBuildOutput::SUCCESS { + new_block_hash, + new_block_head, + .. + } => { + // Verify that the built op block matches the payload attributes of the + // batch. + ensure!( + new_block_head.parent_hash == self.op_batcher.state.safe_head.hash, + "Invalid op block parent hash" + ); + ensure!( + new_block_head.beneficiary + == self.op_batcher.config.sequencer_fee_vault, + "Invalid op block beneficiary" + ); + ensure!( + new_block_head.gas_limit + == self.op_batcher.config.system_config.gas_limit, + "Invalid op block gas limit" + ); + ensure!( + new_block_head.timestamp == U256::from(op_batch.0.timestamp), + "Invalid op block timestamp" + ); + ensure!( + new_block_head.extra_data.is_empty(), + "Invalid op block extra data" + ); + ensure!( + new_block_head.mix_hash == l1_epoch_header_mix_hash, + "Invalid op block mix hash" + ); + ensure!( + tx_trie.hash() == new_block_head.transactions_root, + "Invalid op block transactions" + ); + ensure!( + new_block_head.withdrawals_root.is_none(), + "Invalid op block withdrawals" + ); + + // obtain verified op block header + #[cfg(not(target_os = "zkvm"))] + info!( + "Derived Op block {} w/ hash {}", + new_block_head.number, new_block_hash + ); + + self.op_batcher.state.safe_head = L2BlockInfo { + hash: new_block_hash, + timestamp: new_block_head.timestamp.try_into().unwrap(), + l1_origin: BlockId { + number: self.op_batcher.state.epoch.number, + hash: self.op_batcher.state.epoch.hash, + }, + }; + + derived_op_blocks.push((new_block_head.number, new_block_hash)); + self.op_head_block_header = new_block_head; + + if self.op_head_block_header.number == target_block_no { + break; + } + } + BlockBuildOutput::FAILURE { bad_input_hash } => { + ensure!( + new_op_head_input.partial_hash() == bad_input_hash, + "Invalid input partial hash" + ); + } + }; } } @@ -333,8 +501,9 @@ impl DeriveMachine { self.op_batcher.state.current_l1_block_number, self.op_batcher.state.current_l1_block_hash, ), - op_head: (self.derive_input.op_head_block_no, self.op_head_block_hash), + op_head, derived_op_blocks, + block_image_id: self.derive_input.block_image_id, }) } @@ -360,7 +529,7 @@ impl DeriveMachine { }); let source_hash: B256 = { - let l1_block_hash = op_batch.essence.epoch_hash.0; + let l1_block_hash = op_batch.0.epoch_hash.0; let seq_number = U256::from(self.op_block_seq_no).to_be_bytes::<32>(); let source_hash_sequencing = keccak([l1_block_hash, seq_number].concat()); keccak([ONE.to_be_bytes::<32>(), source_hash_sequencing].concat()).into() diff --git a/lib/src/output.rs b/lib/src/output.rs new file mode 100644 index 00000000..3f53f299 --- /dev/null +++ b/lib/src/output.rs @@ -0,0 +1,59 @@ +// Copyright 2024 RISC Zero, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use serde::{Deserialize, Serialize}; +use zeth_primitives::{block::Header, trie::MptNode, B256}; + +/// Output of block execution +#[derive(Debug, Clone, Eq, PartialEq, Deserialize, Serialize)] +pub enum BlockBuildOutput { + SUCCESS { + new_block_hash: B256, + new_block_head: Header, + new_block_state: MptNode, + }, + FAILURE { + bad_input_hash: B256, + }, +} + +impl BlockBuildOutput { + pub fn success(&self) -> bool { + match self { + BlockBuildOutput::SUCCESS { .. } => true, + BlockBuildOutput::FAILURE { .. } => false, + } + } + + pub fn compress_state(&mut self) -> Option { + if let BlockBuildOutput::SUCCESS { + new_block_head, + new_block_state, + .. + } = self + { + Some(core::mem::replace( + new_block_state, + new_block_head.state_root.into(), + )) + } else { + None + } + } + + pub fn with_state_compressed(mut self) -> Self { + self.compress_state(); + self + } +} diff --git a/primitives/Cargo.toml b/primitives/Cargo.toml index 0835ce6d..56cf8fbc 100644 --- a/primitives/Cargo.toml +++ b/primitives/Cargo.toml @@ -4,14 +4,21 @@ version = "0.1.0" edition = "2021" [dependencies] -alloy-primitives = { version = "0.4", default-features = false, features = ["rlp", "serde", "std"] } +alloy-primitives = { version = "0.6.0", default-features = false, features = [ + "rlp", + "serde", + "std", +] } alloy-rlp = { version = "0.3", default-features = false } alloy-rlp-derive = { version = "0.3", default-features = false } anyhow = "1.0" bytes = { version = "1.1", default-features = false } ethers-core = { version = "2.0", optional = true, features = ["optimism"] } -k256 = { version = "=0.13.1", features = ["std", "ecdsa"], default_features = false } -revm-primitives = { version = "1.3", optional = true, default_features = false } +k256 = { version = "0.13", features = [ + "std", + "ecdsa", +], default_features = false } +revm-primitives = { workspace = true, optional = true } rlp = "0.5.2" serde = { version = "1.0", features = ["derive"] } sha2 = { version = "=0.10.6", default-features = false} diff --git a/primitives/src/access_list.rs b/primitives/src/access_list.rs index 906ce34b..03817bc8 100644 --- a/primitives/src/access_list.rs +++ b/primitives/src/access_list.rs @@ -13,7 +13,7 @@ // limitations under the License. use alloy_primitives::{Address, StorageKey}; -use alloy_rlp_derive::{RlpEncodable, RlpEncodableWrapper}; +use alloy_rlp_derive::{RlpDecodable, RlpDecodableWrapper, RlpEncodable, RlpEncodableWrapper}; use serde::{Deserialize, Serialize}; /// Represents an access list as defined in EIP-2930. @@ -21,7 +21,17 @@ use serde::{Deserialize, Serialize}; /// An access list is a list of addresses and storage keys that a transaction will access, /// allowing for gas optimizations. This structure is introduced to improve the gas cost /// calculations by making certain accesses cheaper if they are declared in this list. -#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize, RlpEncodableWrapper)] +#[derive( + Debug, + Clone, + PartialEq, + Eq, + Default, + Serialize, + Deserialize, + RlpEncodableWrapper, + RlpDecodableWrapper, +)] pub struct AccessList(pub Vec); /// Represents an item in the [AccessList]. @@ -29,7 +39,9 @@ pub struct AccessList(pub Vec); /// Each item specifies an Ethereum address and a set of storage keys that the transaction /// will access. By providing this information up front, the transaction can benefit from /// gas cost optimizations. -#[derive(Debug, Clone, PartialEq, Eq, Default, RlpEncodable, Serialize, Deserialize)] +#[derive( + Debug, Clone, PartialEq, Eq, Default, RlpEncodable, Serialize, Deserialize, RlpDecodable, +)] pub struct AccessListItem { /// The Ethereum address that the transaction will access. pub address: Address, diff --git a/primitives/src/batch.rs b/primitives/src/batch.rs index 1028ba4b..a2c4fa02 100644 --- a/primitives/src/batch.rs +++ b/primitives/src/batch.rs @@ -1,4 +1,4 @@ -// Copyright 2023 RISC Zero, Inc. +// Copyright 2024 RISC Zero, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,63 +12,43 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::cmp::Ordering; - -use alloy_primitives::{BlockNumber, Bytes, B256}; +use alloy_primitives::{Bytes, B256}; use alloy_rlp::{Decodable, Encodable}; use alloy_rlp_derive::{RlpDecodable, RlpEncodable}; use serde::{Deserialize, Serialize}; +/// Bytes for RLP-encoded transactions. pub type RawTransaction = Bytes; -/// A batch contains information to build one Optimism block. +/// A batch represents the inputs needed to build Optimism block. #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] -pub struct Batch { - pub inclusion_block_number: BlockNumber, - pub essence: BatchEssence, -} +pub struct Batch(pub BatchEssence); /// Represents the core details of a [Batch], specifically the portion that is derived /// from the batcher transactions. #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, RlpEncodable, RlpDecodable)] pub struct BatchEssence { + /// The block hash of the previous L2 block. pub parent_hash: B256, + /// The number of the L1 block corresponding to the sequencing epoch of the L2 block. pub epoch_num: u64, + /// The hash of the L1 block corresponding to the sequencing epoch of the L2 block. pub epoch_hash: B256, + /// The timestamp of the L2 block. pub timestamp: u64, + /// An RLP-encoded list of EIP-2718 encoded transactions. pub transactions: Vec, } -impl PartialOrd for Batch { - fn partial_cmp(&self, other: &Self) -> Option { - Some(self.cmp(other)) - } -} - -impl Ord for Batch { - fn cmp(&self, other: &Self) -> Ordering { - self.essence.timestamp.cmp(&other.essence.timestamp) - } -} - impl Batch { - pub fn new( - inclusion_block_number: BlockNumber, - parent_hash: B256, - epoch_num: u64, - epoch_hash: B256, - timestamp: u64, - ) -> Self { - Self { - inclusion_block_number, - essence: BatchEssence { - parent_hash, - epoch_num, - epoch_hash, - timestamp, - transactions: Vec::new(), - }, - } + pub fn new(parent_hash: B256, epoch_num: u64, epoch_hash: B256, timestamp: u64) -> Self { + Batch(BatchEssence { + parent_hash, + epoch_num, + epoch_hash, + timestamp, + transactions: Vec::new(), + }) } } @@ -78,28 +58,26 @@ impl Encodable for Batch { // wrap the RLP-essence inside a bytes payload alloy_rlp::Header { list: false, - payload_length: self.essence.length() + 1, + payload_length: self.0.length() + 1, } .encode(out); out.put_u8(0x00); - self.essence.encode(out); + self.0.encode(out); } #[inline] fn length(&self) -> usize { - let bytes_length = self.essence.length() + 1; + let bytes_length = self.0.length() + 1; alloy_rlp::length_of_length(bytes_length) + bytes_length } } impl Decodable for Batch { + #[inline] fn decode(buf: &mut &[u8]) -> alloy_rlp::Result { let bytes = alloy_rlp::Header::decode_bytes(buf, false)?; match bytes.split_first() { - Some((0, mut payload)) => Ok(Self { - inclusion_block_number: 0, - essence: BatchEssence::decode(&mut payload)?, - }), + Some((0, mut payload)) => Ok(Self(BatchEssence::decode(&mut payload)?)), Some(_) => Err(alloy_rlp::Error::Custom("invalid version")), None => Err(alloy_rlp::Error::InputTooShort), } @@ -117,14 +95,11 @@ mod tests { fn rlp_roundtrip() { let expected = hex!("b85000f84da0dbf6a80fef073de06add9b0d14026d6e5a86c85f6d102c36d3d8e9cf89c2afd3840109d8fea0438335a20d98863a4c0c97999eb2481921ccd28553eac6f913af7c12aec0410884647f5ea9c0"); let batch: Batch = serde_json::from_value(json!({ - "inclusion_block_number": 0, - "essence": { - "parent_hash": "0xdbf6a80fef073de06add9b0d14026d6e5a86c85f6d102c36d3d8e9cf89c2afd3", - "epoch_num": 17422590, - "epoch_hash": "0x438335a20d98863a4c0c97999eb2481921ccd28553eac6f913af7c12aec04108", - "timestamp": 1686068905, - "transactions": [] - } + "parent_hash": "0xdbf6a80fef073de06add9b0d14026d6e5a86c85f6d102c36d3d8e9cf89c2afd3", + "epoch_num": 17422590, + "epoch_hash": "0x438335a20d98863a4c0c97999eb2481921ccd28553eac6f913af7c12aec04108", + "timestamp": 1686068905, + "transactions": [] })) .unwrap(); diff --git a/primitives/src/ethers.rs b/primitives/src/ethers.rs index 346101ee..40f01472 100644 --- a/primitives/src/ethers.rs +++ b/primitives/src/ethers.rs @@ -238,7 +238,7 @@ impl TryFrom for OptimismTxEssence { value: from_ethers_u256(tx.value), data: tx.input.0.into(), source_hash: from_ethers_h256(tx.source_hash), - mint: from_ethers_u256(tx.mint.unwrap_or_default()), + mint: from_ethers_u256(tx.mint.context("mint missing")?), is_system_tx: tx.is_system_tx, }), _ => OptimismTxEssence::Ethereum(tx.try_into()?), diff --git a/primitives/src/revm.rs b/primitives/src/revm.rs index 212ce374..726d2438 100644 --- a/primitives/src/revm.rs +++ b/primitives/src/revm.rs @@ -1,4 +1,4 @@ -// Copyright 2023 RISC Zero, Inc. +// Copyright 2024 RISC Zero, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -49,8 +49,8 @@ impl From for Log { fn from(log: RevmLog) -> Self { Log { address: log.address, - topics: log.topics, - data: log.data, + topics: log.data.topics().to_vec(), + data: log.data.data, } } } diff --git a/primitives/src/transactions/ethereum.rs b/primitives/src/transactions/ethereum.rs index b48d0dbd..408d32a6 100644 --- a/primitives/src/transactions/ethereum.rs +++ b/primitives/src/transactions/ethereum.rs @@ -13,9 +13,10 @@ // limitations under the License. use alloy_primitives::{Address, Bytes, ChainId, TxNumber, B256, U256}; -use alloy_rlp::{Encodable, EMPTY_STRING_CODE}; -use alloy_rlp_derive::RlpEncodable; +use alloy_rlp::{Decodable, Encodable, EMPTY_STRING_CODE}; +use alloy_rlp_derive::{RlpDecodable, RlpEncodable}; use anyhow::Context; +use bytes::Buf; use k256::{ ecdsa::{RecoveryId, Signature as K256Signature, VerifyingKey as K256VerifyingKey}, elliptic_curve::sec1::ToEncodedPoint, @@ -24,7 +25,11 @@ use k256::{ use serde::{Deserialize, Serialize}; use super::signature::TxSignature; -use crate::{access_list::AccessList, keccak::keccak, transactions::TxEssence}; +use crate::{ + access_list::AccessList, + keccak::keccak, + transactions::{HeaderlessDecodable, TxEssence}, +}; /// Represents a legacy Ethereum transaction as detailed in [EIP-155](https://eips.ethereum.org/EIPS/eip-155). /// @@ -145,13 +150,30 @@ impl Encodable for TxEssenceLegacy { } } +impl HeaderlessDecodable for TxEssenceLegacy { + fn headerless_decode(buf: &mut &[u8]) -> alloy_rlp::Result { + alloy_rlp::Header::decode(buf)?; + Ok(Self { + chain_id: None, + nonce: TxNumber::decode(buf)?, + gas_price: U256::decode(buf)?, + gas_limit: U256::decode(buf)?, + to: TransactionKind::decode(buf)?, + value: U256::decode(buf)?, + data: Bytes::decode(buf)?, + }) + } +} + /// Represents an Ethereum transaction with an access list, as detailed in [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930). /// /// The `TxEssenceEip2930` struct encapsulates the core components of an Ethereum /// transaction that includes an access list. Access lists are a feature introduced in /// EIP-2930 to specify a list of addresses and storage keys that the transaction will /// access, allowing for more predictable gas costs. -#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize, RlpEncodable)] +#[derive( + Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize, RlpEncodable, RlpDecodable, +)] pub struct TxEssenceEip2930 { /// The network's chain ID, ensuring the transaction is valid on the intended chain. pub chain_id: ChainId, @@ -175,13 +197,30 @@ pub struct TxEssenceEip2930 { pub access_list: AccessList, } +impl HeaderlessDecodable for TxEssenceEip2930 { + fn headerless_decode(buf: &mut &[u8]) -> alloy_rlp::Result { + Ok(Self { + chain_id: ChainId::decode(buf)?, + nonce: TxNumber::decode(buf)?, + gas_price: U256::decode(buf)?, + gas_limit: U256::decode(buf)?, + to: TransactionKind::decode(buf)?, + value: U256::decode(buf)?, + data: Bytes::decode(buf)?, + access_list: AccessList::decode(buf)?, + }) + } +} + /// Represents an Ethereum transaction with a priority fee, as detailed in [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559). /// /// The `TxEssenceEip1559` struct encapsulates the core components of an Ethereum /// transaction that incorporates the priority fee mechanism introduced in EIP-1559. This /// mechanism aims to improve the predictability of gas fees and enhance the overall user /// experience. -#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize, RlpEncodable)] +#[derive( + Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize, RlpEncodable, RlpDecodable, +)] pub struct TxEssenceEip1559 { /// The network's chain ID, ensuring the transaction is valid on the intended chain, /// as introduced in EIP-155. @@ -209,6 +248,22 @@ pub struct TxEssenceEip1559 { pub access_list: AccessList, } +impl HeaderlessDecodable for TxEssenceEip1559 { + fn headerless_decode(buf: &mut &[u8]) -> alloy_rlp::Result { + Ok(Self { + chain_id: ChainId::decode(buf)?, + nonce: TxNumber::decode(buf)?, + max_priority_fee_per_gas: U256::decode(buf)?, + max_fee_per_gas: U256::decode(buf)?, + gas_limit: U256::decode(buf)?, + to: TransactionKind::decode(buf)?, + value: U256::decode(buf)?, + data: Bytes::decode(buf)?, + access_list: AccessList::decode(buf)?, + }) + } +} + /// Represents the type of an Ethereum transaction: either a contract creation or a call /// to an existing contract. /// @@ -277,6 +332,17 @@ impl Encodable for TransactionKind { } } +impl Decodable for TransactionKind { + fn decode(buf: &mut &[u8]) -> alloy_rlp::Result { + if buf == &mut [EMPTY_STRING_CODE] { + buf.advance(1); + Ok(TransactionKind::Create) + } else { + Ok(TransactionKind::Call(Address::decode(buf)?)) + } + } +} + /// Represents the core essence of an Ethereum transaction, specifically the portion that /// gets signed. /// @@ -327,6 +393,32 @@ impl Encodable for EthereumTxEssence { } } +impl HeaderlessDecodable for EthereumTxEssence { + fn headerless_decode(buf: &mut &[u8]) -> alloy_rlp::Result { + // check the EIP-2718 transaction type for non-legacy transactions + match buf.first().copied() { + Some(value) if value <= 0x7f => { + buf.advance(1); + alloy_rlp::Header::decode(buf)?; + // typed tx + match value { + 0x01 => Ok(EthereumTxEssence::Eip2930( + TxEssenceEip2930::headerless_decode(buf)?, + )), + 0x02 => Ok(EthereumTxEssence::Eip1559( + TxEssenceEip1559::headerless_decode(buf)?, + )), + _ => Err(alloy_rlp::Error::Custom("Unsupported transaction type")), + } + } + Some(_) => Ok(EthereumTxEssence::Legacy( + TxEssenceLegacy::headerless_decode(buf)?, + )), + None => Err(alloy_rlp::Error::InputTooShort), + } + } +} + impl EthereumTxEssence { /// Computes the signing hash for the transaction essence. /// @@ -461,7 +553,10 @@ mod tests { use serde_json::json; use super::*; - use crate::transactions::EthereumTransaction; + use crate::{ + transactions::{EthereumTransaction, Transaction}, + RlpBytes, + }; #[test] fn legacy() { @@ -486,6 +581,11 @@ mod tests { .unwrap(); let transaction = EthereumTransaction { essence, signature }; + // verify that rlp encode/decode works + let recoded_transaction: Transaction = + Transaction::decode(&mut transaction.to_rlp().as_ref()).unwrap(); + assert_eq!(transaction.to_rlp(), recoded_transaction.to_rlp()); + // verify that bincode serialization works let _: EthereumTransaction = bincode::deserialize(&bincode::serialize(&transaction).unwrap()).unwrap(); @@ -525,6 +625,11 @@ mod tests { .unwrap(); let transaction = EthereumTransaction { essence, signature }; + // verify that rlp encode/decode works + let recoded_transaction: Transaction = + Transaction::decode(&mut transaction.to_rlp().as_ref()).unwrap(); + assert_eq!(transaction.to_rlp(), recoded_transaction.to_rlp()); + // verify that bincode serialization works let _: EthereumTransaction = bincode::deserialize(&bincode::serialize(&transaction).unwrap()).unwrap(); @@ -601,6 +706,11 @@ mod tests { .unwrap(); let transaction = EthereumTransaction { essence, signature }; + // verify that rlp encode/decode works + let recoded_transaction: Transaction = + Transaction::decode(&mut transaction.to_rlp().as_ref()).unwrap(); + assert_eq!(transaction.to_rlp(), recoded_transaction.to_rlp()); + // verify that bincode serialization works let _: EthereumTransaction = bincode::deserialize(&bincode::serialize(&transaction).unwrap()).unwrap(); @@ -642,6 +752,11 @@ mod tests { .unwrap(); let transaction = EthereumTransaction { essence, signature }; + // verify that rlp encode/decode works + let recoded_transaction: Transaction = + Transaction::decode(&mut transaction.to_rlp().as_ref()).unwrap(); + assert_eq!(transaction.to_rlp(), recoded_transaction.to_rlp()); + // verify that bincode serialization works let _: EthereumTransaction = bincode::deserialize(&bincode::serialize(&transaction).unwrap()).unwrap(); diff --git a/primitives/src/transactions/mod.rs b/primitives/src/transactions/mod.rs index c1aafb93..8ab5322c 100644 --- a/primitives/src/transactions/mod.rs +++ b/primitives/src/transactions/mod.rs @@ -12,14 +12,18 @@ // See the License for the specific language governing permissions and // limitations under the License. +use std::fmt::Debug; + use alloy_primitives::{Address, Bytes, TxHash}; -use alloy_rlp::Encodable; +use alloy_rlp::{Decodable, Encodable}; use serde::{Deserialize, Serialize}; use self::{ optimism::{OptimismTxEssence, OPTIMISM_DEPOSITED_TX_TYPE}, signature::TxSignature, }; +// #[cfg(not(target_os = "zkvm"))] +// use crate::RlpBytes; use crate::{keccak::keccak, transactions::ethereum::EthereumTxEssence, U256}; pub mod ethereum; @@ -44,9 +48,13 @@ pub struct Transaction { pub signature: TxSignature, } +pub trait HeaderlessDecodable: Sized { + fn headerless_decode(buf: &mut &[u8]) -> alloy_rlp::Result; +} + /// Represents the core details of a [Transaction], specifically the portion that gets /// signed. -pub trait TxEssence: Encodable + Clone { +pub trait TxEssence: HeaderlessDecodable + Encodable + Clone { /// Returns the EIP-2718 transaction type or `0x00` for Legacy transactions. fn tx_type(&self) -> u8; /// Returns the gas limit set for the transaction. @@ -124,6 +132,21 @@ impl Encodable for Transaction { } } +impl Decodable for Transaction { + fn decode(buf: &mut &[u8]) -> alloy_rlp::Result { + let essence = E::headerless_decode(buf)?; + let signature = if let (Ok(v), Ok(r), Ok(s)) = + (u64::decode(buf), U256::decode(buf), U256::decode(buf)) + { + TxSignature { v, r, s } + } else { + TxSignature::default() + }; + + Ok(Self { essence, signature }) + } +} + impl Transaction { /// Calculates the Keccak hash of the RLP-encoded transaction. /// @@ -184,7 +207,7 @@ mod tests { use serde_json::json; use super::*; - use crate::transactions::EthereumTransaction; + use crate::{transactions::EthereumTransaction, RlpBytes}; #[test] fn rlp_length() { @@ -208,6 +231,11 @@ mod tests { }); let transaction: EthereumTransaction = serde_json::from_value(tx).unwrap(); + // verify that rlp encode/decode works + let recoded_transaction: Transaction = + Transaction::decode(&mut transaction.to_rlp().as_ref()).unwrap(); + assert_eq!(transaction.to_rlp(), recoded_transaction.to_rlp()); + let encoded = alloy_rlp::encode(&transaction.essence); assert_eq!(encoded.len(), transaction.essence.length()); diff --git a/primitives/src/transactions/optimism.rs b/primitives/src/transactions/optimism.rs index be266b38..f26cb74d 100644 --- a/primitives/src/transactions/optimism.rs +++ b/primitives/src/transactions/optimism.rs @@ -13,15 +13,15 @@ // limitations under the License. use alloy_primitives::{Address, Bytes, B256, U256}; -use alloy_rlp::Encodable; -use alloy_rlp_derive::RlpEncodable; -use bytes::BufMut; +use alloy_rlp::{Decodable, Encodable}; +use alloy_rlp_derive::{RlpDecodable, RlpEncodable}; +use bytes::{Buf, BufMut}; use serde::{Deserialize, Serialize}; use super::signature::TxSignature; use crate::transactions::{ ethereum::{EthereumTxEssence, TransactionKind}, - TxEssence, + HeaderlessDecodable, TxEssence, }; /// The EIP-2718 transaction type for an Optimism deposited transaction. @@ -29,7 +29,9 @@ pub const OPTIMISM_DEPOSITED_TX_TYPE: u8 = 0x7E; /// Represents an Optimism depositing transaction that is a L2 transaction that was /// derived from L1 and included in a L2 block. -#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize, RlpEncodable)] +#[derive( + Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize, RlpEncodable, RlpDecodable, +)] pub struct TxEssenceOptimismDeposited { /// The source hash which uniquely identifies the origin of the deposit. pub source_hash: B256, @@ -50,6 +52,21 @@ pub struct TxEssenceOptimismDeposited { pub data: Bytes, } +impl HeaderlessDecodable for TxEssenceOptimismDeposited { + fn headerless_decode(buf: &mut &[u8]) -> alloy_rlp::Result { + Ok(Self { + source_hash: B256::decode(buf)?, + from: Address::decode(buf)?, + to: TransactionKind::decode(buf)?, + mint: U256::decode(buf)?, + value: U256::decode(buf)?, + gas_limit: U256::decode(buf)?, + is_system_tx: bool::decode(buf)?, + data: Bytes::decode(buf)?, + }) + } +} + /// Represents the core essence of an Optimism transaction, specifically the portion that /// gets signed. /// @@ -83,6 +100,24 @@ impl Encodable for OptimismTxEssence { } } +impl HeaderlessDecodable for OptimismTxEssence { + fn headerless_decode(buf: &mut &[u8]) -> alloy_rlp::Result { + match buf.first().copied() { + Some(0x7e) => { + buf.advance(1); + alloy_rlp::Header::decode(buf)?; + Ok(OptimismTxEssence::OptimismDeposited( + TxEssenceOptimismDeposited::headerless_decode(buf)?, + )) + } + Some(_) => Ok(OptimismTxEssence::Ethereum( + EthereumTxEssence::headerless_decode(buf)?, + )), + None => Err(alloy_rlp::Error::InputTooShort), + } + } +} + impl TxEssence for OptimismTxEssence { /// Returns the EIP-2718 transaction type. fn tx_type(&self) -> u8 { @@ -134,7 +169,10 @@ mod tests { use serde_json::json; use super::*; - use crate::transactions::OptimismTransaction; + use crate::{ + transactions::{OptimismTransaction, Transaction}, + RlpBytes, + }; #[test] fn ethereum() { @@ -165,6 +203,11 @@ mod tests { let transaction = OptimismTransaction { essence, signature }; + // verify that rlp encode/decode works + let recoded_transaction: Transaction = + Transaction::decode(&mut transaction.to_rlp().as_ref()).unwrap(); + assert_eq!(transaction.to_rlp(), recoded_transaction.to_rlp()); + // verify that bincode serialization works let _: OptimismTransaction = bincode::deserialize(&bincode::serialize(&transaction).unwrap()).unwrap(); @@ -205,6 +248,11 @@ mod tests { signature: TxSignature::default(), }; + // verify that rlp encode/decode works + let recoded_transaction: Transaction = + Transaction::decode(&mut transaction.to_rlp().as_ref()).unwrap(); + assert_eq!(transaction.to_rlp(), recoded_transaction.to_rlp()); + // verify that bincode serialization works let _: OptimismTransaction = bincode::deserialize(&bincode::serialize(&transaction).unwrap()).unwrap(); diff --git a/primitives/src/transactions/signature.rs b/primitives/src/transactions/signature.rs index e19c0641..5eb9e097 100644 --- a/primitives/src/transactions/signature.rs +++ b/primitives/src/transactions/signature.rs @@ -13,7 +13,7 @@ // limitations under the License. use alloy_primitives::U256; -use alloy_rlp_derive::{RlpEncodable, RlpMaxEncodedLen}; +use alloy_rlp_derive::{RlpDecodable, RlpEncodable, RlpMaxEncodedLen}; use serde::{Deserialize, Serialize}; /// Represents a cryptographic signature associated with a transaction. @@ -22,7 +22,16 @@ use serde::{Deserialize, Serialize}; /// and `s`. This signature can be used to recover the public key of the signer, ensuring /// the authenticity of the transaction. #[derive( - Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize, RlpEncodable, RlpMaxEncodedLen, + Debug, + Clone, + Default, + PartialEq, + Eq, + Serialize, + Deserialize, + RlpEncodable, + RlpMaxEncodedLen, + RlpDecodable, )] pub struct TxSignature { pub v: u64, diff --git a/primitives/src/trie/mpt.rs b/primitives/src/trie/mpt.rs index d030e6f6..9d03832b 100644 --- a/primitives/src/trie/mpt.rs +++ b/primitives/src/trie/mpt.rs @@ -71,6 +71,15 @@ pub enum Error { LegacyRlp(#[from] DecoderError), } +impl From for MptNode { + fn from(value: B256) -> Self { + MptNode { + data: MptNodeData::Digest(value), + cached_reference: RefCell::new(None), + } + } +} + /// Represents the various types of data that can be stored within a node in the sparse /// Merkle Patricia Trie (MPT). /// diff --git a/testing/ef-tests/src/lib.rs b/testing/ef-tests/src/lib.rs index 4772b3a8..c85607e3 100644 --- a/testing/ef-tests/src/lib.rs +++ b/testing/ef-tests/src/lib.rs @@ -22,11 +22,11 @@ use zeth_lib::{ builder::{BlockBuilder, BlockBuilderStrategy, EthereumStrategy}, consts::ChainSpec, host::{ - preflight::Data, + preflight::BlockBuildPreflightData, provider::{AccountQuery, BlockQuery, ProofQuery, Provider, StorageQuery}, provider_db::ProviderDb, }, - input::Input, + input::BlockBuildInput, mem_db::{AccountState, DbAccount, MemDb}, }; use zeth_primitives::{ @@ -315,7 +315,7 @@ pub fn create_input( transactions: Vec, withdrawals: Vec, state: TestState, -) -> Input { +) -> BlockBuildInput { // create the provider DB let provider_db = ProviderDb::new( Box::new(TestProvider { @@ -330,7 +330,7 @@ pub fn create_input( .into_iter() .map(EthereumTransaction::from) .collect(); - let input = Input { + let input = BlockBuildInput { beneficiary: header.beneficiary, gas_limit: header.gas_limit, timestamp: header.timestamp, @@ -347,7 +347,7 @@ pub fn create_input( }; // create and run the block builder once to create the initial DB - let mut builder = BlockBuilder::new(&chain_spec, input) + let mut builder = BlockBuilder::new(&chain_spec, input, None) .with_db(provider_db) .prepare_header::<::HeaderPrepStrategy>() .unwrap() @@ -359,7 +359,7 @@ pub fn create_input( let proofs = provider_db.get_latest_proofs().unwrap(); let ancestor_headers = provider_db.get_ancestor_headers().unwrap(); - let preflight_data = Data { + let preflight_data = BlockBuildPreflightData { db: provider_db.get_initial_db().clone(), parent_header, parent_proofs, diff --git a/testing/ef-tests/testguest/Cargo.lock b/testing/ef-tests/testguest/Cargo.lock index 286c3ca8..0e12bf38 100644 --- a/testing/ef-tests/testguest/Cargo.lock +++ b/testing/ef-tests/testguest/Cargo.lock @@ -52,9 +52,9 @@ checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" [[package]] name = "alloy-primitives" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0628ec0ba5b98b3370bb6be17b12f23bfce8ee4ad83823325a20546d9b03b78" +checksum = "f4b6fb2b432ff223d513db7f908937f63c252bee0af9b82bfd25b0a5dd1eb0d8" dependencies = [ "alloy-rlp", "bytes", @@ -63,6 +63,8 @@ dependencies = [ "derive_more", "hex-literal", "itoa", + "k256", + "keccak-asm", "proptest", "rand", "ruint", @@ -72,49 +74,48 @@ dependencies = [ [[package]] name = "alloy-rlp" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc0fac0fc16baf1f63f78b47c3d24718f3619b0714076f6a02957d808d52cbef" +checksum = "8d58d9f5da7b40e9bfff0b7e7816700be4019db97d4b6359fe7f94a9e22e42ac" dependencies = [ - "alloy-rlp-derive", "arrayvec", "bytes", - "smol_str", ] [[package]] name = "alloy-rlp-derive" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0391754c09fab4eae3404d19d0d297aa1c670c1775ab51d8a5312afeca23157" +checksum = "1a047897373be4bbb0224c1afdabca92648dc57a9c9ef6e7b0be3aff7a859c83" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "alloy-sol-macro" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a98ad1696a2e17f010ae8e43e9f2a1e930ed176a8e3ff77acfeff6dfb07b42c" +checksum = "8b0b5ab0cb07c21adf9d72e988b34e8200ce648c2bba8d009183bb1c50fb1216" dependencies = [ "const-hex", "dunce", "heck", + "indexmap 2.1.0", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-types" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98d7107bed88e8f09f0ddcc3335622d87bfb6821f3e0c7473329fb1cfad5e015" +checksum = "6c08f62ded7ce03513bfb60ef5cad4fff5d4f67eac6feb4df80426b7b9ffb06e" dependencies = [ "alloy-primitives", "alloy-sol-macro", @@ -139,9 +140,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "ark-bn254" @@ -385,13 +386,13 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -405,6 +406,16 @@ dependencies = [ "rustc_version 0.4.0", ] +[[package]] +name = "aurora-engine-modexp" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfacad86e9e138fca0670949eb8ed4ffdf73a55bded8887efe0863cd1a3a6f70" +dependencies = [ + "hex", + "num", +] + [[package]] name = "auto_impl" version = "1.1.0" @@ -452,9 +463,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64ct" @@ -468,7 +479,7 @@ version = "0.66.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "cexpr", "clang-sys", "lazy_static", @@ -481,7 +492,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.41", + "syn 2.0.48", "which", ] @@ -508,9 +519,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" dependencies = [ "serde", ] @@ -572,9 +583,9 @@ checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9" dependencies = [ "bytemuck_derive", ] @@ -587,7 +598,7 @@ checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -607,9 +618,9 @@ dependencies = [ [[package]] name = "c-kzg" -version = "0.1.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac926d808fb72fe09ebf471a091d6d72918876ccf0b4989766093d2d0d24a0ef" +checksum = "32700dc7904064bb64e857d38a1766607372928e2466ee5f02a869829b3297d7" dependencies = [ "bindgen", "blst", @@ -646,22 +657,22 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" dependencies = [ "glob", "libc", @@ -720,9 +731,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -785,7 +796,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -796,7 +807,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -823,9 +834,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", "serde", @@ -948,7 +959,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fe81b5c06ecfdbc71dd845216f225f53b62a10cb8a16c946836a3467f701d05b" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "hex", "k256", @@ -962,13 +973,13 @@ dependencies = [ [[package]] name = "enumn" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -1037,9 +1048,9 @@ dependencies = [ [[package]] name = "ethers-core" -version = "2.0.11" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f03e0bdc216eeb9e355b90cf610ef6c5bb8aca631f97b5ae9980ce34ea7878d" +checksum = "918b1a9ba585ea61022647def2f27c29ba19f6d2a4a4c8f68a9ae97fd5769737" dependencies = [ "arrayvec", "bytes", @@ -1070,7 +1081,7 @@ checksum = "25d6c0c9455d93d4990c06e049abf9b30daf148cf461ee939c11d88907c60816" dependencies = [ "async-trait", "auto_impl", - "base64 0.21.5", + "base64 0.21.7", "bytes", "const-hex", "enr", @@ -1172,9 +1183,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1187,9 +1198,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1197,15 +1208,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1214,32 +1225,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -1253,9 +1264,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1291,9 +1302,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "libc", @@ -1337,9 +1348,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.22" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", @@ -1397,9 +1408,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" [[package]] name = "hex" @@ -1514,9 +1525,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1643,9 +1654,9 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" dependencies = [ "wasm-bindgen", ] @@ -1656,7 +1667,7 @@ version = "8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "pem", "ring 0.16.20", "serde", @@ -1666,8 +1677,8 @@ dependencies = [ [[package]] name = "k256" -version = "0.13.1" -source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256/v0.13.1-risczero.1#5fea17d53fbaa0ff72dbe16da3ee2c2d02f2490c" +version = "0.13.3" +source = "git+https://github.com/risc0/RustCrypto-elliptic-curves?tag=k256/v0.13.3-risczero.0#d4f457a04410397cbb652a67c168b6cd6e9757c4" dependencies = [ "cfg-if", "ecdsa", @@ -1679,13 +1690,23 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" dependencies = [ "cpufeatures", ] +[[package]] +name = "keccak-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb8515fff80ed850aea4a1595f2e519c003e2a00a82fe168ebf5269196caf444" +dependencies = [ + "digest 0.10.7", + "sha3-asm", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -1703,9 +1724,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" [[package]] name = "libflate" @@ -1733,12 +1754,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" dependencies = [ "cfg-if", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -1749,9 +1770,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" @@ -1771,9 +1792,9 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" [[package]] name = "mime" @@ -1859,7 +1880,7 @@ checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -1917,30 +1938,30 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683751d591e6d81200c39fb0d1032608b77724f34114db54f571ff1317b337c0" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c11e44798ad209ccdd91fc192f0526a369a01234f7373e1b141c96d7cee4f0e" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] @@ -1996,7 +2017,7 @@ version = "3.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be30eaf4b0a9fba5336683b38de57bb86d179a35862ba6bfcf57625d006bde5b" dependencies = [ - "proc-macro-crate 2.0.1", + "proc-macro-crate 2.0.0", "proc-macro2", "quote", "syn 1.0.109", @@ -2054,9 +2075,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.5" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +checksum = "1f200d8d83c44a45b21764d1916299752ca035d15ecd46faca3e9a2a2bf6ad06" dependencies = [ "memchr", "thiserror", @@ -2075,22 +2096,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2129,12 +2150,12 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettyplease" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" +checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" dependencies = [ "proc-macro2", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2163,12 +2184,20 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" dependencies = [ - "toml_datetime", - "toml_edit 0.20.2", + "toml_edit 0.20.7", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.0", ] [[package]] @@ -2197,9 +2226,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -2212,7 +2241,7 @@ checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.1", + "bitflags 2.4.2", "lazy_static", "num-traits", "rand", @@ -2232,9 +2261,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2295,9 +2324,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", @@ -2307,9 +2336,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", @@ -2328,7 +2357,7 @@ version = "0.11.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "bytes", "encoding_rs", "futures-core", @@ -2365,8 +2394,7 @@ dependencies = [ [[package]] name = "revm" version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f4ca8ae0345104523b4af1a8a7ea97cfa1865cdb7a7c25d23c1a18d9b48598" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "auto_impl", "revm-interpreter", @@ -2378,8 +2406,7 @@ dependencies = [ [[package]] name = "revm-interpreter" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f959cafdf64a7f89b014fa73dc2325001cf654b3d9400260b212d19a2ebe3da0" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "revm-primitives", "serde", @@ -2388,12 +2415,11 @@ dependencies = [ [[package]] name = "revm-precompile" version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d360a88223d85709d2e95d4609eb1e19c649c47e28954bfabae5e92bb37e83e" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ + "aurora-engine-modexp", "c-kzg", "k256", - "num", "once_cell", "revm-primitives", "ripemd", @@ -2405,13 +2431,11 @@ dependencies = [ [[package]] name = "revm-primitives" version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51187b852d9e458816a2e19c81f1dd6c924077e1a8fccd16e4f044f865f299d7" +source = "git+https://github.com/bluealloy/revm.git?rev=6cd0bfc96da64513affe01c1964dd80beeb8c620#6cd0bfc96da64513affe01c1964dd80beeb8c620" dependencies = [ "alloy-primitives", - "alloy-rlp", "auto_impl", - "bitflags 2.4.1", + "bitflags 2.4.2", "bitvec", "c-kzg", "enumn", @@ -2470,9 +2494,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff7718c870b500fd884d983540b387ad811096c9ad9820399c1606cebb3e451b" +checksum = "36d1805bd1ad2b5b9c6e8513810768d9de976683938f90dda142c4721230c644" dependencies = [ "anyhow", "elf", @@ -2484,12 +2508,13 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc50c49da03cb01c5e6329b6c70410faeacb421b1a1824670c3cc804dcf5f63" +checksum = "17513c8e87155dbfe108cb6b4795ffd2daecfa391798f1d8573c4bdecb16c947" dependencies = [ "anyhow", "bytemuck", + "hex", "risc0-core", "risc0-zkp", "tracing", @@ -2497,9 +2522,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35a9ac0cef2cce7a541b8062a1824cb5044115461eccdb766bd32b7f1c61bab9" +checksum = "c1f8919f96f980c40105a4e1460795abb3c7e0f8caea4713a12da258d94ea12d" dependencies = [ "anyhow", "risc0-core", @@ -2510,9 +2535,9 @@ dependencies = [ [[package]] name = "risc0-core" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dbec429192da66bfab64a0d07ab001f3c91b5268f6296c2e9a0fe3fc791c114" +checksum = "6023c0820c52e2829ae7780ade0ba5816b6dd5dd172c6973bf76a0802dc8f3bc" dependencies = [ "bytemuck", "rand_core", @@ -2520,9 +2545,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac5cf694ff0a35f06f0583de7a7830712a746a4dd79f1a9299e5c4985e586cee" +checksum = "2dceae2b472760fbf9e2435ded5981a7ddcd36b6af3ec021b1670405b00b0c5b" dependencies = [ "anyhow", "blake2", @@ -2540,9 +2565,9 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a0eab6b58643205cda3a1052fe55d24563c6fd8c2492501311bc4d78c6b431" +checksum = "2b6138aa5ce729fe0bf7d86f9e64d12e78a01758a6d3bee197e5a66e1a6bbe9f" dependencies = [ "anyhow", "ark-bn254", @@ -2563,7 +2588,7 @@ dependencies = [ "risc0-zkp", "risc0-zkvm-platform", "rrs-lib", - "semver 1.0.20", + "semver 1.0.21", "serde", "sha2", "tracing", @@ -2571,9 +2596,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "0.20.0-rc.2" +version = "0.20.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f8873fc53469a3842eecef969a37316480a0edcfe85bce499b6342719366d8b" +checksum = "600ace62adbbb99d52642d539816569239b080dc496414f1cd04ed2faecc6203" dependencies = [ "bytemuck", "getrandom", @@ -2681,16 +2706,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.20", + "semver 1.0.21", ] [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.4.2", "errno", "libc", "linux-raw-sys", @@ -2715,7 +2740,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", ] [[package]] @@ -2808,18 +2833,18 @@ dependencies = [ [[package]] name = "secp256k1" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" +checksum = "3f622567e3b4b38154fb8190bcf6b160d7a4301d70595a49195b48c116007a27" dependencies = [ "secp256k1-sys", ] [[package]] name = "secp256k1-sys" -version = "0.8.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" +checksum = "e5d1746aae42c19d583c3c1a8c646bfad910498e2051c551a7f2e3c0c9fbb7eb" dependencies = [ "cc", ] @@ -2835,9 +2860,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "semver-parser" @@ -2862,29 +2887,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.111" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" dependencies = [ "indexmap 2.1.0", "itoa", @@ -2906,11 +2931,11 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23" +checksum = "f5c9fdb6b00a489875b22efd4b78fe2b363b72265cc5f6eb2e2b9ee270e6140c" dependencies = [ - "base64 0.21.5", + "base64 0.21.7", "chrono", "hex", "indexmap 1.9.3", @@ -2923,14 +2948,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.4.0" +version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788" +checksum = "dbff351eb4b33600a2e138dfa0b10b65a238ea8ff8fb2387c422c5022a3e8298" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -2964,11 +2989,21 @@ dependencies = [ "keccak", ] +[[package]] +name = "sha3-asm" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bac61da6b35ad76b195eb4771210f947734321a8d81d7738e1580d953bc7a15e" +dependencies = [ + "cc", + "cfg-if", +] + [[package]] name = "shlex" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" @@ -3012,18 +3047,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" - -[[package]] -name = "smol_str" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" -dependencies = [ - "serde", -] +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" [[package]] name = "socket2" @@ -3088,7 +3114,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3123,9 +3149,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.41" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -3134,14 +3160,14 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.4.2" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b837ef12ab88835251726eb12237655e61ec8dc8a280085d1961cdc3dfd047" +checksum = "63bef2e2c735acbc06874eca3a8506f02a3c4700e6e748afc92cc2e4220e8a03" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3173,15 +3199,15 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" dependencies = [ "cfg-if", "fastrand", "redox_syscall", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3194,22 +3220,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.51" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.51" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3301,7 +3327,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3345,9 +3371,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] name = "toml_edit" @@ -3362,9 +3388,20 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.20.2" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.1.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ "indexmap 2.1.0", "toml_datetime", @@ -3397,7 +3434,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3487,9 +3524,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -3579,9 +3616,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3589,24 +3626,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.39" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461" dependencies = [ "cfg-if", "js-sys", @@ -3616,9 +3653,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3626,28 +3663,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" [[package]] name = "web-sys" -version = "0.3.66" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" dependencies = [ "js-sys", "wasm-bindgen", @@ -3695,11 +3732,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.0", ] [[package]] @@ -3836,9 +3873,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.30" +version = "0.5.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b5c3db89721d50d0e2a673f5043fc4722f76dcc352d7b1ab8b8288bed4ed2c5" +checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16" dependencies = [ "memchr", ] @@ -3883,22 +3920,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.31" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] @@ -3918,7 +3955,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.48", ] [[package]] diff --git a/testing/ef-tests/testguest/Cargo.toml b/testing/ef-tests/testguest/Cargo.toml index 4576e4c2..e44e9236 100644 --- a/testing/ef-tests/testguest/Cargo.toml +++ b/testing/ef-tests/testguest/Cargo.toml @@ -6,11 +6,11 @@ edition = "2021" [workspace] [dependencies] -risc0-zkvm = { version = "0.20.0-rc.2", default-features = false, features = ['std'] } +risc0-zkvm = { version = "0.20.0-rc.3", default-features = false, features = ['std'] } zeth-lib = { path = "../../../lib", default-features = false } [patch.crates-io] # use optimized risc0 circuit crypto-bigint = { git = "https://github.com/risc0/RustCrypto-crypto-bigint", tag = "v0.5.2-risczero.0" } -k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.1-risczero.1" } +k256 = { git = "https://github.com/risc0/RustCrypto-elliptic-curves", tag = "k256/v0.13.3-risczero.0" } sha2 = { git = "https://github.com/risc0/RustCrypto-hashes", tag = "sha2-v0.10.6-risczero.0" } diff --git a/testing/ef-tests/testguest/src/main.rs b/testing/ef-tests/testguest/src/main.rs index 6abd32f6..58dfa8cc 100644 --- a/testing/ef-tests/testguest/src/main.rs +++ b/testing/ef-tests/testguest/src/main.rs @@ -28,10 +28,15 @@ pub fn main() { // Read the input previous block and transaction data let input = env::read(); // Build the resulting block - let (header, state) = EthereumStrategy::build_from(&chain_spec, input) + let mut output = EthereumStrategy::build_from(&chain_spec, input) .expect("Failed to build the resulting block"); - // Output the resulting block's hash to the journal - env::commit(&header.hash()); + // Abridge successful construction results + if let Some(trie_root) = output.compress_state() { + // Leak memory, save cycles + core::mem::forget(trie_root); + } + // Output the construction result + env::commit(&output); // Leak memory, save cycles - core::mem::forget((header, state)); + core::mem::forget(output); } diff --git a/testing/ef-tests/tests/evm.rs b/testing/ef-tests/tests/evm.rs index 4bd686bd..7f2b066d 100644 --- a/testing/ef-tests/tests/evm.rs +++ b/testing/ef-tests/tests/evm.rs @@ -17,7 +17,10 @@ use std::path::PathBuf; use rstest::rstest; -use zeth_lib::builder::{BlockBuilderStrategy, EthereumStrategy}; +use zeth_lib::{ + builder::{BlockBuilderStrategy, EthereumStrategy}, + output::BlockBuildOutput, +}; use zeth_primitives::{block::Header, trie::StateAccount}; use zeth_testeth::{ create_input, ethers, @@ -70,14 +73,23 @@ fn evm( post_state, ); - let (header, state) = EthereumStrategy::build_from(&chain_spec, input).unwrap(); + let output = EthereumStrategy::build_from(&chain_spec, input).unwrap(); + + let BlockBuildOutput::SUCCESS { + new_block_hash, + new_block_head, + new_block_state, + } = output + else { + panic!("Invalid block") + }; if let Some(post) = json.post { let (exp_state, _) = ethers::build_tries(&post); println!("diffing state trie:"); for diff in diff::slice( - &state.debug_rlp::(), + &new_block_state.debug_rlp::(), &exp_state.debug_rlp::(), ) { match diff { @@ -86,11 +98,11 @@ fn evm( diff::Result::Both(l, _) => println!(" {}", l), } } - assert_eq!(state.hash(), exp_state.hash()); + assert_eq!(new_block_state.hash(), exp_state.hash()); } // the headers should match - assert_eq!(header, expected_header); - assert_eq!(header.hash(), expected_header.hash()); + assert_eq!(new_block_head, expected_header); + assert_eq!(new_block_hash, expected_header.hash()); } } diff --git a/testing/ef-tests/tests/executor.rs b/testing/ef-tests/tests/executor.rs index 7321e30d..d3deb092 100644 --- a/testing/ef-tests/tests/executor.rs +++ b/testing/ef-tests/tests/executor.rs @@ -19,7 +19,8 @@ use std::path::PathBuf; use risc0_zkvm::{ExecutorEnv, ExecutorImpl, FileSegmentRef}; use rstest::rstest; use tempfile::tempdir; -use zeth_primitives::{block::Header, BlockHash}; +use zeth_lib::output::BlockBuildOutput; +use zeth_primitives::block::Header; use zeth_testeth::{ create_input, ethtests::{read_eth_test, EthTestCase}, @@ -89,8 +90,11 @@ fn executor( .unwrap(); println!("Generated {} segments", session.segments.len()); - let found_hash: BlockHash = session.journal.unwrap().decode().unwrap(); - println!("Block hash (from executor): {}", found_hash); - assert_eq!(found_hash, expected_header.hash()); + let build_output: BlockBuildOutput = session.journal.unwrap().decode().unwrap(); + let BlockBuildOutput::SUCCESS { new_block_hash, .. } = build_output else { + panic!("Block build failed!") + }; + println!("Block hash (from executor): {}", new_block_hash); + assert_eq!(new_block_hash, expected_header.hash()); } }