diff --git a/Cargo.lock b/Cargo.lock index 065a4399..3fe28766 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,17 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addchain" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2e69442aa5628ea6951fa33e24efe8313f4321a91bd729fc2f75bdfc858570" -dependencies = [ - "num-bigint 0.3.3", - "num-integer", - "num-traits", -] - [[package]] name = "adler2" version = "2.0.1" @@ -33,9 +22,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] @@ -81,9 +70,9 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf01dd83a1ca5e4807d0ca0223c9615e211ce5db0a9fd1443c2778cacf89b546" +checksum = "6068f356948cd84b5ad9ac30c50478e433847f14a50714d2b68f15d052724049" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -96,9 +85,9 @@ dependencies = [ [[package]] name = "alloy-consensus" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9b151e38e42f1586a01369ec52a6934702731d07e8509a7307331b09f6c46dc" +checksum = "90d103d3e440ad6f703dd71a5b58a6abd24834563bde8a5fabe706e00242f810" dependencies = [ "alloy-eips", "alloy-primitives", @@ -123,9 +112,9 @@ dependencies = [ [[package]] name = "alloy-consensus-any" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2d5e8668ef6215efdb7dcca6f22277b4e483a5650e05f5de22b2350971f4b8" +checksum = "48ead76c8c84ab3a50c31c56bc2c748c2d64357ad2131c32f9b10ab790a25e1a" dependencies = [ "alloy-consensus", "alloy-eips", @@ -153,26 +142,28 @@ dependencies = [ [[package]] name = "alloy-eip2930" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" +checksum = "9441120fa82df73e8959ae0e4ab8ade03de2aaae61be313fbf5746277847ce25" dependencies = [ "alloy-primitives", "alloy-rlp", "arbitrary", + "borsh", "rand 0.8.5", "serde", ] [[package]] name = "alloy-eip7702" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" +checksum = "2919c5a56a1007492da313e7a3b6d45ef5edc5d33416fdec63c0d7a2702a0d20" dependencies = [ "alloy-primitives", "alloy-rlp", "arbitrary", + "borsh", "k256", "rand 0.8.5", "serde", @@ -182,9 +173,9 @@ dependencies = [ [[package]] name = "alloy-eips" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5434834adaf64fa20a6fb90877bc1d33214c41b055cc49f82189c98614368cc" +checksum = "7bdbec74583d0067798d77afa43d58f00d93035335d7ceaa5d3f93857d461bb9" dependencies = [ "alloy-eip2124", "alloy-eip2930", @@ -201,15 +192,15 @@ dependencies = [ "ethereum_ssz_derive", "serde", "serde_with", - "sha2 0.10.9", + "sha2", "thiserror 2.0.17", ] [[package]] name = "alloy-evm" -version = "0.21.2" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06a5f67ee74999aa4fe576a83be1996bdf74a30fce3d248bf2007d6fc7dae8aa" +checksum = "6223235f0b785a83dd10dc1599b7f3763c65e4f98b4e9e4e10e576bbbdf7dfa2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -230,9 +221,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919a8471cfbed7bcd8cf1197a57dda583ce0e10c6385f6ff4e8b41304b223392" +checksum = "c25d5acb35706e683df1ea333c862bdb6b7c5548836607cd5bb56e501cca0b4f" dependencies = [ "alloy-eips", "alloy-primitives", @@ -244,9 +235,9 @@ dependencies = [ [[package]] name = "alloy-hardforks" -version = "0.3.5" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "889eb3949b58368a09d4f16931c660275ef5fb08e5fbd4a96573b19c7085c41f" +checksum = "1e29d7eacf42f89c21d7f089916d0bdb4f36139a31698790e8837d2dbbd4b2c3" dependencies = [ "alloy-chains", "alloy-eip2124", @@ -258,9 +249,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "125a1c373261b252e53e04d6e92c37d881833afc1315fceab53fd46045695640" +checksum = "5513d5e6bd1cba6bdcf5373470f559f320c05c8c59493b6e98912fbe6733943f" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -270,9 +261,9 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7c69f6c9c68a1287c9d5ff903d0010726934de0dac10989be37b75a29190d55" +checksum = "31b67c5a702121e618217f7a86f314918acb2622276d0273490e2d4534490bc0" dependencies = [ "alloy-primitives", "alloy-sol-types", @@ -285,9 +276,9 @@ dependencies = [ [[package]] name = "alloy-network" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf2ae05219e73e0979cb2cf55612aafbab191d130f203079805eaf881cca58" +checksum = "612296e6b723470bb1101420a73c63dfd535aa9bf738ce09951aedbd4ab7292e" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -311,9 +302,9 @@ dependencies = [ [[package]] name = "alloy-network-primitives" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e58f4f345cef483eab7374f2b6056973c7419ffe8ad35e994b7a7f5d8e0c7ba4" +checksum = "a0e7918396eecd69d9c907046ec8a93fb09b89e2f325d5e7ea9c4e3929aa0dd2" dependencies = [ "alloy-consensus", "alloy-eips", @@ -324,9 +315,9 @@ dependencies = [ [[package]] name = "alloy-op-evm" -version = "0.21.2" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17aaeb600740c181bf29c9f138f9b228d115ea74fa6d0f0343e1952f1a766968" +checksum = "3ad8f3a679eb44ee21481edabd628d191c9a42d182ed29923b4d43a27a0f2cc8" dependencies = [ "alloy-consensus", "alloy-eips", @@ -337,13 +328,14 @@ dependencies = [ "op-alloy-consensus", "op-revm", "revm", + "thiserror 2.0.17", ] [[package]] name = "alloy-op-hardforks" -version = "0.3.5" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "599c1d7dfbccb66603cb93fde00980d12848d32fe5e814f50562104a92df6487" +checksum = "95ac97adaba4c26e17192d81f49186ac20c1e844e35a00e169c8d3d58bc84e6b" dependencies = [ "alloy-chains", "alloy-hardforks", @@ -354,9 +346,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc9485c56de23438127a731a6b4c87803d49faf1a7068dcd1d8768aca3a9edb9" +checksum = "355bf68a433e0fd7f7d33d5a9fc2583fde70bf5c530f63b80845f8da5505cf28" dependencies = [ "alloy-rlp", "arbitrary", @@ -364,16 +356,16 @@ dependencies = [ "cfg-if", "const-hex", "derive_more", - "foldhash 0.1.5", + "foldhash 0.2.0", "getrandom 0.3.4", - "hashbrown 0.15.5", + "hashbrown 0.16.0", "indexmap 2.12.0", "itoa", "k256", "keccak-asm", "paste", "proptest", - "proptest-derive", + "proptest-derive 0.6.0", "rand 0.9.2", "ruint", "rustc-hash", @@ -384,9 +376,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de2597751539b1cc8fe4204e5325f9a9ed83fcacfb212018dfcfa7877e76de21" +checksum = "55c1313a527a2e464d067c031f3c2ec073754ef615cc0eabca702fd0fe35729c" dependencies = [ "alloy-chains", "alloy-consensus", @@ -426,9 +418,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e45a68423e732900a0c824b8e22237db461b79d2e472dd68b7547c16104427" +checksum = "810766eeed6b10ffa11815682b3f37afc5019809e3b470b23555297d5770ce63" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -465,14 +457,14 @@ checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] name = "alloy-rpc-client" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edf8eb8be597cfa8c312934d2566ec4516f066d69164f9212d7a148979fdcfd8" +checksum = "45f802228273056528dfd6cc8845cc91a7c7e0c6fc1a66d19e8673743dacdc7e" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -496,9 +488,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "339af7336571dd39ae3a15bde08ae6a647e62f75350bd415832640268af92c06" +checksum = "33ff3df608dcabd6bdd197827ff2b8faaa6cefe0c462f7dc5e74108666a01f56" dependencies = [ "alloy-primitives", "alloy-rpc-types-debug", @@ -509,9 +501,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbde0801a32d21c5f111f037bee7e22874836fba7add34ed4a6919932dd7cf23" +checksum = "cdbf6d1766ca41e90ac21c4bc5cbc5e9e965978a25873c3f90b3992d905db4cb" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -520,9 +512,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-beacon" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55c8d51ebb7c5fa8be8ea739a3933c5bfea08777d2d662b30b2109ac5ca71e6b" +checksum = "ab94e446a003dcef86843eea60d05a6cec360eb8e1829e4cf388ef94d799b5cf" dependencies = [ "alloy-eips", "alloy-primitives", @@ -536,9 +528,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-debug" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388cf910e66bd4f309a81ef746dcf8f9bca2226e3577890a8d56c5839225cf46" +checksum = "977698b458738369ba5ca645d2cdb4d51ba07a81db37306ff85322853161ea3a" dependencies = [ "alloy-primitives", "derive_more", @@ -548,9 +540,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-engine" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "605ec375d91073851f566a3082548af69a28dca831b27a8be7c1b4c49f5c6ca2" +checksum = "07da696cc7fbfead4b1dda8afe408685cae80975cbb024f843ba74d9639cd0d3" dependencies = [ "alloy-consensus", "alloy-eips", @@ -569,9 +561,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "361cd87ead4ba7659bda8127902eda92d17fa7ceb18aba1676f7be10f7222487" +checksum = "a15e4831b71eea9d20126a411c1c09facf1d01d5cac84fd51d532d3c429cfc26" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -591,9 +583,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64600fc6c312b7e0ba76f73a381059af044f4f21f43e07f51f1fa76c868fe302" +checksum = "751d1887f7d202514a82c5b3caf28ee8bd4a2ad9549e4f498b6f0bff99b52add" dependencies = [ "alloy-primitives", "arbitrary", @@ -603,9 +595,9 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5772858492b26f780468ae693405f895d6a27dea6e3eab2c36b6217de47c2647" +checksum = "9cf0b42ffbf558badfecf1dde0c3c5ed91f29bb7e97876d0bed008c3d5d67171" dependencies = [ "alloy-primitives", "async-trait", @@ -618,23 +610,23 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d20d867dcf42019d4779519a1ceb55eba8d7f3d0e4f0a89bcba82b8f9eb01e48" +checksum = "f3ce480400051b5217f19d6e9a82d9010cdde20f1ae9c00d53591e4a1afbb312" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] name = "alloy-sol-macro-expander" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b74e91b0b553c115d14bd0ed41898309356dc85d0e3d4b9014c4e7715e48c8ad" +checksum = "6d792e205ed3b72f795a8044c52877d2e6b6e9b1d13f431478121d8d4eaa9028" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -644,16 +636,16 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84194d31220803f5f62d0a00f583fd3a062b36382e2bea446f1af96727754565" +checksum = "0bd1247a8f90b465ef3f1207627547ec16940c35597875cdc09c49d58b19693c" dependencies = [ "alloy-json-abi", "const-hex", @@ -663,7 +655,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.107", + "syn 2.0.109", "syn-solidity", ] @@ -679,9 +671,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5383d34ea00079e6dd89c652bcbdb764db160cef84e6250926961a0b2295d04" +checksum = "70319350969a3af119da6fb3e9bddb1bce66c9ea933600cb297c8b1850ad2a3c" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -691,12 +683,11 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "025a940182bddaeb594c26fe3728525ae262d0806fe6a4befdf5d7bc13d54bce" +checksum = "71b3deee699d6f271eab587624a9fa84d02d0755db7a95a043d52a6488d16ebe" dependencies = [ "alloy-json-rpc", - "alloy-primitives", "auto_impl", "base64", "derive_more", @@ -715,9 +706,9 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3b5064d1e1e1aabc918b5954e7fb8154c39e77ec6903a581b973198b26628fa" +checksum = "1720bd2ba8fe7e65138aca43bb0f680e4e0bcbd3ca39bf9d3035c9d7d2757f24" dependencies = [ "alloy-json-rpc", "alloy-rpc-types-engine", @@ -736,9 +727,9 @@ dependencies = [ [[package]] name = "alloy-transport-ipc" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d47962f3f1d9276646485458dc842b4e35675f42111c9d814ae4711c664c8300" +checksum = "ea89c214c7ddd2bcad100da929d6b642bbfed85788caf3b1be473abacd3111f9" dependencies = [ "alloy-json-rpc", "alloy-pubsub", @@ -756,9 +747,9 @@ dependencies = [ [[package]] name = "alloy-transport-ws" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9476a36a34e2fb51b6746d009c53d309a186a825aa95435407f0e07149f4ad2d" +checksum = "571aadf0afce0d515a28b2c6352662a39cb9f48b4eeff9a5c34557d6ea126730" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -786,7 +777,7 @@ dependencies = [ "derive_more", "nybbles", "proptest", - "proptest-derive", + "proptest-derive 0.5.1", "serde", "smallvec", "tracing", @@ -794,15 +785,14 @@ dependencies = [ [[package]] name = "alloy-tx-macros" -version = "1.0.41" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8e52276fdb553d3c11563afad2898f4085165e4093604afe3d78b69afbf408f" +checksum = "cd7ce8ed34106acd6e21942022b6a15be6454c2c3ead4d76811d3bdcd63cf771" dependencies = [ - "alloy-primitives", "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -918,7 +908,7 @@ dependencies = [ "fnv", "hashbrown 0.15.5", "itertools 0.13.0", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", "zeroize", @@ -935,7 +925,7 @@ dependencies = [ "ark-serialize 0.3.0", "ark-std 0.3.0", "derivative", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", "rustc_version 0.3.3", @@ -955,7 +945,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools 0.10.5", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", "rustc_version 0.4.1", @@ -976,7 +966,7 @@ dependencies = [ "digest 0.10.7", "educe", "itertools 0.13.0", - "num-bigint 0.4.6", + "num-bigint", "num-traits", "paste", "zeroize", @@ -1009,7 +999,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" dependencies = [ "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -1018,7 +1008,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "quote", "syn 1.0.109", @@ -1030,7 +1020,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "proc-macro2", "quote", @@ -1043,11 +1033,11 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -1076,7 +1066,7 @@ dependencies = [ "ark-relations", "ark-std 0.5.0", "educe", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", "tracing", @@ -1112,7 +1102,7 @@ checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" dependencies = [ "ark-std 0.4.0", "digest 0.10.7", - "num-bigint 0.4.6", + "num-bigint", ] [[package]] @@ -1125,7 +1115,7 @@ dependencies = [ "ark-std 0.5.0", "arrayvec", "digest 0.10.7", - "num-bigint 0.4.6", + "num-bigint", ] [[package]] @@ -1136,7 +1126,7 @@ checksum = "213888f660fddcca0d257e88e54ac05bca01885f258ccdf695bafd77031bb69d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -1215,7 +1205,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -1226,7 +1216,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -1264,7 +1254,7 @@ checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -1303,15 +1293,6 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - [[package]] name = "bincode" version = "2.0.1" @@ -1347,7 +1328,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -1403,28 +1384,6 @@ dependencies = [ "wyz", ] -[[package]] -name = "blake3" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", -] - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -1446,6 +1405,29 @@ dependencies = [ "zeroize", ] +[[package]] +name = "borsh" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.109", +] + [[package]] name = "brotli" version = "8.0.2" @@ -1469,9 +1451,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" dependencies = [ "memchr", "regex-automata", @@ -1549,7 +1531,7 @@ dependencies = [ [[package]] name = "canoe-bindings" version = "0.1.0" -source = "git+https://github.com/Layr-Labs/hokulea?rev=90404fb#90404fb918380bfdd3920c5f83640177c29764f6" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.0.2#d8870847aeb1c5a37f4a2c8487b3ddaf2bacb67b" dependencies = [ "alloy-sol-types", "serde", @@ -1558,7 +1540,7 @@ dependencies = [ [[package]] name = "canoe-verifier" version = "0.1.0" -source = "git+https://github.com/Layr-Labs/hokulea?rev=90404fb#90404fb918380bfdd3920c5f83640177c29764f6" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.0.2#d8870847aeb1c5a37f4a2c8487b3ddaf2bacb67b" dependencies = [ "alloy-genesis", "alloy-primitives", @@ -1568,13 +1550,24 @@ dependencies = [ "revm-primitives", "serde", "thiserror 2.0.17", + "tracing", +] + +[[package]] +name = "canoe-verifier-address-fetcher" +version = "0.1.0" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.0.2#d8870847aeb1c5a37f4a2c8487b3ddaf2bacb67b" +dependencies = [ + "alloy-primitives", + "eigenda-cert", + "thiserror 2.0.17", ] [[package]] name = "cc" -version = "1.2.41" +version = "1.2.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" +checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" dependencies = [ "find-msvc-tools", "jobserver", @@ -1593,7 +1586,7 @@ dependencies = [ "alloy-rpc-types-eth", "alloy-serde", "arbitrary", - "bincode 2.0.1", + "bincode", "derive_more", "op-alloy-consensus", "rand 0.9.2", @@ -1897,6 +1890,7 @@ version = "0.1.0" dependencies = [ "alloy-eips", "alloy-evm", + "alloy-op-evm", "alloy-primitives", "alloy-sol-types", "auto_impl", @@ -1960,9 +1954,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.50" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2cfd7bf8a6017ddaa4e32ffe7403d547790db06bd171c1c53926faab501623" +checksum = "4c26d721170e0295f191a69bd9a1f93efcdb0aff38684b61ab5750468972e5f5" dependencies = [ "clap_builder", "clap_derive", @@ -1970,9 +1964,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.50" +version = "4.5.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a4c05b9e80c5ccd3a7ef080ad7b6ba7d6fc00a985b8b157197075677c82c7a0" +checksum = "75835f0c7bf681bfd05abe44e965760fea999a5286c6eb2d59883634fd02011a" dependencies = [ "anstream", "anstyle", @@ -1989,7 +1983,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -2063,12 +2057,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "constant_time_eq" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" - [[package]] name = "convert_case" version = "0.7.1" @@ -2207,7 +2195,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -2222,7 +2210,7 @@ dependencies = [ "quote", "serde", "strsim", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -2233,7 +2221,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -2244,7 +2232,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -2279,9 +2267,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" dependencies = [ "powerfmt", "serde_core", @@ -2306,7 +2294,7 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -2317,7 +2305,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -2338,7 +2326,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", "unicode-xid", ] @@ -2357,7 +2345,7 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer 0.10.4", + "block-buffer", "const-oid", "crypto-common", "subtle", @@ -2371,7 +2359,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -2416,13 +2404,13 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] name = "eigenda-cert" version = "0.1.0" -source = "git+https://github.com/Layr-Labs/hokulea?rev=90404fb#90404fb918380bfdd3920c5f83640177c29764f6" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.0.2#d8870847aeb1c5a37f4a2c8487b3ddaf2bacb67b" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -2478,22 +2466,22 @@ dependencies = [ [[package]] name = "enum-ordinalize" -version = "4.3.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +checksum = "4a1091a7bb1f8f2c4b28f1fe2cef4980ca2d410a3d727d67ecc3178c9b0800f0" dependencies = [ "enum-ordinalize-derive", ] [[package]] name = "enum-ordinalize-derive" -version = "4.3.1" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +checksum = "8ca9601fb2d62598ee17836250842873a413586e5d7ed88b356e38ddbb0ec631" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -2509,7 +2497,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -2549,7 +2537,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -2660,27 +2648,10 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "byteorder", - "ff_derive", "rand_core 0.6.4", "subtle", ] -[[package]] -name = "ff_derive" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f10d12652036b0e99197587c6ba87a8fc3031986499973c030d8b44fcc151b60" -dependencies = [ - "addchain", - "num-bigint 0.3.3", - "num-integer", - "num-traits", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "find-msvc-tools" version = "0.1.4" @@ -2803,7 +2774,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -2848,12 +2819,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42012b0f064e01aa58b545fe3727f90f7dd4020f4a3ea735b50344965f5a57e9" -[[package]] -name = "gcd" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" - [[package]] name = "generic-array" version = "0.14.9" @@ -2959,7 +2924,6 @@ dependencies = [ "allocator-api2", "equivalent", "foldhash 0.1.5", - "serde", ] [[package]] @@ -2971,6 +2935,7 @@ dependencies = [ "allocator-api2", "equivalent", "foldhash 0.2.0", + "serde", ] [[package]] @@ -3012,10 +2977,11 @@ dependencies = [ [[package]] name = "hokulea-client" version = "0.1.0" -source = "git+https://github.com/Layr-Labs/hokulea?rev=90404fb#90404fb918380bfdd3920c5f83640177c29764f6" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.0.2#d8870847aeb1c5a37f4a2c8487b3ddaf2bacb67b" dependencies = [ "alloy-consensus", "alloy-evm", + "alloy-op-evm", "hokulea-eigenda", "kona-client", "kona-derive", @@ -3025,15 +2991,17 @@ dependencies = [ "kona-proof", "op-alloy-consensus", "op-revm", + "revm", "tracing", ] [[package]] name = "hokulea-client-bin" version = "0.1.0" -source = "git+https://github.com/Layr-Labs/hokulea?rev=90404fb#90404fb918380bfdd3920c5f83640177c29764f6" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.0.2#d8870847aeb1c5a37f4a2c8487b3ddaf2bacb67b" dependencies = [ "alloy-evm", + "alloy-op-evm", "cfg-if", "hokulea-client", "hokulea-proof", @@ -3044,19 +3012,19 @@ dependencies = [ "kona-std-fpvm-proc", "op-alloy-consensus", "op-revm", + "revm", ] [[package]] name = "hokulea-eigenda" version = "0.1.0" -source = "git+https://github.com/Layr-Labs/hokulea?rev=90404fb#90404fb918380bfdd3920c5f83640177c29764f6" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.0.2#d8870847aeb1c5a37f4a2c8487b3ddaf2bacb67b" dependencies = [ "alloy-primitives", "async-trait", "eigenda-cert", "kona-derive", "kona-protocol", - "rust-kzg-bn254-primitives", "serde", "thiserror 2.0.17", "tracing", @@ -3065,7 +3033,7 @@ dependencies = [ [[package]] name = "hokulea-host-bin" version = "0.1.0" -source = "git+https://github.com/Layr-Labs/hokulea?rev=90404fb#90404fb918380bfdd3920c5f83640177c29764f6" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.0.2#d8870847aeb1c5a37f4a2c8487b3ddaf2bacb67b" dependencies = [ "alloy-primitives", "anyhow", @@ -3092,13 +3060,14 @@ dependencies = [ [[package]] name = "hokulea-proof" version = "0.1.0" -source = "git+https://github.com/Layr-Labs/hokulea?rev=90404fb#90404fb918380bfdd3920c5f83640177c29764f6" +source = "git+https://github.com/Layr-Labs/hokulea?tag=hokulea-client%2Fv1.0.2#d8870847aeb1c5a37f4a2c8487b3ddaf2bacb67b" dependencies = [ "alloy-primitives", "ark-bn254", "ark-ff 0.5.0", "async-trait", "canoe-verifier", + "canoe-verifier-address-fetcher", "eigenda-cert", "hokulea-eigenda", "kona-preimage", @@ -3107,6 +3076,7 @@ dependencies = [ "rust-kzg-bn254-verifier", "serde", "thiserror 2.0.17", + "tracing", ] [[package]] @@ -3192,7 +3162,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.3", + "webpki-roots 1.0.4", ] [[package]] @@ -3276,9 +3246,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -3289,9 +3259,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -3302,11 +3272,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -3317,42 +3286,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -3404,7 +3369,7 @@ checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -3454,9 +3419,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ "memchr", "serde", @@ -3477,15 +3442,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -3522,9 +3478,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.81" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" +checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" dependencies = [ "once_cell", "wasm-bindgen", @@ -3556,7 +3512,7 @@ dependencies = [ "elliptic-curve", "once_cell", "serdect", - "sha2 0.10.9", + "sha2", ] [[package]] @@ -3581,7 +3537,7 @@ dependencies = [ [[package]] name = "kona-cli" version = "0.3.2" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-chains", "alloy-primitives", @@ -3601,7 +3557,7 @@ dependencies = [ [[package]] name = "kona-client" version = "1.0.2" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-consensus", "alloy-eips", @@ -3640,7 +3596,7 @@ dependencies = [ [[package]] name = "kona-derive" version = "0.4.5" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-consensus", "alloy-eips", @@ -3661,7 +3617,7 @@ dependencies = [ [[package]] name = "kona-driver" version = "0.4.0" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-consensus", "alloy-evm", @@ -3682,7 +3638,7 @@ dependencies = [ [[package]] name = "kona-executor" version = "0.4.0" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-consensus", "alloy-eips", @@ -3719,7 +3675,7 @@ dependencies = [ [[package]] name = "kona-genesis" version = "0.4.5" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-chains", "alloy-consensus", @@ -3740,7 +3696,7 @@ dependencies = [ [[package]] name = "kona-hardforks" version = "0.4.5" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-eips", "alloy-primitives", @@ -3751,7 +3707,7 @@ dependencies = [ [[package]] name = "kona-host" version = "1.0.2" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-consensus", "alloy-eips", @@ -3799,7 +3755,7 @@ dependencies = [ [[package]] name = "kona-interop" version = "0.4.5" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-consensus", "alloy-eips", @@ -3821,12 +3777,12 @@ dependencies = [ [[package]] name = "kona-macros" version = "0.1.2" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" [[package]] name = "kona-mpt" version = "0.3.0" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -3838,7 +3794,7 @@ dependencies = [ [[package]] name = "kona-preimage" version = "0.3.0" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-primitives", "async-channel", @@ -3851,7 +3807,7 @@ dependencies = [ [[package]] name = "kona-proof" version = "0.3.0" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-consensus", "alloy-eips", @@ -3876,6 +3832,7 @@ dependencies = [ "op-alloy-consensus", "op-alloy-rpc-types-engine", "op-revm", + "revm", "serde", "serde_json", "spin 0.10.0", @@ -3887,7 +3844,7 @@ dependencies = [ [[package]] name = "kona-proof-interop" version = "0.2.0" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-consensus", "alloy-eips", @@ -3919,7 +3876,7 @@ dependencies = [ [[package]] name = "kona-protocol" version = "0.4.5" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloc-no-stdlib", "alloy-consensus", @@ -3950,7 +3907,7 @@ dependencies = [ [[package]] name = "kona-providers-alloy" version = "0.3.3" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-consensus", "alloy-eips", @@ -3981,7 +3938,7 @@ dependencies = [ [[package]] name = "kona-registry" version = "0.4.5" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "alloy-chains", "alloy-eips", @@ -4000,7 +3957,7 @@ dependencies = [ [[package]] name = "kona-std-fpvm" version = "0.2.0" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "async-trait", "buddy_system_allocator", @@ -4013,27 +3970,13 @@ dependencies = [ [[package]] name = "kona-std-fpvm-proc" version = "0.2.0" -source = "git+https://github.com/celo-org/kona?rev=2c33430#2c33430f50c36524ccf34d8b4fb372efb0d923ab" +source = "git+https://github.com/celo-org/kona?rev=b0ea596#b0ea596426bbe44439b970e2e9d0212fc2fe5800" dependencies = [ "cfg-if", "kona-std-fpvm", "proc-macro2", "quote", - "syn 2.0.107", -] - -[[package]] -name = "kzg-rs" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9201effeea3fcc93b587904ae2df9ce97e433184b9d6d299e9ebc9830a546636" -dependencies = [ - "ff", - "hex", - "serde_arrays", - "sha2 0.10.9", - "sp1_bls12_381", - "spin 0.9.8", + "syn 2.0.109", ] [[package]] @@ -4091,52 +4034,6 @@ dependencies = [ "libz-sys", ] -[[package]] -name = "libsecp256k1" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79019718125edc905a079a70cfa5f3820bc76139fc91d6f9abc27ea2a887139" -dependencies = [ - "arrayref", - "base64", - "digest 0.9.0", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand 0.8.5", - "serde", - "sha2 0.9.9", -] - -[[package]] -name = "libsecp256k1-core" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" -dependencies = [ - "crunchy", - "digest 0.9.0", - "subtle", -] - -[[package]] -name = "libsecp256k1-gen-ecmult" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" -dependencies = [ - "libsecp256k1-core", -] - -[[package]] -name = "libsecp256k1-gen-genmult" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" -dependencies = [ - "libsecp256k1-core", -] - [[package]] name = "libz-sys" version = "1.1.22" @@ -4156,9 +4053,9 @@ checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" @@ -4216,7 +4113,7 @@ checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -4361,7 +4258,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -4370,7 +4267,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-complex", "num-integer", "num-iter", @@ -4378,17 +4275,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-bigint" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-bigint" version = "0.4.6" @@ -4440,7 +4326,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", ] @@ -4484,7 +4370,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -4520,9 +4406,9 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "op-alloy-consensus" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a501241474c3118833d6195312ae7eb7cc90bbb0d5f524cbb0b06619e49ff67" +checksum = "e42e9de945efe3c2fbd207e69720c9c1af2b8caa6872aee0e216450c25a3ca70" dependencies = [ "alloy-consensus", "alloy-eips", @@ -4540,9 +4426,9 @@ dependencies = [ [[package]] name = "op-alloy-network" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f80108e3b36901200a4c5df1db1ee9ef6ce685b59ea79d7be1713c845e3765da" +checksum = "9c9da49a2812a0189dd05e81e4418c3ae13fd607a92654107f02ebad8e91ed9e" dependencies = [ "alloy-consensus", "alloy-network", @@ -4556,9 +4442,9 @@ dependencies = [ [[package]] name = "op-alloy-rpc-types" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "753d6f6b03beca1ba9cbd344c05fee075a2ce715ee9d61981c10b9c764a824a2" +checksum = "9cd1eb7bddd2232856ba9d259320a094f9edf2b9061acfe5966e7960208393e6" dependencies = [ "alloy-consensus", "alloy-eips", @@ -4576,9 +4462,9 @@ dependencies = [ [[package]] name = "op-alloy-rpc-types-engine" -version = "0.20.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14e50c94013a1d036a529df259151991dbbd6cf8dc215e3b68b784f95eec60e6" +checksum = "5429622150d18d8e6847a701135082622413e2451b64d03f979415d764566bef" dependencies = [ "alloy-consensus", "alloy-eips", @@ -4598,21 +4484,15 @@ dependencies = [ [[package]] name = "op-revm" -version = "10.1.1" +version = "12.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826f43a5b1613c224f561847c152bfbaefcb593a9ae2c612ff4dc4661c6e625f" +checksum = "e31622d03b29c826e48800f4c8f389c8a9c440eb796a3e35203561a288f12985" dependencies = [ "auto_impl", "revm", "serde", ] -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "openssl" version = "0.10.74" @@ -4636,7 +4516,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -4765,128 +4645,7 @@ dependencies = [ "ecdsa", "elliptic-curve", "primeorder", - "sha2 0.10.9", -] - -[[package]] -name = "p3-baby-bear" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" -dependencies = [ - "num-bigint 0.4.6", - "p3-field", - "p3-mds", - "p3-poseidon2", - "p3-symmetric", - "rand 0.8.5", - "serde", -] - -[[package]] -name = "p3-dft" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" -dependencies = [ - "p3-field", - "p3-matrix", - "p3-maybe-rayon", - "p3-util", - "tracing", -] - -[[package]] -name = "p3-field" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" -dependencies = [ - "itertools 0.12.1", - "num-bigint 0.4.6", - "num-traits", - "p3-util", - "rand 0.8.5", - "serde", -] - -[[package]] -name = "p3-matrix" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" -dependencies = [ - "itertools 0.12.1", - "p3-field", - "p3-maybe-rayon", - "p3-util", - "rand 0.8.5", - "serde", - "tracing", -] - -[[package]] -name = "p3-maybe-rayon" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" - -[[package]] -name = "p3-mds" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" -dependencies = [ - "itertools 0.12.1", - "p3-dft", - "p3-field", - "p3-matrix", - "p3-symmetric", - "p3-util", - "rand 0.8.5", -] - -[[package]] -name = "p3-poseidon2" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" -dependencies = [ - "gcd", - "p3-field", - "p3-mds", - "p3-symmetric", - "rand 0.8.5", - "serde", -] - -[[package]] -name = "p3-symmetric" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" -dependencies = [ - "itertools 0.12.1", - "p3-field", - "serde", -] - -[[package]] -name = "p3-util" -version = "0.2.3-succinct" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" -dependencies = [ - "serde", -] - -[[package]] -name = "pairing" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fec4625e73cf41ef4bb6846cafa6d44736525f442ba45e407c4a000a13996f" -dependencies = [ - "group", + "sha2", ] [[package]] @@ -4925,7 +4684,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -5001,9 +4760,9 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ "phf_macros", "phf_shared", @@ -5012,32 +4771,32 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" dependencies = [ + "fastrand", "phf_shared", - "rand 0.8.5", ] [[package]] name = "phf_macros" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" dependencies = [ "phf_generator", "phf_shared", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] name = "phf_shared" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" dependencies = [ "siphasher", ] @@ -5059,7 +4818,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -5098,9 +4857,9 @@ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "potential_utf" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ "zerovec", ] @@ -5168,14 +4927,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] name = "proc-macro2" -version = "1.0.101" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" +checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" dependencies = [ "unicode-ident", ] @@ -5203,14 +4962,13 @@ dependencies = [ [[package]] name = "proptest" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb0be07becd10686a0bb407298fb425360a5c44a663774406340c59a22de4ce" +checksum = "bee689443a2bd0a16ab0348b52ee43e3b2d1b1f931c8aa5c9f8de4c86fbe8c40" dependencies = [ "bit-set", "bit-vec", "bitflags", - "lazy_static", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", @@ -5229,7 +4987,18 @@ checksum = "4ee1c9ac207483d5e7db4940700de86a9aae46ef90c48b57f99fe7edb8345e49" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", +] + +[[package]] +name = "proptest-derive" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "095a99f75c69734802359b682be8daaf8980296731f6470434ea2c652af1dd30" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.109", ] [[package]] @@ -5252,7 +5021,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -5328,14 +5097,14 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.41" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -5473,7 +5242,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -5554,13 +5323,13 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 1.0.3", + "webpki-roots 1.0.4", ] [[package]] name = "reth-chainspec" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-chains", "alloy-consensus", @@ -5579,8 +5348,8 @@ dependencies = [ [[package]] name = "reth-db-models" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-eips", "alloy-primitives", @@ -5589,8 +5358,8 @@ dependencies = [ [[package]] name = "reth-ethereum-forks" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-eip2124", "alloy-hardforks", @@ -5601,8 +5370,8 @@ dependencies = [ [[package]] name = "reth-ethereum-primitives" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-consensus", "alloy-eips", @@ -5613,8 +5382,8 @@ dependencies = [ [[package]] name = "reth-evm" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-consensus", "alloy-eips", @@ -5634,8 +5403,8 @@ dependencies = [ [[package]] name = "reth-execution-errors" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-evm", "alloy-primitives", @@ -5647,8 +5416,8 @@ dependencies = [ [[package]] name = "reth-execution-types" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-consensus", "alloy-eips", @@ -5663,8 +5432,8 @@ dependencies = [ [[package]] name = "reth-network-peers" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-primitives", "alloy-rlp", @@ -5675,8 +5444,8 @@ dependencies = [ [[package]] name = "reth-primitives-traits" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-consensus", "alloy-eips", @@ -5696,18 +5465,19 @@ dependencies = [ [[package]] name = "reth-prune-types" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-primitives", "derive_more", + "strum", "thiserror 2.0.17", ] [[package]] name = "reth-stages-types" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-primitives", "reth-trie-common", @@ -5715,8 +5485,8 @@ dependencies = [ [[package]] name = "reth-static-file-types" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-primitives", "derive_more", @@ -5726,8 +5496,8 @@ dependencies = [ [[package]] name = "reth-storage-api" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-consensus", "alloy-eips", @@ -5748,8 +5518,8 @@ dependencies = [ [[package]] name = "reth-storage-errors" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-eips", "alloy-primitives", @@ -5764,8 +5534,8 @@ dependencies = [ [[package]] name = "reth-trie-common" -version = "1.8.2" -source = "git+https://github.com/paradigmxyz/reth?tag=v1.8.2#9c30bf7af5e0d45deaf5917375c9922c16654b28" +version = "1.9.1" +source = "git+https://github.com/paradigmxyz/reth?tag=v1.9.1#3afe69a5738459a7cb5f46c598c7f541a1510f32" dependencies = [ "alloy-consensus", "alloy-primitives", @@ -5780,9 +5550,9 @@ dependencies = [ [[package]] name = "revm" -version = "29.0.1" +version = "31.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "718d90dce5f07e115d0e66450b1b8aa29694c1cf3f89ebddaddccc2ccbd2f13e" +checksum = "bb67a5223602113cae59a305acde2d9936bc18f2478dda879a6124b267cebfb6" dependencies = [ "revm-bytecode", "revm-context", @@ -5799,9 +5569,9 @@ dependencies = [ [[package]] name = "revm-bytecode" -version = "6.2.2" +version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66c52031b73cae95d84cd1b07725808b5fd1500da3e5e24574a3b2dc13d9f16d" +checksum = "e2c6b5e6e8dd1e28a4a60e5f46615d4ef0809111c9e63208e55b5c7058200fb0" dependencies = [ "bitvec", "phf", @@ -5811,9 +5581,9 @@ dependencies = [ [[package]] name = "revm-context" -version = "9.1.0" +version = "11.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a20c98e7008591a6f012550c2a00aa36cba8c14cc88eb88dec32eb9102554b4" +checksum = "92850e150f4f99d46c05a20ad0cd09286a7ad4ee21866fffb87101de6e602231" dependencies = [ "bitvec", "cfg-if", @@ -5828,9 +5598,9 @@ dependencies = [ [[package]] name = "revm-context-interface" -version = "10.2.0" +version = "12.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50d241ed1ce647b94caf174fcd0239b7651318b2c4c06b825b59b973dfb8495" +checksum = "f6d701e2c2347d65216b066489ab22a0a8e1f7b2568256110d73a7d5eff3385c" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -5844,9 +5614,9 @@ dependencies = [ [[package]] name = "revm-database" -version = "7.0.5" +version = "9.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a276ed142b4718dcf64bc9624f474373ed82ef20611025045c3fb23edbef9c" +checksum = "7b6c15bb255481fcf29f5ef7c97f00ed4c28a6ab6c490d77b990d73603031569" dependencies = [ "alloy-eips", "revm-bytecode", @@ -5858,9 +5628,9 @@ dependencies = [ [[package]] name = "revm-database-interface" -version = "7.0.5" +version = "8.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c523c77e74eeedbac5d6f7c092e3851dbe9c7fec6f418b85992bd79229db361" +checksum = "8cce03e3780287b07abe58faf4a7f5d8be7e81321f93ccf3343c8f7755602bae" dependencies = [ "auto_impl", "either", @@ -5871,9 +5641,9 @@ dependencies = [ [[package]] name = "revm-handler" -version = "10.0.1" +version = "12.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "550331ea85c1d257686e672081576172fe3d5a10526248b663bbf54f1bef226a" +checksum = "b45418ed95cfdf0cb19effdbb7633cf2144cab7fb0e6ffd6b0eb9117a50adff6" dependencies = [ "auto_impl", "derive-where", @@ -5890,9 +5660,9 @@ dependencies = [ [[package]] name = "revm-inspector" -version = "10.0.1" +version = "12.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c0a6e9ccc2ae006f5bed8bd80cd6f8d3832cd55c5e861b9402fdd556098512f" +checksum = "c99801eac7da06cc112df2244bd5a64024f4ef21240e923b26e73c4b4a0e5da6" dependencies = [ "auto_impl", "either", @@ -5908,21 +5678,22 @@ dependencies = [ [[package]] name = "revm-interpreter" -version = "25.0.3" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06575dc51b1d8f5091daa12a435733a90b4a132dca7ccee0666c7db3851bc30c" +checksum = "22789ce92c5808c70185e3bc49732f987dc6fd907f77828c8d3470b2299c9c65" dependencies = [ "revm-bytecode", "revm-context-interface", "revm-primitives", + "revm-state", "serde", ] [[package]] name = "revm-precompile" -version = "27.0.0" +version = "29.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b57d4bd9e6b5fe469da5452a8a137bc2d030a3cd47c46908efc615bbc699da" +checksum = "968b124028960201abf6d6bf8e223f15fadebb4307df6b7dc9244a0aab5d2d05" dependencies = [ "ark-bls12-381", "ark-bn254", @@ -5935,22 +5706,20 @@ dependencies = [ "c-kzg", "cfg-if", "k256", - "kzg-rs", - "libsecp256k1", "p256", "revm-primitives", "ripemd", "rug", "secp256k1 0.31.1", - "sha2 0.10.9", + "sha2", "substrate-bn", ] [[package]] name = "revm-primitives" -version = "20.2.1" +version = "21.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa29d9da06fe03b249b6419b33968ecdf92ad6428e2f012dc57bcd619b5d94e" +checksum = "29e161db429d465c09ba9cbff0df49e31049fe6b549e28eb0b7bd642fcbd4412" dependencies = [ "alloy-primitives", "num_enum", @@ -5960,9 +5729,9 @@ dependencies = [ [[package]] name = "revm-state" -version = "7.0.5" +version = "8.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f64fbacb86008394aaebd3454f9643b7d5a782bd251135e17c5b33da592d84d" +checksum = "7d8be953b7e374dbdea0773cf360debed8df394ea8d82a8b240a6b5da37592fc" dependencies = [ "bitflags", "revm-bytecode", @@ -6058,7 +5827,7 @@ dependencies = [ "regex", "relative-path", "rustc_version 0.4.1", - "syn 2.0.107", + "syn 2.0.109", "unicode-ident", ] @@ -6088,7 +5857,7 @@ dependencies = [ "bytes", "fastrlp 0.3.1", "fastrlp 0.4.0", - "num-bigint 0.4.6", + "num-bigint", "num-integer", "num-traits", "parity-scale-codec", @@ -6123,7 +5892,7 @@ dependencies = [ "libm", "num-traits", "serde", - "sha2 0.10.9", + "sha2", "thiserror 2.0.17", ] @@ -6182,14 +5951,14 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.34" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "once_cell", "ring", @@ -6201,9 +5970,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" dependencies = [ "web-time", "zeroize", @@ -6211,9 +5980,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.7" +version = "0.103.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" +checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" dependencies = [ "ring", "rustls-pki-types", @@ -6267,9 +6036,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" +checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" dependencies = [ "dyn-clone", "ref-cast", @@ -6402,15 +6171,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde_arrays" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a16b99c5ea4fe3daccd14853ad260ec00ea043b2708d1fd1da3106dcd8d9df" -dependencies = [ - "serde", -] - [[package]] name = "serde_core" version = "1.0.228" @@ -6428,7 +6188,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -6453,7 +6213,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -6489,7 +6249,7 @@ dependencies = [ "indexmap 1.9.3", "indexmap 2.12.0", "schemars 0.9.0", - "schemars 1.0.4", + "schemars 1.1.0", "serde_core", "serde_json", "serde_with_macros", @@ -6505,7 +6265,7 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -6529,19 +6289,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - [[package]] name = "sha2" version = "0.10.9" @@ -6633,7 +6380,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ - "num-bigint 0.4.6", + "num-bigint", "num-traits", "thiserror 2.0.17", "time", @@ -6683,52 +6430,6 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "sp1-lib" -version = "5.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce8ad0f153443d09d398eccb650a0b2dcbf829470e394e4bf60ec4379c7af93" -dependencies = [ - "bincode 1.3.3", - "serde", - "sp1-primitives", -] - -[[package]] -name = "sp1-primitives" -version = "5.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0244dee3a7a0f88cf71c3edf518f4fc97794ae870a107cbe7c810ac3fbf879cb" -dependencies = [ - "bincode 1.3.3", - "blake3", - "cfg-if", - "hex", - "lazy_static", - "num-bigint 0.4.6", - "p3-baby-bear", - "p3-field", - "p3-poseidon2", - "p3-symmetric", - "serde", - "sha2 0.10.9", -] - -[[package]] -name = "sp1_bls12_381" -version = "0.8.0-sp1-5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac255e1704ebcdeec5e02f6a0ebc4d2e9e6b802161938330b6810c13a610c583" -dependencies = [ - "cfg-if", - "ff", - "group", - "pairing", - "rand_core 0.6.4", - "sp1-lib", - "subtle", -] - [[package]] name = "spin" version = "0.9.8" @@ -6793,7 +6494,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -6828,9 +6529,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.107" +version = "2.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b" +checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f" dependencies = [ "proc-macro2", "quote", @@ -6846,7 +6547,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -6866,7 +6567,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -6911,7 +6612,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -6930,7 +6631,7 @@ dependencies = [ "getrandom 0.3.4", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -6968,7 +6669,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -6979,7 +6680,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -7042,9 +6743,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -7090,7 +6791,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -7143,9 +6844,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.16" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" +checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" dependencies = [ "bytes", "futures-core", @@ -7324,7 +7025,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -7445,9 +7146,9 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicode-ident" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" +checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" [[package]] name = "unicode-segmentation" @@ -7585,9 +7286,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" +checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" dependencies = [ "cfg-if", "once_cell", @@ -7596,25 +7297,11 @@ dependencies = [ "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.104" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn 2.0.107", - "wasm-bindgen-shared", -] - [[package]] name = "wasm-bindgen-futures" -version = "0.4.54" +version = "0.4.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" +checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" dependencies = [ "cfg-if", "js-sys", @@ -7625,9 +7312,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" +checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7635,22 +7322,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" +checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn 2.0.107", - "wasm-bindgen-backend", + "syn 2.0.109", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.104" +version = "0.2.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" dependencies = [ "unicode-ident", ] @@ -7671,9 +7358,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.81" +version = "0.3.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" +checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" dependencies = [ "js-sys", "wasm-bindgen", @@ -7695,14 +7382,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.3", + "webpki-roots 1.0.4", ] [[package]] name = "webpki-roots" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" +checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" dependencies = [ "rustls-pki-types", ] @@ -7788,7 +7475,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -7799,7 +7486,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -8062,9 +7749,9 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "ws_stream_wasm" @@ -8096,11 +7783,10 @@ dependencies = [ [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -8108,13 +7794,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", "synstructure", ] @@ -8135,7 +7821,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] @@ -8155,7 +7841,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", "synstructure", ] @@ -8176,14 +7862,14 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" dependencies = [ "displaydoc", "yoke", @@ -8192,9 +7878,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -8203,11 +7889,11 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.107", + "syn 2.0.109", ] diff --git a/Cargo.toml b/Cargo.toml index 03947817..460416dd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -83,29 +83,29 @@ celo-revm = { version = "0.1.0", path = "crates/celo-revm", default-features = f celo-otel = { version = "0.1.0", path = "crates/celo-otel", default-features = false } # Binaries -kona-host = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } -kona-client = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } +kona-host = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } +kona-client = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } # Protocol -kona-driver = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } -kona-derive = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } -kona-genesis = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } -kona-protocol = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } -kona-registry = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } +kona-driver = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } +kona-derive = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } +kona-genesis = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } +kona-protocol = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } +kona-registry = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } # Providers -kona-providers-alloy = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } +kona-providers-alloy = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } # Proof -kona-mpt = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } -kona-proof = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } -kona-executor = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } -kona-std-fpvm = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } -kona-preimage = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } -kona-std-fpvm-proc = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } +kona-mpt = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } +kona-proof = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } +kona-executor = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } +kona-std-fpvm = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } +kona-preimage = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } +kona-std-fpvm-proc = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } # Utilities -kona-cli = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.6", default-features = false } +kona-cli = { git = "https://github.com/op-rs/kona", tag = "kona-client/v1.1.7", default-features = false } # Alloy alloy-rlp = { version = "0.3.12", default-features = false } @@ -115,41 +115,41 @@ alloy-serde = { version = "1.0.38", default-features = false } alloy-chains = { version = "0.2.7", default-features = false } alloy-network = { version = "1.0.38", default-features = false } alloy-provider = { version = "1.0.38", default-features = false } -alloy-hardforks = { version = "0.3.5", default-features = false } -alloy-sol-types = { version = "1.3.1", default-features = false } +alloy-hardforks = { version = "0.4.4", default-features = false } +alloy-sol-types = { version = "1.4.1", default-features = false } alloy-consensus = { version = "1.0.38", default-features = false } alloy-transport = { version = "1.0.38", default-features = false } alloy-rpc-types = { version = "1.0.38", default-features = false } alloy-rpc-client = { version = "1.0.38", default-features = false } -alloy-primitives = { version = "1.3.1", default-features = false } +alloy-primitives = { version = "1.4.1", default-features = false } alloy-rpc-types-eth = { version = "1.0.38", default-features = false } alloy-transport-http = { version = "1.0.38", default-features = false } alloy-rpc-types-engine = { version = "1.0.38", default-features = false } alloy-network-primitives = { version = "1.0.38", default-features = false } # OP Alloy -alloy-op-hardforks = { version = "0.3.5", default-features = false } -op-alloy-consensus = { version = "0.20.0", default-features = false } -op-alloy-rpc-types = { version = "0.20.0", default-features = false } -op-alloy-rpc-types-engine = { version = "0.20.0", default-features = false } +alloy-op-hardforks = { version = "0.4.4", default-features = false } +op-alloy-consensus = { version = "0.22.0", default-features = false } +op-alloy-rpc-types = { version = "0.22.0", default-features = false } +op-alloy-rpc-types-engine = { version = "0.22.0", default-features = false } # Execution -revm = { version = "29.0.1", default-features = false } -op-revm = { version = "10.1.0", default-features = false } -alloy-evm = { version = "0.21.0", default-features = false } -alloy-op-evm = { version = "0.21.0", default-features = false } +revm = { version = "31.0.1", default-features = false } +op-revm = { version = "12.0.1", default-features = false } +alloy-evm = { version = "0.23.1", default-features = false } +alloy-op-evm = { version = "0.23.1", default-features = false } # Dependencies not in upstream kona-client # These are kept separately to make it easier to compare and update the versions above -revm-context-interface = { version = "10.2.0", default-features = false } -revm-handler = { version = "10.0.0", default-features = false } -revm-context = { version = "9.0.2", default-features = false } +revm-context-interface = { version = "12.0.1", default-features = false } +revm-handler = { version = "12.0.1", default-features = false } +revm-context = { version = "11.0.1", default-features = false } alloy-signer = { version = "1.0.38", default-features = false } # Hokulea -hokulea-eigenda = { git = "https://github.com/Layr-Labs/hokulea", rev = "90404fb", default-features = false} -hokulea-proof = { git = "https://github.com/Layr-Labs/hokulea", rev = "90404fb", default-features = false} -hokulea-host-bin = { git = "https://github.com/Layr-Labs/hokulea", rev = "90404fb", default-features = false} +hokulea-eigenda = { git = "https://github.com/Layr-Labs/hokulea", tag = "hokulea-client/v1.0.2", default-features = false } +hokulea-proof = { git = "https://github.com/Layr-Labs/hokulea", tag = "hokulea-client/v1.0.2", default-features = false } +hokulea-host-bin = { git = "https://github.com/Layr-Labs/hokulea", tag = "hokulea-client/v1.0.2", default-features = false } # General url = "2.5.4" @@ -206,18 +206,18 @@ opentelemetry-appender-tracing = "0.30.1" uuid = { version = "1", features = ["v4"] } [patch."https://github.com/op-rs/kona"] -kona-host = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-client = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-driver = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-derive = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-genesis = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-protocol = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-registry = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-providers-alloy = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-mpt = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-proof = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-executor = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-std-fpvm = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-preimage = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-std-fpvm-proc = { git = "https://github.com/celo-org/kona", rev = "2c33430" } -kona-cli = { git = "https://github.com/celo-org/kona", rev = "2c33430" } +kona-host = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-client = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-driver = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-derive = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-genesis = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-protocol = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-registry = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-providers-alloy = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-mpt = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-proof = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-executor = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-std-fpvm = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-preimage = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-std-fpvm-proc = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } +kona-cli = { git = "https://github.com/celo-org/kona", rev = "b0ea596" } diff --git a/bin/host/src/single/handler.rs b/bin/host/src/single/handler.rs index 0f8853ab..463d0283 100644 --- a/bin/host/src/single/handler.rs +++ b/bin/host/src/single/handler.rs @@ -53,6 +53,7 @@ impl HintHandler for CeloSingleChainHintHandler { &SingleChainHostWithEigenDA { kona_cfg: cfg.kona_cfg.clone(), eigenda_proxy_address: cfg.eigenda_proxy_address.clone(), + recency_window: 0, verbose: cfg.verbose, }, &SingleChainProvidersWithEigenDA { diff --git a/crates/alloy-celo-evm/Cargo.toml b/crates/alloy-celo-evm/Cargo.toml index 86c3b753..57c4dab1 100644 --- a/crates/alloy-celo-evm/Cargo.toml +++ b/crates/alloy-celo-evm/Cargo.toml @@ -26,7 +26,7 @@ op-alloy-consensus.workspace = true revm.workspace = true op-revm.workspace = true -celo-revm = { version = "0.1.0", path = "../celo-revm", default-features = false } +celo-revm = { version = "0.1.0", path = "../celo-revm", default-features = false, features = ["alloy-op-evm"] } spin.workspace = true [dev-dependencies] diff --git a/crates/alloy-celo-evm/src/block/receipt_builder.rs b/crates/alloy-celo-evm/src/block/receipt_builder.rs index 52f994ae..316e23ed 100644 --- a/crates/alloy-celo-evm/src/block/receipt_builder.rs +++ b/crates/alloy-celo-evm/src/block/receipt_builder.rs @@ -11,6 +11,7 @@ use core::fmt::Debug; use op_alloy_consensus::OpDepositReceipt; use crate::cip64_storage::{Cip64Storage, get_tx_identifier, none_tx_identifier}; +use revm::context_interface::Block; /// Receipt builder operating on celo-alloy types. #[derive(Debug, Clone, Default)] @@ -47,7 +48,7 @@ impl OpReceiptBuilder for CeloAlloyReceiptBuilder { ) -> Result> { match ctx.tx.tx_type() { CeloTxType::Cip64 => { - let base_fee = ctx.evm.block().basefee as u128; + let base_fee = ctx.evm.block().basefee() as u128; // For CIP-64 transactions, calculate the base fee in ERC20 let base_fee_in_erc20 = if let CeloTxEnvelope::Cip64(cip64) = ctx.tx { if cip64.tx().fee_currency.is_none() { diff --git a/crates/alloy-celo-evm/src/lib.rs b/crates/alloy-celo-evm/src/lib.rs index 94294642..23393831 100644 --- a/crates/alloy-celo-evm/src/lib.rs +++ b/crates/alloy-celo-evm/src/lib.rs @@ -110,6 +110,7 @@ where type Error = EVMError; type HaltReason = OpHaltReason; type Spec = OpSpecId; + type BlockEnv = BlockEnv; type Precompiles = CeloPrecompiles; type Inspector = I; @@ -277,6 +278,7 @@ impl EvmFactory for CeloEvmFactory { EVMError; type HaltReason = OpHaltReason; type Spec = OpSpecId; + type BlockEnv = BlockEnv; type Precompiles = CeloPrecompiles; fn create_evm( diff --git a/crates/celo-revm/Cargo.toml b/crates/celo-revm/Cargo.toml index a651aa89..a1fb6fe2 100644 --- a/crates/celo-revm/Cargo.toml +++ b/crates/celo-revm/Cargo.toml @@ -8,6 +8,7 @@ keywords.workspace = true license.workspace = true repository.workspace = true readme.workspace = true +rust-version.workspace = true [package.metadata.docs.rs] all-features = true @@ -26,7 +27,7 @@ all = "warn" celo-alloy-consensus.workspace = true # revm -revm = { workspace = true } +revm.workspace = true op-revm = { workspace = true, features = ["serde"] } revm-context-interface.workspace = true @@ -38,6 +39,7 @@ alloy-evm.workspace = true # OP Alloy op-alloy-consensus.workspace = true alloy-sol-types.workspace = true +alloy-op-evm = { workspace = true, optional = true } # misc auto_impl.workspace = true @@ -55,12 +57,14 @@ alloy-eips.workspace = true revm-handler.workspace = true [features] -default = ["std", "c-kzg", "secp256k1", "portable", "blst"] +default = ["std", "c-kzg", "secp256k1", "portable", "blst", "alloy-op-evm"] std = [ "serde?/std", "revm/std", "tracing/std", + "alloy-op-evm?/std", ] +alloy-op-evm = ["dep:alloy-op-evm"] hashbrown = ["revm/hashbrown"] serde = [ "dep:serde", @@ -85,8 +89,6 @@ optional_no_base_fee = ["revm/optional_no_base_fee"] # See comments in `revm-precompile` secp256k1 = ["revm/secp256k1"] c-kzg = ["revm/c-kzg"] -# `kzg-rs` is not audited but useful for `no_std` environment, use it with causing and default to `c-kzg` if possible. -kzg-rs = ["revm/kzg-rs"] blst = ["revm/blst"] bn = ["revm/bn"] serde-bincode-compat = [ diff --git a/crates/celo-revm/src/contracts/core_contracts.rs b/crates/celo-revm/src/contracts/core_contracts.rs index d36e79b3..6ec7d111 100644 --- a/crates/celo-revm/src/contracts/core_contracts.rs +++ b/crates/celo-revm/src/contracts/core_contracts.rs @@ -1,3 +1,19 @@ +//! # System calls for interacting with Celo core contracts +//! +//! System calls are executed without calling `finalize()`, using a "keep by default" approach +//! where state changes (accounts, storage) remain in the EVM's journal. This avoids needing +//! `set_storage` (which is not in upstream revm) to manually merge state back after system calls. +//! +//! When the main transaction reverts, fee debit changes persist because the main +//! transaction is executed as a subcall with automatic checkpoint/revert handling (see +//! [`make_call_frame`](https://github.com/bluealloy/revm/blob/main/crates/handler/src/frame.rs)). +//! +//! # Key Behaviors +//! - **State changes**: Remain in the journal (accounts, storage, etc.) +//! - **Logs**: Extracted and cleared from journal during `ExecutionResult` creation +//! - **Transient storage**: Explicitly cleared after each system call (EIP-1153 requirement) +//! - **transaction_id**: Restored to keep warmed addresses from system call + use crate::{CeloContext, constants::get_addresses, evm::CeloEvm}; use alloy_primitives::{ Address, Bytes, U256, hex, @@ -5,12 +21,11 @@ use alloy_primitives::{ }; use alloy_sol_types::{SolCall, SolType, sol, sol_data}; use revm::{ - Database, ExecuteEvm, + Database, context_interface::ContextTr, handler::{EvmTr, SystemCallEvm}, inspector::Inspector, primitives::Log, - state::EvmState, }; use revm_context_interface::{ ContextSetters, @@ -69,19 +84,37 @@ pub fn get_revert_message(output: Bytes) -> String { } } -/// Call a core contract function and return the result. +/// Call a core contract in read-only mode (checkpoint/revert to discard state changes). +pub fn call_read_only( + evm: &mut CeloEvm, + address: Address, + calldata: Bytes, + gas_limit: Option, +) -> Result<(Bytes, Vec, u64), CoreContractError> +where + DB: Database, + INSP: Inspector>, +{ + let checkpoint = evm.ctx().journal_mut().checkpoint(); + let result = call(evm, address, calldata, gas_limit); + evm.ctx().journal_mut().checkpoint_revert(checkpoint); + result +} + +/// Call a core contract function. State changes remain in the EVM's journal. pub fn call( evm: &mut CeloEvm, address: Address, calldata: Bytes, gas_limit: Option, -) -> Result<(Bytes, EvmState, Vec, u64), CoreContractError> +) -> Result<(Bytes, Vec, u64), CoreContractError> where DB: Database, INSP: Inspector>, { - // Preserve the tx set in the evm before the call to restore it afterwards + // Preserve the tx and transaction_id to restore afterwards let prev_tx = evm.ctx().tx().clone(); + let prev_transaction_id = evm.ctx().journal_ref().transaction_id; let call_result = if let Some(limit) = gas_limit { evm.transact_system_call_with_gas_limit(address, calldata, limit) @@ -91,27 +124,24 @@ where // Restore the original transaction context evm.ctx().set_tx(prev_tx); + // Clear transient storage (EIP-1153) + evm.ctx().journal_mut().transient_storage.clear(); + // Restore transaction_id for correct warm/cold accounting + evm.ctx().journal_mut().transaction_id = prev_transaction_id; let exec_result = match call_result { Err(e) => return Err(CoreContractError::Evm(e.to_string())), Ok(o) => o, }; - // Get logs from the execution result - let logs_from_call = match &exec_result { - ExecutionResult::Success { logs, .. } => logs.clone(), - _ => Vec::new(), - }; - - let state = evm.finalize(); - // Check success match exec_result { ExecutionResult::Success { output: Output::Call(bytes), gas_used, + logs, .. - } => Ok((bytes, state, logs_from_call, gas_used)), + } => Ok((bytes, logs, gas_used)), ExecutionResult::Halt { reason, .. } => Err(CoreContractError::ExecutionFailed(format!( "halt: {reason:?}" ))), @@ -131,7 +161,7 @@ where INSP: Inspector>, { let fee_curr_dir = get_addresses(evm.ctx_ref().cfg().chain_id).fee_currency_directory; - let call_result = call( + let call_result = call_read_only( evm, fee_curr_dir, getCurrenciesCall {}.abi_encode().into(), @@ -139,7 +169,7 @@ where ); let output_bytes = match call_result { - Ok((bytes, _, _, _)) => bytes, + Ok((bytes, _, _)) => bytes, Err(e) => { debug!(target: "celo_core_contracts", "get_currencies: failed to call 0x{:x}: {}", fee_curr_dir, e); return Vec::new(); @@ -176,7 +206,7 @@ where HashMap::with_capacity_and_hasher(currencies.len(), DefaultHashBuilder::default()); for token in currencies { - let call_result = call( + let call_result = call_read_only( evm, get_addresses(evm.ctx_ref().cfg().chain_id).fee_currency_directory, getExchangeRateCall { token: *token }.abi_encode().into(), @@ -184,7 +214,7 @@ where ); let output_bytes = match call_result { - Ok((bytes, _, _, _)) => bytes, + Ok((bytes, _, _)) => bytes, Err(e) => { debug!(target: "celo_core_contracts", "get_exchange_rates: failed to call for token 0x{:x}: {}", token, e); continue; @@ -218,7 +248,7 @@ where HashMap::with_capacity_and_hasher(currencies.len(), DefaultHashBuilder::default()); for token in currencies { - let (output_bytes, _, _, _) = call( + let (output_bytes, _, _) = call_read_only( evm, get_addresses(evm.ctx_ref().cfg().chain_id).fee_currency_directory, getCurrencyConfigCall { token: *token }.abi_encode().into(), diff --git a/crates/celo-revm/src/contracts/erc20.rs b/crates/celo-revm/src/contracts/erc20.rs index 00968400..2c27d7e3 100644 --- a/crates/celo-revm/src/contracts/erc20.rs +++ b/crates/celo-revm/src/contracts/erc20.rs @@ -6,7 +6,6 @@ use alloy_sol_types::{SolCall, sol}; use revm::{ Database, Inspector, primitives::{Address, Log, U256}, - state::EvmState, }; use std::vec::Vec; @@ -48,22 +47,23 @@ where .abi_encode() .into(); - // Use the existing call function from core_contracts - let (output_bytes, _, _, _) = core_contracts::call(evm, token_address, calldata, None)?; + // Use the read-only call function to ensure no state changes + let (output_bytes, _, _) = core_contracts::call_read_only(evm, token_address, calldata, None)?; // Decode the balance IFeeCurrencyERC20::balanceOfCall::abi_decode_returns(&output_bytes) .map_err(CoreContractError::from) } -/// Call debitGasFees to deduct gas fees from the fee currency +/// Call debitGasFees to deduct gas fees from the fee currency. +/// State changes remain in the EVM's journal for the main transaction to see. pub fn debit_gas_fees( evm: &mut CeloEvm, fee_currency_address: Address, from: Address, value: U256, gas_limit: u64, -) -> Result<(EvmState, Vec, u64), CoreContractError> +) -> Result<(Vec, u64), CoreContractError> where DB: Database, INSP: Inspector>, @@ -73,12 +73,13 @@ where .into(); // debitGasFees returns void, so we just need to check that the call succeeded - let (_, state, logs, gas_used) = + let (_, logs, gas_used) = core_contracts::call(evm, fee_currency_address, calldata, Some(gas_limit))?; - Ok((state, logs, gas_used)) + Ok((logs, gas_used)) } -/// Call creditGasFees to distribute gas fees +/// Call creditGasFees to distribute gas fees. +/// State changes remain in the EVM's journal for the main transaction to see. #[allow(clippy::too_many_arguments)] pub fn credit_gas_fees( evm: &mut CeloEvm, @@ -90,7 +91,7 @@ pub fn credit_gas_fees( tip_tx_fee: U256, base_tx_fee: U256, gas_limit: u64, -) -> Result<(EvmState, Vec, u64), CoreContractError> +) -> Result<(Vec, u64), CoreContractError> where DB: Database, INSP: Inspector>, @@ -109,9 +110,9 @@ where .into(); // creditGasFees returns void, so we just need to check that the call succeeded - let (_, state, logs, gas_used) = + let (_, logs, gas_used) = core_contracts::call(evm, fee_currency_address, calldata, Some(gas_limit))?; - Ok((state, logs, gas_used)) + Ok((logs, gas_used)) } #[cfg(test)] diff --git a/crates/celo-revm/src/contracts/mod.rs b/crates/celo-revm/src/contracts/mod.rs index a781b009..c9531b3a 100644 --- a/crates/celo-revm/src/contracts/mod.rs +++ b/crates/celo-revm/src/contracts/mod.rs @@ -5,7 +5,6 @@ pub mod erc20; // Re-export commonly used items for convenience pub use core_contracts::{ - CoreContractError, call, get_currencies, get_exchange_rates, get_intrinsic_gas, - get_revert_message, + CoreContractError, get_currencies, get_exchange_rates, get_intrinsic_gas, get_revert_message, }; -pub use erc20::{IFeeCurrencyERC20, credit_gas_fees, debit_gas_fees, get_balance}; +pub use erc20::{IFeeCurrencyERC20, get_balance}; diff --git a/crates/celo-revm/src/evm.rs b/crates/celo-revm/src/evm.rs index ed7add0b..38c69fdc 100644 --- a/crates/celo-revm/src/evm.rs +++ b/crates/celo-revm/src/evm.rs @@ -1,15 +1,17 @@ use crate::{CeloContext, CeloPrecompiles, fee_currency_context::FeeCurrencyContext}; use op_revm::{OpEvm, OpSpecId}; use revm::{ - Inspector, - context::{Evm, FrameStack}, + Database, Inspector, + context::{ContextError, Evm, FrameStack}, context_interface::{Cfg, ContextTr}, - handler::{EvmTr, instructions::EthInstructions}, + handler::{ + EvmTr, FrameInitOrResult, ItemOrResult, evm::FrameTr, instructions::EthInstructions, + }, inspector::InspectorEvmTr, interpreter::interpreter::EthInterpreter, }; -pub struct CeloEvm { +pub struct CeloEvm { pub inner: OpEvm< CeloContext, INSP, @@ -21,7 +23,7 @@ pub struct CeloEvm { impl CeloEvm where - DB: revm::Database, + DB: Database, { pub fn new(ctx: CeloContext, inspector: INSP) -> Self { Self { @@ -60,40 +62,41 @@ where impl InspectorEvmTr for CeloEvm where - DB: revm::Database, + DB: Database, INSP: Inspector, EthInterpreter>, { type Inspector = INSP; - fn inspector(&mut self) -> &mut Self::Inspector { - self.inner.inspector() - } - - fn ctx_inspector(&mut self) -> (&mut Self::Context, &mut Self::Inspector) { - self.inner.ctx_inspector() - } - - fn ctx_inspector_frame( - &mut self, - ) -> (&mut Self::Context, &mut Self::Inspector, &mut Self::Frame) { - self.inner.ctx_inspector_frame() + #[inline] + fn all_inspector( + &self, + ) -> ( + &Self::Context, + &Self::Instructions, + &Self::Precompiles, + &FrameStack, + &Self::Inspector, + ) { + self.inner.all_inspector() } - fn ctx_inspector_frame_instructions( + #[inline] + fn all_mut_inspector( &mut self, ) -> ( &mut Self::Context, - &mut Self::Inspector, - &mut Self::Frame, &mut Self::Instructions, + &mut Self::Precompiles, + &mut FrameStack, + &mut Self::Inspector, ) { - self.inner.ctx_inspector_frame_instructions() + self.inner.all_mut_inspector() } } impl EvmTr for CeloEvm where - DB: revm::Database, + DB: Database, CeloContext: ContextTr>, { type Context = CeloContext; @@ -106,63 +109,57 @@ where CeloPrecompiles, > as EvmTr>::Frame; - fn ctx(&mut self) -> &mut Self::Context { - self.inner.ctx() - } - - fn ctx_ref(&self) -> &Self::Context { - self.inner.ctx_ref() - } - - fn ctx_instructions(&mut self) -> (&mut Self::Context, &mut Self::Instructions) { - self.inner.ctx_instructions() - } - - fn ctx_precompiles(&mut self) -> (&mut Self::Context, &mut Self::Precompiles) { - self.inner.ctx_precompiles() + #[inline] + fn all( + &self, + ) -> ( + &Self::Context, + &Self::Instructions, + &Self::Precompiles, + &FrameStack, + ) { + self.inner.all() } - fn frame_stack(&mut self) -> &mut FrameStack { - self.inner.frame_stack() + #[inline] + fn all_mut( + &mut self, + ) -> ( + &mut Self::Context, + &mut Self::Instructions, + &mut Self::Precompiles, + &mut FrameStack, + ) { + self.inner.all_mut() } fn frame_init( &mut self, - frame_init: ::FrameInit, + frame_input: ::FrameInit, ) -> Result< - revm::handler::ItemOrResult< - &mut Self::Frame, - ::FrameResult, - >, - revm::context_interface::context::ContextError< - <<::Context as ContextTr>::Db as revm::Database>::Error, - >, + ItemOrResult<&mut Self::Frame, ::FrameResult>, + ContextError<<::Db as Database>::Error>, > { - self.inner.frame_init(frame_init) + self.inner.frame_init(frame_input) } fn frame_run( &mut self, ) -> Result< - revm::handler::ItemOrResult< - ::FrameInit, - ::FrameResult, - >, - revm::context_interface::context::ContextError< - <<::Context as ContextTr>::Db as revm::Database>::Error, - >, + FrameInitOrResult, + ContextError<<::Db as Database>::Error>, > { self.inner.frame_run() } + #[doc = " Returns the result of the frame to the caller. Frame is popped from the frame stack."] + #[doc = " Consumes the frame result or returns it if there is more frames to run."] fn frame_return_result( &mut self, - result: ::FrameResult, + result: ::FrameResult, ) -> Result< - Option<::FrameResult>, - revm::context_interface::context::ContextError< - <<::Context as ContextTr>::Db as revm::Database>::Error, - >, + Option<::FrameResult>, + ContextError<<::Db as Database>::Error>, > { self.inner.frame_return_result(result) } @@ -299,7 +296,7 @@ mod tests { )); } - fn bn128_pair_test_tx( + fn bn254_pair_test_tx( spec: OpSpecId, ) -> Context< BlockEnv, @@ -323,8 +320,8 @@ mod tests { } #[test] - fn test_halted_tx_call_bn128_pair_fjord() { - let ctx = bn128_pair_test_tx(OpSpecId::FJORD); + fn test_halted_tx_call_bn254_pair_fjord() { + let ctx = bn254_pair_test_tx(OpSpecId::FJORD); let mut evm = ctx.build_celo(); let output = evm.replay().unwrap(); @@ -340,8 +337,8 @@ mod tests { } #[test] - fn test_halted_tx_call_bn128_pair_granite() { - let ctx = bn128_pair_test_tx(OpSpecId::GRANITE); + fn test_halted_tx_call_bn254_pair_granite() { + let ctx = bn254_pair_test_tx(OpSpecId::GRANITE); let mut evm = ctx.build_celo(); let output = evm.replay().unwrap(); @@ -350,9 +347,9 @@ mod tests { assert!(matches!( output.result, ExecutionResult::Halt { - reason: OpHaltReason::Base(HaltReason::PrecompileError), + reason: OpHaltReason::Base(HaltReason::PrecompileErrorWithContext(ref msg)), .. - } + } if msg == "bn254 invalid pair length" )); } @@ -403,9 +400,9 @@ mod tests { assert!(matches!( output.result, ExecutionResult::Halt { - reason: OpHaltReason::Base(HaltReason::PrecompileError), + reason: OpHaltReason::Base(HaltReason::PrecompileErrorWithContext(ref msg)), .. - } + } if msg == "bls12-381 g1 add input length error" )); } @@ -453,9 +450,9 @@ mod tests { assert!(matches!( output.result, ExecutionResult::Halt { - reason: OpHaltReason::Base(HaltReason::PrecompileError), + reason: OpHaltReason::Base(HaltReason::PrecompileErrorWithContext(ref msg)), .. - } + } if msg == "bls12-381 g1 msm input length error" )); } @@ -487,9 +484,9 @@ mod tests { assert!(matches!( output.result, ExecutionResult::Halt { - reason: OpHaltReason::Base(HaltReason::PrecompileError), + reason: OpHaltReason::Base(HaltReason::PrecompileErrorWithContext(ref msg)), .. - } + } if msg == "bls12-381 fp 64 top bytes of input are not zero" )); } @@ -541,9 +538,9 @@ mod tests { assert!(matches!( output.result, ExecutionResult::Halt { - reason: OpHaltReason::Base(HaltReason::PrecompileError), + reason: OpHaltReason::Base(HaltReason::PrecompileErrorWithContext(ref msg)), .. - } + } if msg == "bls12-381 g2 add input length error" )); } @@ -591,9 +588,9 @@ mod tests { assert!(matches!( output.result, ExecutionResult::Halt { - reason: OpHaltReason::Base(HaltReason::PrecompileError), + reason: OpHaltReason::Base(HaltReason::PrecompileErrorWithContext(ref msg)), .. - } + } if msg == "bls12-381 g2 msm input length error" )); } @@ -625,9 +622,9 @@ mod tests { assert!(matches!( output.result, ExecutionResult::Halt { - reason: OpHaltReason::Base(HaltReason::PrecompileError), + reason: OpHaltReason::Base(HaltReason::PrecompileErrorWithContext(ref msg)), .. - } + } if msg == "bls12-381 fp 64 top bytes of input are not zero" )); } @@ -673,9 +670,9 @@ mod tests { assert!(matches!( output.result, ExecutionResult::Halt { - reason: OpHaltReason::Base(HaltReason::PrecompileError), + reason: OpHaltReason::Base(HaltReason::PrecompileErrorWithContext(ref msg)), .. - } + } if msg == "bls12-381 pairing input length error" )); } @@ -707,9 +704,9 @@ mod tests { assert!(matches!( output.result, ExecutionResult::Halt { - reason: OpHaltReason::Base(HaltReason::PrecompileError), + reason: OpHaltReason::Base(HaltReason::PrecompileErrorWithContext(ref msg)), .. - } + } if msg == "bls12-381 fp 64 top bytes of input are not zero" )); } @@ -769,9 +766,9 @@ mod tests { assert!(matches!( output.result, ExecutionResult::Halt { - reason: OpHaltReason::Base(HaltReason::PrecompileError), + reason: OpHaltReason::Base(HaltReason::PrecompileErrorWithContext(ref msg)), .. - } + } if msg == "bls12-381 map fp to g1 input length error" )); } @@ -831,9 +828,9 @@ mod tests { assert!(matches!( output.result, ExecutionResult::Halt { - reason: OpHaltReason::Base(HaltReason::PrecompileError), + reason: OpHaltReason::Base(HaltReason::PrecompileErrorWithContext(ref msg)), .. - } + } if msg == "bls12-381 map fp2 to g2 input length error" )); } } diff --git a/crates/celo-revm/src/handler.rs b/crates/celo-revm/src/handler.rs index b8266dd0..ebc9edc1 100644 --- a/crates/celo-revm/src/handler.rs +++ b/crates/celo-revm/src/handler.rs @@ -18,9 +18,10 @@ use op_revm::{ }; use revm::{ Database, Inspector, + context::{LocalContextTr, result::InvalidTransaction}, context_interface::{ - Block, Cfg, ContextTr, JournalTr, Transaction, - result::{ExecutionResult, FromStringError, InvalidTransaction}, + Block, Cfg, ContextSetters, ContextTr, JournalTr, Transaction, + result::{ExecutionResult, FromStringError}, }, handler::{ EvmTr, FrameResult, Handler, MainnetHandler, evm::FrameTr, handler::EvmTrError, @@ -31,9 +32,7 @@ use revm::{ InitialAndFloorGas, gas::calculate_initial_tx_gas_for_tx, interpreter::EthInterpreter, }, primitives::{U256, hardfork::SpecId}, - state::EvmState, }; -use revm_context_interface::{ContextSetters, LocalContextTr}; use std::{boxed::Box, format, string::ToString, vec::Vec}; use tracing::{info, warn}; @@ -84,33 +83,6 @@ where Ok(()) } - /// Apply state changes from an EvmState to the current execution journal. - fn apply_state_to_journal( - &self, - evm: &mut CeloEvm, - state: EvmState, - ) -> Result<(), ERROR> { - for (address, account) in state { - let mut loaded_account = evm.ctx().journal_mut().load_account(address)?; - - // Apply the account changes to the loaded account - loaded_account.data.info.balance = account.info.balance; - loaded_account.data.info.nonce = account.info.nonce; - loaded_account.data.info.code_hash = account.info.code_hash; - loaded_account.data.info.code = account.info.code; - - // Apply storage changes (iterate by reference to avoid moving) - for (key, value) in &account.storage { - loaded_account.data.storage.insert(*key, value.clone()); - } - - // Always mark the account as touched since we've modified its state - // This ensures it will be included in the final transaction state - loaded_account.mark_touch(); - } - Ok(()) - } - fn cip64_get_base_fee_in_erc20( &self, evm: &mut CeloEvm, @@ -205,7 +177,7 @@ where .actual_intrinsic_gas_used, ); - let (state, logs, gas_used) = erc20::credit_gas_fees( + let (logs, gas_used) = erc20::credit_gas_fees( evm, fee_currency.unwrap(), caller, @@ -218,8 +190,6 @@ where ) .map_err(|e| ERROR::from_string(format!("Failed to credit gas fees: {e}")))?; - // Apply the state changes from the system call to the current execution context - self.apply_state_to_journal(evm, state)?; // Collect logs from the system call to be included in the final receipt let mut tx = evm.ctx().tx().clone(); let old_cip64_tx_info = tx.cip64_tx_info.as_ref().unwrap(); @@ -317,9 +287,9 @@ where } let max_allowed_gas_cost = self.cip64_max_allowed_gas_cost(evm, fee_currency)?; + // For CIP-64 transactions, gas deduction from fee currency we call the erc20::debit_gas_fees function - // The state changes from this call will be part of the transaction execution - let (state, logs, gas_used) = erc20::debit_gas_fees( + let (logs, gas_used) = erc20::debit_gas_fees( evm, fee_currency_addr, caller_addr, @@ -328,8 +298,6 @@ where ) .map_err(|e| ERROR::from_string(format!("Failed to debit gas fees: {e}")))?; - // Apply the state changes from the system call to the current execution context - self.apply_state_to_journal(evm, state)?; // Store CIP64 transaction information by modifying the transaction let mut tx = evm.ctx().tx().clone(); tx.cip64_tx_info = Some(Cip64Info { @@ -482,7 +450,7 @@ where if !is_deposit && !ctx.cfg().is_fee_charge_disabled() { // L1 block info is stored in the context for later use. // and it will be reloaded from the database if it is not for the current block. - if ctx.chain().l2_block != block_number { + if ctx.chain().l2_block != Some(block_number) { *ctx.chain_mut() = L1BlockInfo::try_fetch(ctx.db_mut(), block_number, spec)?; } @@ -499,7 +467,9 @@ where // compute operator fee if spec.is_enabled_in(OpSpecId::ISTHMUS) { let gas_limit = U256::from(ctx.tx().gas_limit()); - let operator_fee_charge = ctx.chain().operator_fee_charge(&enveloped_tx, gas_limit); + let operator_fee_charge = + ctx.chain() + .operator_fee_charge(&enveloped_tx, gas_limit, spec); additional_cost = additional_cost.saturating_add(operator_fee_charge); } } @@ -509,12 +479,12 @@ where } let (tx, journal) = evm.ctx().tx_journal_mut(); - let caller_account = journal.load_account_code(tx.caller())?.data; + let mut caller_account = journal.load_account_with_code_mut(tx.caller())?.data; if !is_deposit { // validates account nonce and code validate_account_nonce_and_code( - &mut caller_account.info, + &caller_account.info, tx.nonce(), is_eip3607_disabled, is_nonce_check_disabled, @@ -523,9 +493,6 @@ where let max_balance_spending = tx.max_balance_spending()?.saturating_add(additional_cost); - // old balance is journaled before mint is incremented. - let old_balance = caller_account.info.balance; - // If the transaction is a deposit with a `mint` value, add the mint value // in wei to the caller's balance. This should be persisted to the database // prior to the rest of execution. @@ -581,20 +548,11 @@ where new_balance = new_balance.max(tx.value()); } - caller_account.info.balance = new_balance; - - // Bump the nonce for calls. Nonce for CREATE will be bumped in `handle_create`. + // make changes to the account + //(for cip64, the set balance won't journal if the balance is the same) + caller_account.set_balance(new_balance); if tx.kind().is_call() { - caller_account.info.nonce = caller_account.info.nonce.saturating_add(1); - } - - // Touch account and journal it only if some change was performed. - if old_balance != new_balance || tx.kind().is_call() { - // Touch account so we know it is changed. - caller_account.mark_touch(); - // NOTE: all changes to the caller account should journaled so in case of error - // we can revert the changes. - journal.caller_accounting_journal_entry(tx.caller(), old_balance, tx.kind().is_call()); + caller_account.bump_nonce(); } Ok(()) @@ -627,15 +585,11 @@ where let spec = context.cfg().spec(); let operator_fee_refund = context.chain().operator_fee_refund(exec_result.gas(), spec); - let caller_account = evm.ctx().journal_mut().load_account(caller)?; - // In additional to the normal transaction fee, additionally refund the caller // for the operator fee. - caller_account.data.info.balance = caller_account - .data - .info - .balance - .saturating_add(operator_fee_refund); + evm.ctx() + .journal_mut() + .balance_incr(caller, operator_fee_refund)?; } Ok(()) @@ -648,57 +602,54 @@ where fn reward_beneficiary( &self, evm: &mut Self::Evm, - exec_result: &mut FrameResult, + frame_result: &mut <::Frame as FrameTr>::FrameResult, ) -> Result<(), Self::Error> { let is_deposit = evm.ctx().tx().tx_type() == DEPOSIT_TRANSACTION_TYPE; // Transfer fee to coinbase/beneficiary. - if !is_deposit && evm.ctx().tx().fee_currency().is_none() { - self.mainnet.reward_beneficiary(evm, exec_result)?; - let basefee = evm.ctx().block().basefee() as u128; - - // If the transaction is not a deposit transaction, fees are paid out - // to both the Base Fee Vault as well as the L1 Fee Vault. - let ctx = evm.ctx(); - let enveloped = ctx.tx().enveloped_tx().cloned(); - let spec = ctx.cfg().spec(); - let l1_block_info = ctx.chain_mut(); - - let Some(enveloped_tx) = &enveloped else { - return Err(ERROR::from_string( - "[OPTIMISM] Failed to load enveloped transaction.".into(), - )); - }; - - let l1_cost = l1_block_info.calculate_tx_l1_cost(enveloped_tx, spec); - let mut operator_fee_cost = U256::ZERO; - if spec.is_enabled_in(OpSpecId::ISTHMUS) { - operator_fee_cost = l1_block_info.operator_fee_charge( - enveloped_tx, - U256::from(exec_result.gas().spent_sub_refunded()), - ); - } - // Send the L1 cost of the transaction to the L1 Fee Vault. - let mut l1_fee_vault_account = - evm.ctx().journal_mut().load_account(L1_FEE_RECIPIENT)?; - l1_fee_vault_account.mark_touch(); - l1_fee_vault_account.data.info.balance += l1_cost; - - // Send the base fee of the transaction to the FeeHandler. - let fee_handler = get_addresses(evm.ctx().cfg().chain_id()).fee_handler; - let mut base_fee_vault_account = evm.ctx().journal_mut().load_account(fee_handler)?; - base_fee_vault_account.mark_touch(); - base_fee_vault_account.data.info.balance += - U256::from(basefee.saturating_mul(exec_result.gas().spent_sub_refunded() as u128)); - - // Send the operator fee of the transaction to the coinbase. - let mut operator_fee_vault_account = evm - .ctx() - .journal_mut() - .load_account(OPERATOR_FEE_RECIPIENT)?; - operator_fee_vault_account.mark_touch(); - operator_fee_vault_account.data.info.balance += operator_fee_cost; + if is_deposit || evm.ctx().tx().fee_currency().is_some() { + return Ok(()); + } + + self.mainnet.reward_beneficiary(evm, frame_result)?; + let basefee = evm.ctx().block().basefee() as u128; + + // If the transaction is not a deposit transaction, fees are paid out + // to both the Base Fee Vault as well as the L1 Fee Vault. + let ctx = evm.ctx(); + let enveloped = ctx.tx().enveloped_tx().cloned(); + let spec = ctx.cfg().spec(); + let l1_block_info = &mut ctx.chain_mut(); + + let Some(enveloped_tx) = &enveloped else { + return Err(ERROR::from_string( + "[OPTIMISM] Failed to load enveloped transaction.".into(), + )); + }; + + let l1_cost = l1_block_info.calculate_tx_l1_cost(enveloped_tx, spec); + let operator_fee_cost = if spec.is_enabled_in(OpSpecId::ISTHMUS) { + l1_block_info.operator_fee_charge( + enveloped_tx, + U256::from(frame_result.gas().used()), + spec, + ) + } else { + U256::ZERO + }; + // Send the base fee of the transaction to the FeeHandler. + let fee_handler = get_addresses(ctx.cfg().chain_id()).fee_handler; + let base_fee_amount = U256::from(basefee.saturating_mul(frame_result.gas().used() as u128)); + + // Send fees to their respective recipients + for (recipient, amount) in [ + (L1_FEE_RECIPIENT, l1_cost), + (fee_handler, base_fee_amount), + (OPERATOR_FEE_RECIPIENT, operator_fee_cost), + ] { + ctx.journal_mut().balance_incr(recipient, amount)?; } + Ok(()) } @@ -911,10 +862,12 @@ mod tests { }, ); - let mut l1_block_info = L1BlockInfo::default(); - l1_block_info.l1_base_fee = U256::from(1_000); - l1_block_info.l1_fee_overhead = Some(U256::from(1_000)); - l1_block_info.l1_base_fee_scalar = U256::from(1_000); + let l1_block_info = L1BlockInfo { + l1_base_fee: U256::from(1_000), + l1_fee_overhead: Some(U256::from(1_000)), + l1_base_fee_scalar: U256::from(1_000), + ..Default::default() + }; let mut ctx = Context::celo() .with_db(db) @@ -952,10 +905,12 @@ mod tests { }, ); - let mut l1_block_info = L1BlockInfo::default(); - l1_block_info.l1_base_fee = U256::from(1_000); - l1_block_info.l1_fee_overhead = Some(U256::from(1_000)); - l1_block_info.l1_base_fee_scalar = U256::from(1_000); + let l1_block_info = L1BlockInfo { + l1_base_fee: U256::from(1_000), + l1_fee_overhead: Some(U256::from(1_000)), + l1_base_fee_scalar: U256::from(1_000), + ..Default::default() + }; let ctx = Context::celo() .with_db(db) @@ -995,10 +950,13 @@ mod tests { }, ); - let mut l1_block_info = L1BlockInfo::default(); - l1_block_info.l1_base_fee = U256::from(1_000); - l1_block_info.l1_fee_overhead = Some(U256::from(1_000)); - l1_block_info.l1_base_fee_scalar = U256::from(1_000); + let l1_block_info = L1BlockInfo { + l1_base_fee: U256::from(1_000), + l1_fee_overhead: Some(U256::from(1_000)), + l1_base_fee_scalar: U256::from(1_000), + l2_block: Some(U256::from(0)), + ..Default::default() + }; let ctx = Context::celo() .with_db(db) @@ -1022,11 +980,11 @@ mod tests { // Check the account balance is updated. let account = evm.ctx().journal_mut().load_account(caller).unwrap(); - assert_eq!(account.data.info.balance, U256::from(1)); + assert_eq!(account.info.balance, U256::from(1)); } #[test] - fn test_remove_operator_cost() { + fn test_remove_operator_cost_isthmus() { let caller = Address::ZERO; let mut db = InMemoryDB::default(); db.insert_account_info( @@ -1037,9 +995,12 @@ mod tests { }, ); - let mut l1_block_info = L1BlockInfo::default(); - l1_block_info.operator_fee_scalar = Some(U256::from(10_000_000)); - l1_block_info.operator_fee_constant = Some(U256::from(50)); + let l1_block_info = L1BlockInfo { + operator_fee_scalar: Some(U256::from(10_000_000)), + operator_fee_constant: Some(U256::from(50)), + l2_block: Some(U256::from(0)), + ..Default::default() + }; let ctx = Context::celo() .with_db(db) @@ -1055,7 +1016,7 @@ mod tests { let handler = CeloHandler::<_, EVMError<_, OpTransactionError>, EthFrame>::new(); - // operator fee cost is operator_fee_scalar * gas_limit / 1e6 + operator_fee_constant + // Under Isthmus the operator fee cost is operator_fee_scalar * gas_limit / 1e6 + operator_fee_constant // 10_000_000 * 10 / 1_000_000 + 50 = 150 handler .validate_against_state_and_deduct_caller(&mut evm) @@ -1063,7 +1024,50 @@ mod tests { // Check the account balance is updated. let account = evm.ctx().journal_mut().load_account(caller).unwrap(); - assert_eq!(account.data.info.balance, U256::from(1)); + assert_eq!(account.info.balance, U256::from(1)); + } + + #[test] + fn test_remove_operator_cost_jovian() { + let caller = Address::ZERO; + let mut db = InMemoryDB::default(); + db.insert_account_info( + caller, + AccountInfo { + balance: U256::from(2_051), + ..Default::default() + }, + ); + + let l1_block_info = L1BlockInfo { + operator_fee_scalar: Some(U256::from(2)), + operator_fee_constant: Some(U256::from(50)), + l2_block: Some(U256::from(0)), + ..Default::default() + }; + + let ctx = Context::celo() + .with_db(db) + .with_chain(l1_block_info) + .modify_cfg_chained(|cfg| cfg.spec = OpSpecId::JOVIAN) + .modify_tx_chained(|celo_tx| { + let tx = &mut celo_tx.op_tx; + tx.base.gas_limit = 10; + tx.enveloped_tx = Some(bytes!("FACADE")); + }); + + let mut evm = ctx.build_celo(); + let handler = + CeloHandler::<_, EVMError<_, OpTransactionError>, EthFrame>::new(); + + // Under Jovian the operator fee cost is operator_fee_scalar * gas_limit * 100 + operator_fee_constant + // 2 * 10 * 100 + 50 = 2_050 + handler + .validate_against_state_and_deduct_caller(&mut evm) + .unwrap(); + + let account = evm.ctx().journal_mut().load_account(caller).unwrap(); + assert_eq!(account.info.balance, U256::from(1)); } #[test] @@ -1078,10 +1082,13 @@ mod tests { }, ); - let mut l1_block_info = L1BlockInfo::default(); - l1_block_info.l1_base_fee = U256::from(1_000); - l1_block_info.l1_fee_overhead = Some(U256::from(1_000)); - l1_block_info.l1_base_fee_scalar = U256::from(1_000); + let l1_block_info = L1BlockInfo { + l1_base_fee: U256::from(1_000), + l1_fee_overhead: Some(U256::from(1_000)), + l1_base_fee_scalar: U256::from(1_000), + l2_block: Some(U256::from(0)), + ..Default::default() + }; let ctx = Context::celo() .with_db(db) diff --git a/crates/celo-revm/src/precompiles.rs b/crates/celo-revm/src/precompiles.rs index 88a58536..abd31504 100644 --- a/crates/celo-revm/src/precompiles.rs +++ b/crates/celo-revm/src/precompiles.rs @@ -8,7 +8,7 @@ use revm::{ context::Cfg, context_interface::ContextTr, handler::PrecompileProvider, - interpreter::{InputsImpl, InterpreterResult}, + interpreter::{CallInputs, InterpreterResult}, primitives::Address, }; use std::{boxed::Box, string::String}; @@ -44,16 +44,12 @@ where fn run( &mut self, context: &mut CTX, - address: &Address, - inputs: &InputsImpl, - is_static: bool, - gas_limit: u64, + inputs: &CallInputs, ) -> Result, String> { - if *address == TRANSFER_ADDRESS { - transfer_run(context, inputs, is_static, gas_limit) + if inputs.target_address == TRANSFER_ADDRESS { + transfer_run(context, inputs) } else { - self.op_precompiles - .run(context, address, inputs, is_static, gas_limit) + self.op_precompiles.run(context, inputs) } } @@ -94,7 +90,7 @@ mod tests { Context, ExecuteEvm, context::{JournalTr, TxEnv, result::ExecutionResult}, database::{EmptyDB, in_memory_db::InMemoryDB}, - interpreter::{CallInput, InstructionResult}, + interpreter::{CallInput, CallScheme, CallValue, InstructionResult}, primitives::Bytes, state::{AccountInfo, Bytecode}, }; @@ -130,13 +126,18 @@ mod tests { input_vec[95] = value; let input = Bytes::from(input_vec); - let inputs = InputsImpl { + let inputs = CallInputs { target_address: TRANSFER_ADDRESS, - bytecode_address: None, + bytecode_address: TRANSFER_ADDRESS, // Mainnet address for the CELO token - caller_address: address!("0x471EcE3750Da237f93B8E339c536989b8978a438"), + caller: address!("0x471EcE3750Da237f93B8E339c536989b8978a438"), input: CallInput::Bytes(input), - call_value: U256::from(value), + value: CallValue::Transfer(U256::from(value)), + return_memory_offset: 0..0, + gas_limit: TRANSFER_GAS_COST, + known_bytecode: None, + scheme: CallScheme::Call, + is_static: false, }; let initial_balance = 100; @@ -157,13 +158,7 @@ mod tests { .modify_cfg_chained(|cfg| cfg.chain_id = CELO_MAINNET_CHAIN_ID) .with_db(db); - let res = precompiles.run( - &mut ctx, - &TRANSFER_ADDRESS, - &inputs, - false, - TRANSFER_GAS_COST, - ); + let res = precompiles.run(&mut ctx, &inputs); assert!(res.is_ok()); let state = ctx.journal_mut().finalize(); @@ -176,13 +171,11 @@ mod tests { assert_eq!(to_account.info.balance, U256::from(value)); // Test calling with too little gas - let res = precompiles.run( - &mut ctx, - &TRANSFER_ADDRESS, - &inputs, - false, - TRANSFER_GAS_COST - 1_000, - ); + let low_gas_inputs = CallInputs { + gas_limit: TRANSFER_GAS_COST - 1000, + ..inputs.clone() + }; + let res = precompiles.run(&mut ctx, &low_gas_inputs); assert!(matches!( res, Ok(Some(InterpreterResult { @@ -193,17 +186,11 @@ mod tests { // Test calling with too short input let short_input = CallInput::Bytes(Bytes::from(vec![0; 63])); - let bad_input = InputsImpl { + let bad_input = CallInputs { input: short_input, - ..inputs + ..inputs.clone() }; - let res = precompiles.run( - &mut ctx, - &TRANSFER_ADDRESS, - &bad_input, - false, - TRANSFER_GAS_COST, - ); + let res = precompiles.run(&mut ctx, &bad_input); assert!(matches!( res, Ok(Some(InterpreterResult { @@ -213,17 +200,11 @@ mod tests { )); // Test calling from the wrong address - let wrong_inputs = InputsImpl { - caller_address: Address::with_last_byte(3), + let wrong_inputs = CallInputs { + caller: Address::with_last_byte(3), ..inputs.clone() }; - let res = precompiles.run( - &mut ctx, - &TRANSFER_ADDRESS, - &wrong_inputs, - false, - TRANSFER_GAS_COST, - ); + let res = precompiles.run(&mut ctx, &wrong_inputs); assert!(matches!( res, Ok(Some(InterpreterResult { @@ -238,14 +219,11 @@ mod tests { input_vec[63] = 2; input_vec[95] = initial_balance + 10; let input = CallInput::Bytes(Bytes::from(input_vec)); - let big_value_input = InputsImpl { input, ..inputs }; - let res = precompiles.run( - &mut ctx, - &TRANSFER_ADDRESS, - &big_value_input, - false, - TRANSFER_GAS_COST, - ); + let big_value_input = CallInputs { + input, + ..inputs.clone() + }; + let res = precompiles.run(&mut ctx, &big_value_input); assert!(matches!( res, Ok(Some(InterpreterResult { @@ -255,13 +233,11 @@ mod tests { )); // Test calling in static context (STATICCALL) - let res = precompiles.run( - &mut ctx, - &TRANSFER_ADDRESS, - &inputs, - true, - TRANSFER_GAS_COST, - ); + let static_inputs = CallInputs { + is_static: true, + ..inputs.clone() + }; + let res = precompiles.run(&mut ctx, &static_inputs); assert!(matches!( res, Ok(Some(InterpreterResult { diff --git a/crates/celo-revm/src/precompiles/transfer.rs b/crates/celo-revm/src/precompiles/transfer.rs index d71794d0..dde7780a 100644 --- a/crates/celo-revm/src/precompiles/transfer.rs +++ b/crates/celo-revm/src/precompiles/transfer.rs @@ -5,9 +5,10 @@ use crate::constants; use op_revm::OpSpecId; use revm::{ context::{Cfg, ContextTr, JournalTr}, - interpreter::{Gas, InputsImpl, InstructionResult, InterpreterResult}, + interpreter::{CallInputs, Gas, InstructionResult, InterpreterResult}, precompile::{PrecompileError, PrecompileOutput, PrecompileResult, u64_to_address}, primitives::{Address, Bytes, U256}, + state::Account, }; use std::{ format, @@ -23,16 +24,14 @@ pub const TRANSFER_GAS_COST: u64 = 9_000; /// Run `transfer` precompile. pub fn transfer_run( context: &mut CTX, - inputs: &InputsImpl, - is_static: bool, - gas_limit: u64, + inputs: &CallInputs, ) -> Result, String> where CTX: ContextTr>, { let mut result = InterpreterResult { result: InstructionResult::Return, - gas: Gas::new(gas_limit), + gas: Gas::new(inputs.gas_limit), output: Bytes::new(), }; @@ -40,9 +39,9 @@ where match run( context, &input_bytes, - inputs.caller_address, - is_static, - gas_limit, + inputs.caller, + inputs.is_static, + inputs.gas_limit, ) { Ok(output) => { let underflow = result.gas.record_cost(output.gas_used); @@ -135,7 +134,20 @@ fn revert_account_cold_status(context: &mut CTX, address: Address, was_cold where CTX: ContextTr>, { - if was_cold && let Ok(mut account) = context.journal_mut().load_account(address) { - account.mark_cold(); + if was_cold { + if let Ok(journaled_account) = context.journal_mut().load_account_mut(address) { + // SAFETY: JournaledAccount implements Deref and internally holds + // &'a mut Account. We have exclusive mutable access to the journal through context, + // so casting the dereferenced immutable reference back to mutable is sound. + // + // This is a temporary workaround to access Account::mark_cold() until the + // JournaledAccount::mark_cold() method is added to upstream REVM or Celo has removed + // the requirement to not warm accounts in the Celo transfer precompile. + let account_ref: &Account = &journaled_account; + let account_ptr = account_ref as *const Account as *mut Account; + unsafe { + (*account_ptr).mark_cold(); + } + } } } diff --git a/crates/celo-revm/src/transaction/abstraction.rs b/crates/celo-revm/src/transaction/abstraction.rs index 1e37e2e6..2f5ce5a5 100644 --- a/crates/celo-revm/src/transaction/abstraction.rs +++ b/crates/celo-revm/src/transaction/abstraction.rs @@ -189,6 +189,13 @@ impl CeloTxTr for CeloTransaction { } } +#[cfg(feature = "alloy-op-evm")] +impl alloy_op_evm::block::OpTxEnv for CeloTransaction { + fn encoded_bytes(&self) -> Option<&Bytes> { + self.enveloped_tx() + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/crates/kona/executor/testdata/mainnet-failed_uncategorized_1-block-49847887.tar.gz b/crates/kona/executor/testdata/mainnet-failed_uncategorized_1-block-49847887.tar.gz new file mode 100644 index 00000000..c8a74657 Binary files /dev/null and b/crates/kona/executor/testdata/mainnet-failed_uncategorized_1-block-49847887.tar.gz differ diff --git a/crates/kona/executor/testdata/sepolia-revert_deposit-tx_block-9558619.tar.gz b/crates/kona/executor/testdata/sepolia-revert_deposit-tx_block-9558619.tar.gz new file mode 100644 index 00000000..2cf97ff4 Binary files /dev/null and b/crates/kona/executor/testdata/sepolia-revert_deposit-tx_block-9558619.tar.gz differ diff --git a/crates/kona/executor/testdata/testListREADME.md b/crates/kona/executor/testdata/testListREADME.md index a6d903d2..61a9d96b 100644 --- a/crates/kona/executor/testdata/testListREADME.md +++ b/crates/kona/executor/testdata/testListREADME.md @@ -34,10 +34,16 @@ * Explorer: https://celo.blockscout.com/block/31071493 ## L1 to L2 bridge transaction -* Testcase: Block with deposit tx -* Network: Celo Sepolia -* File: sepolia-l1-to-l2-bridge-tx_block-1022860.tar.gz -* Explorer: https://celo-sepolia.blockscout.com/block/1022860 +- Successful deposit + * Testcase: Block with deposit tx + * Network: Celo Sepolia + * File: sepolia-l1-to-l2-bridge-tx_block-1022860.tar.gz + * Explorer: https://celo-sepolia.blockscout.com/block/1022860 +- Revert deposit + * Testcase: Block with a reverted deposit + * Network: Celo Sepolia + * File: sepolia-revert_deposit-tx_block-9558619.tar.gz + * Explorer: https://celo-sepolia.blockscout.com/block/9558619 ## FeeCurrencyContext maintained for the whole block * Testcase: Block with cip64 txs paid in erc20 + rate change of that erc20 + more cip64 txs paid in the same erc20 @@ -74,3 +80,10 @@ * Network: Celo Mainnet * File: mainnet-missing_rate_from_whitelisted_currency-block-47668860.tar.gz * Explorer: https://celo.blockscout.com/block/47668860 + +## Uncategorized Blocks that failed (scenarios to be defined) +- Failed for 1.0.0-rc4, fixed after 1.0.0-rc5 + * Testcase: - + * Network: Celo Mainnet + * File: mainnet-failed_uncategorized_1-block-49847887.tar.gz + * Explorer: https://celo.blockscout.com/block/49847887 \ No newline at end of file diff --git a/deny.toml b/deny.toml index 07da7559..95a28ae5 100644 --- a/deny.toml +++ b/deny.toml @@ -67,7 +67,8 @@ allow-git = [ "https://github.com/Layr-Labs/hokulea", "https://github.com/Layr-Labs/rust-kzg-bn254", "https://github.com/op-rs/kona", - "https://github.com/celo-org/kona" + "https://github.com/celo-org/kona", + "https://github.com/celo-org/revm" ] [sources.allow-org]