diff --git a/Cargo.lock b/Cargo.lock index 2e49fd90..e86146da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -55,9 +55,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "0.12.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a84efb7b8ddb9223346bfad9d8094e1a100c254037a3b5913243bfa8e04be266" +checksum = "27d301f5bcfd37e3aac727c360d8b50c33ddff9169ce0370198dedda36a9927d" dependencies = [ "alloy-eips", "alloy-primitives", @@ -70,7 +70,7 @@ dependencies = [ "either", "k256", "once_cell", - "rand", + "rand 0.8.5", "serde", "serde_with", "thiserror 2.0.12", @@ -78,9 +78,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "0.12.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fafded0c1ff8f0275c4a484239058e1c01c0c2589f8a16e03669ef7094a06f9b" +checksum = "9f4f97a85a45965e0e4f9f5b94bbafaa3e4ee6868bdbcf2e4a9acb4b358038fe" dependencies = [ "alloy-consensus", "alloy-eips", @@ -128,9 +128,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "0.12.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4bffedaddc627520eabdcbfe27a2d2c2f716e15295e2ed1010df3feae67040" +checksum = "10b11c382ca8075128d1ae6822b60921cf484c911d9a5831797a01218f98125f" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -144,16 +144,15 @@ dependencies = [ "either", "ethereum_ssz", "ethereum_ssz_derive", - "once_cell", "serde", "sha2", ] [[package]] name = "alloy-json-abi" -version = "0.8.23" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec80745c33797e8baf547a8cfeb850e60d837fe9b9e67b3f579c1fcd26f527e9" +checksum = "fe6beff64ad0aa6ad1019a3db26fef565aefeb011736150ab73ed3366c3cfd1b" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -163,9 +162,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "0.12.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c06932646544ea341f0fda48d2c0fe4fda75bc132379cb84019cdfb6ddcb0fb" +checksum = "86f736e1d1eb1b770dbd32919bdf46d4dcd4617f2eed07947dfb32649962baba" dependencies = [ "alloy-consensus", "alloy-eips", @@ -176,9 +175,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.23" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eacedba97e65cdc7ab592f2b22ef5d3ab8d60b2056bc3a6e6363577e8270ec6f" +checksum = "8c77490fe91a0ce933a1f219029521f20fc28c2c0ca95d53fa4da9c00b8d9d4e" dependencies = [ "alloy-rlp", "bytes", @@ -194,7 +193,7 @@ dependencies = [ "keccak-asm", "paste", "proptest", - "rand", + "rand 0.8.5", "ruint", "rustc-hash 2.1.1", "serde", @@ -226,9 +225,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "0.12.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a1a0710dbfbab2b33200ef45c650963d63edf6a81b2c7399ede762b3586dfd" +checksum = "689521777149dabe210ef122605fb00050e038f2e85b8c9897534739f1a904f8" dependencies = [ "alloy-consensus", "alloy-eips", @@ -239,16 +238,16 @@ dependencies = [ "ethereum_ssz", "ethereum_ssz_derive", "jsonwebtoken", - "rand", + "rand 0.8.5", "serde", "strum", ] [[package]] name = "alloy-rpc-types-eth" -version = "0.12.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e18d94b1036302720b987564560e4a5b85035a17553c53a50afa2bd8762b487" +checksum = "9a8b6d55bdaa0c4a08650d4b32f174494cbade56adf6f2fcfa2a4f3490cb5511" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -266,9 +265,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "0.12.5" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9824e1bf92cd7848ca6fabb01c9aca15c9c5fb0ab96da5514ef0543f021c69f6" +checksum = "1824791912f468a481dedc1db50feef3e85a078f6d743a62db2ee9c2ca674882" dependencies = [ "alloy-primitives", "serde", @@ -277,9 +276,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.8.23" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3637022e781bc73a9e300689cd91105a0e6be00391dd4e2110a71cc7e9f20a94" +checksum = "e10ae8e9a91d328ae954c22542415303919aabe976fe7a92eb06db1b68fd59f2" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -291,9 +290,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.8.23" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9bd22d0bba90e40f40c625c33d39afb7d62b22192476a2ce1dcf8409dce880" +checksum = "83ad5da86c127751bc607c174d6c9fe9b85ef0889a9ca0c641735d77d4f98f26" dependencies = [ "alloy-sol-macro-input", "const-hex", @@ -309,9 +308,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "0.8.23" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae4646e8123ec2fd10f9c22e361ffe4365c42811431829c2eabae528546bcc" +checksum = "ba3d30f0d3f9ba3b7686f3ff1de9ee312647aac705604417a2f40c604f409a9e" dependencies = [ "const-hex", "dunce", @@ -325,9 +324,9 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "0.8.23" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488a747fdcefeec5c1ed5aa9e08becd775106777fdeae2a35730729fc8a95910" +checksum = "6d162f8524adfdfb0e4bd0505c734c985f3e2474eb022af32eef0d52a4f3935c" dependencies = [ "serde", "winnow", @@ -335,9 +334,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.23" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "767957235807b021126dca1598ac3ef477007eace07961607dc5f490550909c7" +checksum = "d43d5e60466a440230c07761aa67671d4719d46f43be8ea6e7ed334d8db4a9ab" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -433,6 +432,15 @@ version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" +[[package]] +name = "arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "ark-ff" version = "0.3.0" @@ -544,7 +552,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -554,7 +562,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -584,9 +592,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310c9bcae737a48ef5cdee3174184e6d548b292739ede61a1f955ef76a738861" +checksum = "59a194f9d963d8099596278594b3107448656ba73831c9d8c783e613ce86da64" dependencies = [ "brotli", "flate2", @@ -622,9 +630,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.87" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d556ec1359574147ec0c4fc5eb525f3f23263a592b1a9c07e0a75b427de55c97" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", @@ -656,9 +664,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-lc-rs" -version = "1.12.6" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dabb68eb3a7aa08b46fddfd59a3d55c978243557a90ab804769f7e20e67d2b01" +checksum = "19b756939cb2f8dc900aa6dcd505e6e2428e9cae7ff7b028c49e3946efa70878" dependencies = [ "aws-lc-sys", "zeroize", @@ -666,9 +674,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bbe221bbf523b625a4dd8585c7f38166e31167ec2ca98051dbcb4c3b6e825d2" +checksum = "b9f7720b74ed28ca77f90769a71fd8c637a0137f6fae4ae947e1050229cff57f" dependencies = [ "bindgen", "cc", @@ -901,10 +909,11 @@ dependencies = [ [[package]] name = "c-kzg" -version = "1.0.3" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" +checksum = "4e7e3c397401eb76228c89561cf22f85f41c95aa799ee9d860de3ea1cbc728fc" dependencies = [ + "arbitrary", "blst", "cc", "glob", @@ -916,9 +925,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.16" +version = "1.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" +checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" dependencies = [ "jobserver", "libc", @@ -978,9 +987,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.32" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6088f3ae8c3608d19260cd7445411865a485688711b78b5be70d78cd96136f83" +checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944" dependencies = [ "clap_builder", "clap_derive", @@ -988,9 +997,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.32" +version = "4.5.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a7ef7f676155edfb82daa97f99441f3ebf4a58d5e32f295a56259f1b6facc8" +checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9" dependencies = [ "anstream", "anstyle", @@ -1080,16 +1089,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation" version = "0.10.0" @@ -1176,7 +1175,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -1209,9 +1208,9 @@ checksum = "4f211af61d8efdd104f96e57adf5e426ba1bc3ed7a4ead616e15e5881fd79c4d" [[package]] name = "darling" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ "darling_core", "darling_macro", @@ -1219,9 +1218,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", @@ -1233,9 +1232,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", @@ -1254,9 +1253,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "28cfac68e08048ae1883171632c2aef3ebc555621ae56fbccce1cbf22dd7f058" dependencies = [ "powerfmt", "serde", @@ -1273,6 +1272,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_arbitrary" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "derive_more" version = "1.0.0" @@ -1300,7 +1310,6 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.100", - "unicode-xid", ] [[package]] @@ -1423,7 +1432,7 @@ dependencies = [ "generic-array", "group", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", "serdect", "subtle", @@ -1536,7 +1545,7 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1547,16 +1556,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] [[package]] name = "flate2" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11faaf5a5236997af9848be0bef4db95824b1d534ebc64d0f0c6cf3e67bd38dc" +checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" dependencies = [ "crc32fast", "miniz_oxide", @@ -1579,9 +1588,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "form_urlencoded" @@ -1732,14 +1741,14 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" dependencies = [ "cfg-if 1.0.0", "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets 0.52.6", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -1761,7 +1770,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -1924,7 +1933,7 @@ dependencies = [ "hyper-util", "log", "rustls", - "rustls-native-certs 0.8.1", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", @@ -1946,9 +1955,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" +checksum = "497bbc33a26fdd4af9ed9c70d63f61cf56a938375fbb32df34db9b1cd6d643f2" dependencies = [ "bytes", "futures-channel", @@ -1956,6 +1965,7 @@ dependencies = [ "http", "http-body", "hyper", + "libc", "pin-project-lite", "socket2", "tokio", @@ -1965,16 +1975,17 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", - "windows-core 0.52.0", + "windows-core 0.61.0", ] [[package]] @@ -2027,9 +2038,9 @@ dependencies = [ [[package]] name = "icu_locid_transform_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" [[package]] name = "icu_normalizer" @@ -2051,9 +2062,9 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" [[package]] name = "icu_properties" @@ -2072,9 +2083,9 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" [[package]] name = "icu_provider" @@ -2187,9 +2198,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0f0a572e8ffe56e2ff4f769f32ffe919282c3916799f8b68688b6030063bea" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" dependencies = [ "memchr", "serde", @@ -2245,16 +2256,18 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jni" -version = "0.19.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if 1.0.0", "combine", "jni-sys", "log", "thiserror 1.0.69", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -2265,10 +2278,11 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ + "getrandom 0.3.2", "libc", ] @@ -2284,9 +2298,9 @@ dependencies = [ [[package]] name = "jsonrpsee" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "834af00800e962dee8f7bfc0f60601de215e73e78e5497d733a2919da837d3c8" +checksum = "37b26c20e2178756451cfeb0661fb74c47dd5988cb7e3939de7e9241fd604d42" dependencies = [ "jsonrpsee-core", "jsonrpsee-http-client", @@ -2299,9 +2313,9 @@ dependencies = [ [[package]] name = "jsonrpsee-core" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76637f6294b04e747d68e69336ef839a3493ca62b35bf488ead525f7da75c5bb" +checksum = "456196007ca3a14db478346f58c7238028d55ee15c1df15115596e411ff27925" dependencies = [ "async-trait", "bytes", @@ -2311,7 +2325,7 @@ dependencies = [ "http-body-util", "jsonrpsee-types", "parking_lot", - "rand", + "rand 0.8.5", "rustc-hash 2.1.1", "serde", "serde_json", @@ -2322,9 +2336,9 @@ dependencies = [ [[package]] name = "jsonrpsee-http-client" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87c24e981ad17798bbca852b0738bfb7b94816ed687bd0d5da60bfa35fa0fdc3" +checksum = "c872b6c9961a4ccc543e321bb5b89f6b2d2c7fe8b61906918273a3333c95400c" dependencies = [ "async-trait", "base64", @@ -2347,9 +2361,9 @@ dependencies = [ [[package]] name = "jsonrpsee-proc-macros" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fcae0c6c159e11541080f1f829873d8f374f81eda0abc67695a13fc8dc1a580" +checksum = "5e65763c942dfc9358146571911b0cd1c361c2d63e2d2305622d40d36376ca80" dependencies = [ "heck", "proc-macro-crate", @@ -2360,9 +2374,9 @@ dependencies = [ [[package]] name = "jsonrpsee-server" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b7a3df90a1a60c3ed68e7ca63916b53e9afa928e33531e87f61a9c8e9ae87b" +checksum = "55e363146da18e50ad2b51a0a7925fc423137a0b1371af8235b1c231a0647328" dependencies = [ "futures-util", "http", @@ -2387,9 +2401,9 @@ dependencies = [ [[package]] name = "jsonrpsee-types" -version = "0.24.8" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb81adb1a5ae9182df379e374a79e24e992334e7346af4d065ae5b2acb8d4c6" +checksum = "08a8e70baf945b6b5752fc8eb38c918a48f1234daf11355e07106d963f860089" dependencies = [ "http", "serde", @@ -2487,9 +2501,9 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9c683daf087dc577b7506e9695b3d556a9f3849903fa28186283afd6809e9" +checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" [[package]] name = "litemap" @@ -2509,9 +2523,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.26" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "loom" @@ -2604,7 +2618,7 @@ dependencies = [ "ordered-float", "quanta", "radix_trie", - "rand", + "rand 0.8.5", "rand_xoshiro", "sketches-ddsketch", ] @@ -2787,38 +2801,38 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.1" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "op-alloy-consensus" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5099f9c3a41a313dd5f7fe7657545d972781e53d70c62976858aba8dac9eef" +checksum = "91764ebe0eddf6e3cfff41650332ff4e01defe372386027703f2e7e334734a05" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-rlp", "alloy-serde", - "derive_more 1.0.0", + "derive_more 2.0.1", "serde", "thiserror 2.0.12", ] [[package]] name = "op-alloy-rpc-types-engine" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e829ee4a0f373132258ccdce71ed1984cdbf7df83ab928522997ee79943879c2" +checksum = "fc26f8288839926d0137d39d70628bb5ac00fca449bab24c54cebd66c71b9cf4" dependencies = [ "alloy-consensus", "alloy-eips", "alloy-primitives", "alloy-rpc-types-engine", "alloy-serde", - "derive_more 1.0.0", + "derive_more 2.0.1", "ethereum_ssz", "op-alloy-consensus", "serde", @@ -2910,7 +2924,7 @@ dependencies = [ "glob", "opentelemetry", "percent-encoding", - "rand", + "rand 0.8.5", "serde_json", "thiserror 2.0.12", "tokio", @@ -3008,9 +3022,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.15" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +checksum = "198db74531d58c70a361c42201efde7e2591e976d518caf7662a47dc5720e7b6" dependencies = [ "memchr", "thiserror 2.0.12", @@ -3083,7 +3097,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.23", + "zerocopy 0.8.24", ] [[package]] @@ -3188,8 +3202,8 @@ dependencies = [ "bitflags 2.9.0", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.8.5", + "rand_chacha 0.3.1", "rand_xorshift", "regex-syntax 0.8.5", "rusty-fork", @@ -3250,6 +3264,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -3273,11 +3293,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", "serde", ] +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy 0.8.24", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -3285,7 +3316,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -3297,13 +3338,22 @@ dependencies = [ "getrandom 0.2.15", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.2", +] + [[package]] name = "rand_xorshift" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -3312,7 +3362,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" dependencies = [ - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -3379,9 +3429,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.14" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e327e510263980e231de548a33e63d34962d29ae61b467389a1a09627a254" +checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" dependencies = [ "base64", "bytes", @@ -3416,8 +3466,8 @@ dependencies = [ [[package]] name = "reth-rpc-layer" -version = "1.3.0" -source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.3.0#a38c991c363d241894867a89324b8670be2f6a44" +version = "1.3.7" +source = "git+https://github.com/paradigmxyz/reth.git?rev=v1.3.7#ed7da87da4de340a437bf46f39a7e1397ac82065" dependencies = [ "alloy-rpc-types-engine", "http", @@ -3490,6 +3540,7 @@ dependencies = [ "metrics-util", "moka", "nix", + "op-alloy-consensus", "op-alloy-rpc-types-engine", "opentelemetry", "opentelemetry-otlp", @@ -3520,9 +3571,9 @@ checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" [[package]] name = "ruint" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "825df406ec217a8116bd7b06897c6cc8f65ffefc15d030ae2c9540acc9ed50b6" +checksum = "78a46eb779843b2c4f21fac5773e25d6d5b7c8f0922876c91541790d2ca27eef" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", @@ -3536,7 +3587,8 @@ dependencies = [ "parity-scale-codec", "primitive-types", "proptest", - "rand", + "rand 0.8.5", + "rand 0.9.0", "rlp", "ruint-macro", "serde", @@ -3568,7 +3620,7 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" dependencies = [ - "rand", + "rand 0.8.5", ] [[package]] @@ -3610,22 +3662,22 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.2" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7178faa4b75a30e269c71e61c353ce2748cf3d76f0c44c393f4e60abf49b825" +checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf" dependencies = [ "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys 0.9.2", + "linux-raw-sys 0.9.3", "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.23" +version = "0.23.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" +checksum = "822ee9188ac4ec04a2f0531e55d035fb2de73f18b41a63c70c2712503b6fb13c" dependencies = [ "aws-lc-rs", "log", @@ -3637,19 +3689,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rustls-native-certs" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" -dependencies = [ - "openssl-probe", - "rustls-pemfile", - "rustls-pki-types", - "schannel", - "security-framework 2.11.1", -] - [[package]] name = "rustls-native-certs" version = "0.8.1" @@ -3659,16 +3698,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.2.0", -] - -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", + "security-framework", ] [[package]] @@ -3679,23 +3709,23 @@ checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustls-platform-verifier" -version = "0.3.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" +checksum = "4a5467026f437b4cb2a533865eaa73eb840019a0916f4b9ec563c6e617e086c9" dependencies = [ - "core-foundation 0.9.4", + "core-foundation", "core-foundation-sys", "jni", "log", "once_cell", "rustls", - "rustls-native-certs 0.7.3", + "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 2.11.1", + "security-framework", "security-framework-sys", - "webpki-roots", - "winapi", + "webpki-root-certs", + "windows-sys 0.59.0", ] [[package]] @@ -3706,9 +3736,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" dependencies = [ "aws-lc-rs", "ring", @@ -3785,20 +3815,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.9.0", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "num-bigint", - "security-framework-sys", -] - [[package]] name = "security-framework" version = "3.2.0" @@ -3806,7 +3822,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ "bitflags 2.9.0", - "core-foundation 0.10.0", + "core-foundation", "core-foundation-sys", "libc", "security-framework-sys", @@ -4003,7 +4019,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -4050,9 +4066,9 @@ checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" [[package]] name = "socket2" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", "windows-sys 0.52.0", @@ -4070,7 +4086,7 @@ dependencies = [ "http", "httparse", "log", - "rand", + "rand 0.8.5", "sha1", ] @@ -4154,9 +4170,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.23" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d975606bae72d8aad5b07d9342465e123a2cccf53a5a735aedf81ca92a709ecb" +checksum = "4560533fbd6914b94a8fb5cc803ed6801c3455668db3b810702c57612bac9412" dependencies = [ "paste", "proc-macro2", @@ -4198,14 +4214,14 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.19.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488960f40a3fd53d72c2a29a58722561dee8afdd175bd88e3db4677d7b2ba600" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ "fastrand", - "getrandom 0.3.1", + "getrandom 0.3.2", "once_cell", - "rustix 1.0.2", + "rustix 1.0.5", "windows-sys 0.59.0", ] @@ -4276,9 +4292,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.39" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad298b01a40a23aac4580b67e3dbedb7cc8402f3592d7f49469de2ea4aecdd8" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -4291,15 +4307,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "765c97a5b985b7c11d7bc27fa927dc4fe6af3a6dfb021d28deb60d3bf51e76ef" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.20" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8093bc3e81c3bc5f7879de09619d06c9a5a5e45ca44dfeeb7225bae38005c5c" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -4447,7 +4463,7 @@ dependencies = [ "indexmap 1.9.3", "pin-project", "pin-project-lite", - "rand", + "rand 0.8.5", "slab", "tokio", "tokio-util", @@ -4718,11 +4734,11 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.15.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f540e3240398cce6128b64ba83fdbdd86129c16a3aa1a3a252efd66eb3d587" +checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" dependencies = [ - "getrandom 0.3.1", + "getrandom 0.3.2", ] [[package]] @@ -4779,9 +4795,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasi" -version = "0.13.3+wasi-0.2.2" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" dependencies = [ "wit-bindgen-rt", ] @@ -4878,10 +4894,10 @@ dependencies = [ ] [[package]] -name = "webpki-roots" +name = "webpki-root-certs" version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" +checksum = "09aed61f5e8d2c18344b3faa33a4c837855fe56642757754775548fee21386c4" dependencies = [ "rustls-pki-types", ] @@ -4941,24 +4957,28 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.52.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings 0.1.0", "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.58.0" +version = "0.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" dependencies = [ - "windows-implement", - "windows-interface", - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", + "windows-implement 0.60.0", + "windows-interface 0.59.1", + "windows-link", + "windows-result 0.3.2", + "windows-strings 0.4.0", ] [[package]] @@ -4972,6 +4992,17 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "windows-interface" version = "0.58.0" @@ -4983,11 +5014,22 @@ dependencies = [ "syn 2.0.100", ] +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "windows-link" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dccfd733ce2b1753b03b6d3c65edf020262ea35e20ccdf3e288043e6dd620e3" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" [[package]] name = "windows-registry" @@ -4995,7 +5037,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ - "windows-result 0.3.1", + "windows-result 0.3.2", "windows-strings 0.3.1", "windows-targets 0.53.0", ] @@ -5011,9 +5053,9 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06374efe858fab7e4f881500e6e86ec8bc28f9462c47e5a9941a0142ad86b189" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" dependencies = [ "windows-link", ] @@ -5037,6 +5079,24 @@ dependencies = [ "windows-link", ] +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -5055,6 +5115,21 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-targets" version = "0.52.6" @@ -5087,6 +5162,12 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -5099,6 +5180,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -5111,6 +5198,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -5135,6 +5228,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -5147,6 +5246,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -5159,6 +5264,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -5171,6 +5282,12 @@ version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -5194,9 +5311,9 @@ dependencies = [ [[package]] name = "wit-bindgen-rt" -version = "0.33.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ "bitflags 2.9.0", ] @@ -5257,11 +5374,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" dependencies = [ - "zerocopy-derive 0.8.23", + "zerocopy-derive 0.8.24", ] [[package]] @@ -5277,9 +5394,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" dependencies = [ "proc-macro2", "quote", @@ -5360,18 +5477,18 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "7.2.3" +version = "7.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3051792fbdc2e1e143244dc28c60f73d8470e93f3f9cbd0ead44da5ed802722" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.14+zstd.1.5.7" +version = "2.0.15+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb060d4926e4ac3a3ad15d864e99ceb5f343c6b34f5bd6d81ae6ed417311be5" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index efbae2b0..e1aabb10 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,9 +4,9 @@ version = "0.1.0" edition = "2024" [dependencies] -op-alloy-rpc-types-engine = "0.11.1" -alloy-rpc-types-engine = "0.12.5" -alloy-eips = { version = "0.12.5", features = ["serde"], optional = true } +op-alloy-rpc-types-engine = "0.12.0" +alloy-rpc-types-engine = "0.13.0" +alloy-eips = { version = "0.13.0", features = ["serde"], optional = true } alloy-primitives = { version = "0.8.10", features = ["rand"] } tokio = { version = "1", features = ["full"] } tracing = "0.1.4" @@ -49,14 +49,15 @@ time = { version = "0.3.36", features = ["macros", "formatting", "parsing"], opt lazy_static = {version = "1.5.0", optional = true } [dev-dependencies] -alloy-rpc-types-eth = "0.12.5" +op-alloy-consensus = "0.12.0" +alloy-rpc-types-eth = "0.13.0" anyhow = "1.0" assert_cmd = "2.0.10" predicates = "3.1.2" tokio-util = { version = "0.7.13" } nix = "0.15.0" bytes = "1.2" -reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.3.0" } +reth-rpc-layer = { git = "https://github.com/paradigmxyz/reth.git", rev = "v1.3.7" } ctor = "0.4.1" [features] diff --git a/scripts/ci/kurtosis-params.yaml b/scripts/ci/kurtosis-params.yaml index 47416da1..6a0678b3 100644 --- a/scripts/ci/kurtosis-params.yaml +++ b/scripts/ci/kurtosis-params.yaml @@ -5,6 +5,7 @@ optimism_package: - participants: - el_type: op-geth el_builder_type: op-reth + el_builder_image: "ghcr.io/paradigmxyz/op-reth:nightly" cl_builder_type: op-node network_params: network: "kurtosis" @@ -12,7 +13,7 @@ optimism_package: seconds_per_slot: 2 fjord_time_offset: 0 granite_time_offset: 0 - # isthmus_time_offset: 0 + isthmus_time_offset: 5 fund_dev_accounts: true mev_params: rollup_boost_image: "flashbots/rollup-boost:develop" diff --git a/src/client/rpc.rs b/src/client/rpc.rs index 5e315abd..bdf863e7 100644 --- a/src/client/rpc.rs +++ b/src/client/rpc.rs @@ -1,6 +1,8 @@ use crate::client::auth::{AuthClientLayer, AuthClientService}; -use crate::server::{EngineApiClient, PayloadSource}; -use alloy_primitives::B256; +use crate::server::{ + EngineApiClient, NewPayload, OpExecutionPayloadEnvelope, PayloadSource, Version, +}; +use alloy_primitives::{B256, Bytes}; use alloy_rpc_types_engine::{ ExecutionPayload, ExecutionPayloadV3, ForkchoiceState, ForkchoiceUpdated, JwtError, JwtSecret, PayloadId, PayloadStatus, @@ -10,7 +12,10 @@ use http::Uri; use jsonrpsee::http_client::transport::HttpBackend; use jsonrpsee::http_client::{HttpClient, HttpClientBuilder}; use jsonrpsee::types::ErrorObjectOwned; -use op_alloy_rpc_types_engine::{OpExecutionPayloadEnvelopeV3, OpPayloadAttributes}; +use op_alloy_rpc_types_engine::{ + OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, OpExecutionPayloadV4, + OpPayloadAttributes, +}; use opentelemetry::trace::SpanKind; use paste::paste; use std::path::PathBuf; @@ -213,6 +218,106 @@ impl RpcClient { Ok(res) } + + #[instrument( + skip(self), + err, + fields( + otel.kind = ?SpanKind::Client, + target = self.payload_source.to_string(), + url = %self.auth_rpc, + %payload_id, + ) + )] + pub async fn get_payload_v4( + &self, + payload_id: PayloadId, + ) -> ClientResult { + info!("Sending get_payload_v4 to {}", self.payload_source); + Ok(self + .auth_client + .get_payload_v4(payload_id) + .await + .set_code()?) + } + + pub async fn get_payload( + &self, + payload_id: PayloadId, + version: Version, + ) -> ClientResult { + match version { + Version::V3 => Ok(OpExecutionPayloadEnvelope::V3( + self.get_payload_v3(payload_id).await.set_code()?, + )), + Version::V4 => Ok(OpExecutionPayloadEnvelope::V4( + self.get_payload_v4(payload_id).await.set_code()?, + )), + } + } + + #[instrument( + skip_all, + err, + fields( + otel.kind = ?SpanKind::Client, + target = self.payload_source.to_string(), + url = %self.auth_rpc, + block_hash, + code, + ) + )] + async fn new_payload_v4( + &self, + payload: OpExecutionPayloadV4, + versioned_hashes: Vec, + parent_beacon_block_root: B256, + execution_requests: Vec, + ) -> ClientResult { + info!("Sending new_payload_v4 to {}", self.payload_source); + let execution_payload = ExecutionPayload::from(payload.payload_inner.clone()); + let block_hash = execution_payload.block_hash(); + tracing::Span::current().record("block_hash", block_hash.to_string()); + + let res = self + .auth_client + .new_payload_v4( + payload, + versioned_hashes, + parent_beacon_block_root, + execution_requests, + ) + .await + .set_code()?; + + if res.is_invalid() { + return Err(RpcClientError::InvalidPayload(res.status.to_string()).set_code()); + } + + Ok(res) + } + + pub async fn new_payload(&self, new_payload: NewPayload) -> ClientResult { + match new_payload { + NewPayload::V3(new_payload) => { + self.new_payload_v3( + new_payload.payload, + new_payload.versioned_hashes, + new_payload.parent_beacon_block_root, + ) + .await + } + NewPayload::V4(new_payload) => { + self.new_payload_v4( + new_payload.payload, + new_payload.versioned_hashes, + new_payload.parent_beacon_block_root, + new_payload.execution_requests, + ) + .await + } + } + } } /// Generates Clap argument structs with a prefix to create a unique namespace when specifying RPC client config via the CLI. diff --git a/src/integration/mod.rs b/src/integration/mod.rs index c326c9c2..3f90c7b2 100644 --- a/src/integration/mod.rs +++ b/src/integration/mod.rs @@ -1,18 +1,21 @@ use crate::client::auth::{AuthClientLayer, AuthClientService}; use crate::debug_api::DebugClient; -use crate::server::EngineApiClient; -use crate::server::PayloadSource; +use crate::server::{EngineApiClient, OpExecutionPayloadEnvelope, Version}; +use crate::server::{NewPayload, PayloadSource}; use alloy_eips::BlockNumberOrTag; -use alloy_primitives::B256; -use alloy_rpc_types_engine::JwtSecret; +use alloy_eips::eip2718::Encodable2718; +use alloy_primitives::{B256, Bytes, TxKind, U256, address, hex}; +use alloy_rpc_types_engine::{ExecutionPayload, JwtSecret}; use alloy_rpc_types_engine::{ - ExecutionPayloadV3, ForkchoiceState, ForkchoiceUpdated, PayloadAttributes, PayloadId, - PayloadStatus, PayloadStatusEnum, + ForkchoiceState, ForkchoiceUpdated, PayloadAttributes, PayloadId, PayloadStatus, + PayloadStatusEnum, }; +use bytes::BytesMut; use jsonrpsee::http_client::{HttpClient, transport::HttpBackend}; use jsonrpsee::proc_macros::rpc; use lazy_static::lazy_static; -use op_alloy_rpc_types_engine::{OpExecutionPayloadEnvelopeV3, OpPayloadAttributes}; +use op_alloy_consensus::TxDeposit; +use op_alloy_rpc_types_engine::OpPayloadAttributes; use proxy::{DynHandlerFn, start_proxy_server}; use serde_json::Value; use std::collections::{HashMap, HashSet}; @@ -469,6 +472,7 @@ pub struct EngineApi { pub engine_api_client: HttpClient>, } +// TODO: Use client/rpc.rs instead impl EngineApi { pub fn new(url: &str, secret: &str) -> Result> { let secret_layer = AuthClientLayer::new(JwtSecret::from_str(secret)?); @@ -483,26 +487,39 @@ impl EngineApi { }) } - pub async fn get_payload_v3( + pub async fn get_payload( &self, + version: Version, payload_id: PayloadId, - ) -> eyre::Result { - Ok(EngineApiClient::get_payload_v3(&self.engine_api_client, payload_id).await?) + ) -> eyre::Result { + match version { + Version::V3 => Ok(OpExecutionPayloadEnvelope::V3( + EngineApiClient::get_payload_v3(&self.engine_api_client, payload_id).await?, + )), + Version::V4 => Ok(OpExecutionPayloadEnvelope::V4( + EngineApiClient::get_payload_v4(&self.engine_api_client, payload_id).await?, + )), + } } - pub async fn new_payload( - &self, - payload: ExecutionPayloadV3, - versioned_hashes: Vec, - parent_beacon_block_root: B256, - ) -> eyre::Result { - Ok(EngineApiClient::new_payload_v3( - &self.engine_api_client, - payload, - versioned_hashes, - parent_beacon_block_root, - ) - .await?) + pub async fn new_payload(&self, payload: NewPayload) -> eyre::Result { + match payload { + NewPayload::V3(new_payload) => Ok(EngineApiClient::new_payload_v3( + &self.engine_api_client, + new_payload.payload, + new_payload.versioned_hashes, + new_payload.parent_beacon_block_root, + ) + .await?), + NewPayload::V4(new_payload) => Ok(EngineApiClient::new_payload_v4( + &self.engine_api_client, + new_payload.payload, + new_payload.versioned_hashes, + new_payload.parent_beacon_block_root, + new_payload.execution_requests, + ) + .await?), + } } pub async fn update_forkchoice( @@ -686,6 +703,7 @@ pub struct SimpleBlockGenerator { engine_api: EngineApi, latest_hash: B256, timestamp: u64, + version: Version, } impl SimpleBlockGenerator { @@ -695,6 +713,7 @@ impl SimpleBlockGenerator { engine_api, latest_hash: B256::ZERO, // temporary value timestamp: 0, // temporary value + version: Version::V3, } } @@ -711,6 +730,14 @@ impl SimpleBlockGenerator { &mut self, empty_blocks: bool, ) -> eyre::Result<(B256, PayloadSource)> { + let txns = match self.version { + Version::V4 => { + let tx = create_deposit_tx(); + Some(vec![tx]) + } + _ => None, + }; + // Submit forkchoice update with payload attributes for the next block let result = self .engine_api @@ -725,7 +752,7 @@ impl SimpleBlockGenerator { prev_randao: B256::ZERO, suggested_fee_recipient: Default::default(), }, - transactions: None, + transactions: txns, no_tx_pool: Some(empty_blocks), gas_limit: Some(10000000000), eip_1559_params: None, @@ -739,23 +766,23 @@ impl SimpleBlockGenerator { tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; } - let payload = self.engine_api.get_payload_v3(payload_id).await?; + let payload = self + .engine_api + .get_payload(self.version, payload_id) + .await?; // Submit the new payload to the node let validation_status = self .engine_api - .new_payload(payload.execution_payload.clone(), vec![], B256::ZERO) + .new_payload(NewPayload::from(payload.clone())) .await?; if validation_status.status != PayloadStatusEnum::Valid { return Err(eyre::eyre!("Invalid payload status")); } - let new_block_hash = payload - .execution_payload - .payload_inner - .payload_inner - .block_hash; + let execution_payload = ExecutionPayload::from(payload); + let new_block_hash = execution_payload.block_hash(); // Update the chain's head self.engine_api @@ -764,11 +791,7 @@ impl SimpleBlockGenerator { // Update internal state self.latest_hash = new_block_hash; - self.timestamp = payload - .execution_payload - .payload_inner - .payload_inner - .timestamp; + self.timestamp = execution_payload.timestamp(); // Check who built the block in the rollup-boost logs let block_creator = self @@ -826,3 +849,25 @@ impl BlockBuilderCreatorValidator { Ok(None) } } + +fn create_deposit_tx() -> Bytes { + const ISTHMUS_DATA: &[u8] = &hex!( + "098999be00000558000c5fc500000000000000030000000067a9f765000000000000002900000000000000000000000000000000000000000000000000000000006a6d09000000000000000000000000000000000000000000000000000000000000000172fcc8e8886636bdbe96ba0e4baab67ea7e7811633f52b52e8cf7a5123213b6f000000000000000000000000d3f2c5afb2d76f5579f326b0cd7da5f5a4126c3500004e2000000000000001f4" + ); + + let deposit_tx = TxDeposit { + source_hash: B256::default(), + from: address!("DeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001"), + to: TxKind::Call(address!("4200000000000000000000000000000000000015")), + mint: None, + value: U256::default(), + gas_limit: 210000, + is_system_transaction: true, + input: ISTHMUS_DATA.into(), + }; + + let mut buffer_without_header = BytesMut::new(); + deposit_tx.encode_2718(&mut buffer_without_header); + + buffer_without_header.to_vec().into() +} diff --git a/src/integration/testdata/genesis.json b/src/integration/testdata/genesis.json index 3b8b1ac1..8ee3a460 100644 --- a/src/integration/testdata/genesis.json +++ b/src/integration/testdata/genesis.json @@ -842,7 +842,7 @@ "canyonTime": 0, "chainId": 901, "constantinopleBlock": 0, - "depositContractAddress": "0x0000000000000000000000000000000000000000", + "depositContractAddress": "0x4242424242424242424242424242424242424242", "ecotoneTime": 0, "eip150Block": 0, "eip155Block": 0, @@ -855,6 +855,23 @@ "londonBlock": 0, "mergeNetsplitBlock": 0, "muirGlacierBlock": 0, + "blobSchedule": { + "cancun": { + "target": 3, + "max": 6, + "baseFeeUpdateFraction": 3338477 + }, + "prague": { + "target": 6, + "max": 9, + "baseFeeUpdateFraction": 5007716 + }, + "osaka": { + "target": 9, + "max": 12, + "baseFeeUpdateFraction": 5007716 + } + }, "optimism": { "eip1559Denominator": 50, "eip1559DenominatorCanyon": 250, diff --git a/src/proxy.rs b/src/proxy.rs index 1bde0f31..7afd478d 100644 --- a/src/proxy.rs +++ b/src/proxy.rs @@ -132,7 +132,7 @@ where }); let l2_req = HttpRequest::from_parts(parts, HttpBody::from(body_bytes)); - info!(target: "proxy::call", message = "proxying request to rollup-boost server", ?method); + info!(target: "proxy::call", message = "forward request to rollup-boost server", ?method); service.l2_client.forward(l2_req, method).await } else { let req = HttpRequest::from_parts(parts, HttpBody::from(body_bytes)); diff --git a/src/server.rs b/src/server.rs index d8ea8627..a2139dd3 100644 --- a/src/server.rs +++ b/src/server.rs @@ -1,6 +1,6 @@ use crate::client::rpc::RpcClient; use crate::debug_api::DebugServer; -use alloy_primitives::B256; +use alloy_primitives::{B256, Bytes}; use moka::sync::Cache; use opentelemetry::trace::SpanKind; use parking_lot::Mutex; @@ -14,7 +14,10 @@ use jsonrpsee::RpcModule; use jsonrpsee::core::{RegisterMethodError, RpcResult, async_trait}; use jsonrpsee::types::ErrorObject; use jsonrpsee::types::error::INVALID_REQUEST_CODE; -use op_alloy_rpc_types_engine::{OpExecutionPayloadEnvelopeV3, OpPayloadAttributes}; +use op_alloy_rpc_types_engine::{ + OpExecutionPayloadEnvelopeV3, OpExecutionPayloadEnvelopeV4, OpExecutionPayloadV4, + OpPayloadAttributes, +}; use serde::{Deserialize, Serialize}; use tracing::{debug, info, instrument}; @@ -211,6 +214,21 @@ pub trait EngineApi { versioned_hashes: Vec, parent_beacon_block_root: B256, ) -> RpcResult; + + #[method(name = "getPayloadV4")] + async fn get_payload_v4( + &self, + payload_id: PayloadId, + ) -> RpcResult; + + #[method(name = "newPayloadV4")] + async fn new_payload_v4( + &self, + payload: OpExecutionPayloadV4, + versioned_hashes: Vec, + parent_beacon_block_root: B256, + execution_requests: Vec, + ) -> RpcResult; } #[async_trait] @@ -299,7 +317,225 @@ impl EngineApiServer for RollupBoostServer { ) -> RpcResult { info!("received get_payload_v3"); - let l2_client_future = self.l2_client.get_payload_v3(payload_id); + match self.get_payload(payload_id, Version::V3).await? { + OpExecutionPayloadEnvelope::V3(v3) => Ok(v3), + OpExecutionPayloadEnvelope::V4(_) => Err(ErrorObject::owned( + INVALID_REQUEST_CODE, + "Payload version 4 not supported", + None::, + )), + } + } + + #[instrument( + skip_all, + err, + fields( + otel.kind = ?SpanKind::Server, + ) + )] + async fn new_payload_v3( + &self, + payload: ExecutionPayloadV3, + versioned_hashes: Vec, + parent_beacon_block_root: B256, + ) -> RpcResult { + info!("received new_payload_v3"); + + self.new_payload(NewPayload::V3(NewPayloadV3 { + payload, + versioned_hashes, + parent_beacon_block_root, + })) + .await + } + + #[instrument( + skip_all, + err, + fields( + otel.kind = ?SpanKind::Server, + %payload_id, + payload_source + ) + )] + async fn get_payload_v4( + &self, + payload_id: PayloadId, + ) -> RpcResult { + info!("received get_payload_v4"); + + match self.get_payload(payload_id, Version::V4).await? { + OpExecutionPayloadEnvelope::V4(v4) => Ok(v4), + OpExecutionPayloadEnvelope::V3(_) => Err(ErrorObject::owned( + INVALID_REQUEST_CODE, + "Payload version 4 not supported", + None::, + )), + } + } + + #[instrument( + skip_all, + err, + fields( + otel.kind = ?SpanKind::Server, + ) + )] + async fn new_payload_v4( + &self, + payload: OpExecutionPayloadV4, + versioned_hashes: Vec, + parent_beacon_block_root: B256, + execution_requests: Vec, + ) -> RpcResult { + info!("received new_payload_v4"); + + self.new_payload(NewPayload::V4(NewPayloadV4 { + payload, + versioned_hashes, + parent_beacon_block_root, + execution_requests, + })) + .await + } +} + +#[derive(Debug, Clone)] +pub enum OpExecutionPayloadEnvelope { + V3(OpExecutionPayloadEnvelopeV3), + V4(OpExecutionPayloadEnvelopeV4), +} + +impl OpExecutionPayloadEnvelope { + pub fn version(&self) -> Version { + match self { + OpExecutionPayloadEnvelope::V3(_) => Version::V3, + OpExecutionPayloadEnvelope::V4(_) => Version::V4, + } + } +} + +impl From for ExecutionPayload { + fn from(envelope: OpExecutionPayloadEnvelope) -> Self { + match envelope { + OpExecutionPayloadEnvelope::V3(v3) => ExecutionPayload::from(v3.execution_payload), + OpExecutionPayloadEnvelope::V4(v4) => { + ExecutionPayload::from(v4.execution_payload.payload_inner) + } + } + } +} + +#[derive(Debug, Clone)] +pub struct NewPayloadV3 { + pub payload: ExecutionPayloadV3, + pub versioned_hashes: Vec, + pub parent_beacon_block_root: B256, +} + +#[derive(Debug, Clone)] +pub struct NewPayloadV4 { + pub payload: OpExecutionPayloadV4, + pub versioned_hashes: Vec, + pub parent_beacon_block_root: B256, + pub execution_requests: Vec, +} + +#[derive(Debug, Clone)] +pub enum NewPayload { + V3(NewPayloadV3), + V4(NewPayloadV4), +} + +impl NewPayload { + pub fn version(&self) -> Version { + match self { + NewPayload::V3(_) => Version::V3, + NewPayload::V4(_) => Version::V4, + } + } +} + +impl From for NewPayload { + fn from(envelope: OpExecutionPayloadEnvelope) -> Self { + match envelope { + OpExecutionPayloadEnvelope::V3(v3) => NewPayload::V3(NewPayloadV3 { + payload: v3.execution_payload, + versioned_hashes: vec![], + parent_beacon_block_root: v3.parent_beacon_block_root, + }), + OpExecutionPayloadEnvelope::V4(v4) => NewPayload::V4(NewPayloadV4 { + payload: v4.execution_payload, + versioned_hashes: vec![], + parent_beacon_block_root: v4.parent_beacon_block_root, + execution_requests: v4.execution_requests, + }), + } + } +} + +impl From for ExecutionPayload { + fn from(new_payload: NewPayload) -> Self { + match new_payload { + NewPayload::V3(v3) => ExecutionPayload::from(v3.payload), + NewPayload::V4(v4) => ExecutionPayload::from(v4.payload.payload_inner), + } + } +} + +#[derive(Debug, Clone, Copy)] +pub enum Version { + V3, + V4, +} + +impl Version { + pub fn as_str(&self) -> &'static str { + match self { + Version::V3 => "v3", + Version::V4 => "v4", + } + } +} + +impl RollupBoostServer { + async fn new_payload(&self, new_payload: NewPayload) -> RpcResult { + let execution_payload = ExecutionPayload::from(new_payload.clone()); + let block_hash = execution_payload.block_hash(); + let parent_hash = execution_payload.parent_hash(); + info!(message = "received new_payload", "block_hash" = %block_hash, "version" = new_payload.version().as_str()); + + // async call to builder to sync the builder node + let execution_mode = self.execution_mode(); + if self.boost_sync && !execution_mode.is_disabled() { + if let Some(causes) = self + .payload_trace_context + .trace_ids_from_parent_hash(&parent_hash) + { + causes.iter().for_each(|cause| { + tracing::Span::current().follows_from(cause); + }); + } + + self.payload_trace_context + .remove_by_parent_hash(&parent_hash); + + let builder = self.builder_client.clone(); + let new_payload_clone = new_payload.clone(); + tokio::spawn(async move { + let _ = builder.new_payload(new_payload_clone).await; + }); + } + Ok(self.l2_client.new_payload(new_payload).await?) + } + + async fn get_payload( + &self, + payload_id: PayloadId, + version: Version, + ) -> RpcResult { + let l2_client_future = self.l2_client.get_payload(payload_id, version); let builder_client_future = Box::pin(async move { let execution_mode = self.execution_mode(); if !execution_mode.is_get_payload_enabled() { @@ -319,23 +555,19 @@ impl EngineApiServer for RollupBoostServer { if !self.payload_trace_context.has_attributes(&payload_id) { // block builder won't build a block without attributes - info!(message = "no attributes found, skipping get_payload_v3 call to builder"); + info!(message = "no attributes found, skipping get_payload call to builder"); return Ok(None); } let builder = self.builder_client.clone(); - let payload = builder.get_payload_v3(payload_id).await?; + let payload = builder.get_payload(payload_id, version).await?; // Send the payload to the local execution engine with engine_newPayload to validate the block from the builder. // Otherwise, we do not want to risk the network to a halt since op-node will not be able to propose the block. // If validation fails, return the local block since that one has already been validated. let _ = self .l2_client - .new_payload_v3( - payload.execution_payload.clone(), - vec![], - payload.parent_beacon_block_root, - ) + .new_payload(NewPayload::from(payload.clone())) .await?; Ok(Some(payload)) @@ -350,7 +582,7 @@ impl EngineApiServer for RollupBoostServer { tracing::Span::current().record("payload_source", context.to_string()); - let inner_payload = ExecutionPayload::from(payload.clone().execution_payload); + let inner_payload = ExecutionPayload::from(payload.clone()); let block_hash = inner_payload.block_hash(); let block_number = inner_payload.block_number(); @@ -366,58 +598,6 @@ impl EngineApiServer for RollupBoostServer { ); Ok(payload) } - - #[instrument( - skip_all, - err, - fields( - otel.kind = ?SpanKind::Server, - ) - )] - async fn new_payload_v3( - &self, - payload: ExecutionPayloadV3, - versioned_hashes: Vec, - parent_beacon_block_root: B256, - ) -> RpcResult { - info!("received new_payload_v3"); - let execution_payload = ExecutionPayload::from(payload.clone()); - let block_hash = execution_payload.block_hash(); - let parent_hash = execution_payload.parent_hash(); - info!(message = "received new_payload_v3", "block_hash" = %block_hash); - // async call to builder to sync the builder node - let execution_mode = self.execution_mode(); - if self.boost_sync && !execution_mode.is_disabled() { - if let Some(causes) = self - .payload_trace_context - .trace_ids_from_parent_hash(&parent_hash) - { - causes.iter().for_each(|cause| { - tracing::Span::current().follows_from(cause); - }); - } - - self.payload_trace_context - .remove_by_parent_hash(&parent_hash); - - let builder = self.builder_client.clone(); - let builder_payload = payload.clone(); - let builder_versioned_hashes = versioned_hashes.clone(); - tokio::spawn(async move { - let _ = builder - .new_payload_v3( - builder_payload, - builder_versioned_hashes, - parent_beacon_block_root, - ) - .await; - }); - } - Ok(self - .l2_client - .new_payload_v3(payload, versioned_hashes, parent_beacon_block_root) - .await?) - } } #[cfg(test)]